HEURISTICKÉ ALGORITMY PRO ŘEŠENÍ ÚLOH OBCHODNÍHO CESTUJÍCÍHO

Podobné dokumenty
4EK311 Operační výzkum. 5. Teorie grafů

Optimalizace. Obsah přednášky. DÚ LP - Okružní problém. Lineární optimalizace. DÚ LP - Okružní problém. DÚ LP - Okružní problém

CLARKEOVA-WRIGHTOVA METODA ŘEŠENÍ ÚLOHY VRP

Obsah prezentace. Základní pojmy v teorii o grafech Úlohy a prohledávání grafů Hledání nejkratších cest

Přiřazovací problém. Přednáška č. 7

Algoritmizace prostorových úloh

Kostry. 9. týden. Grafy. Marie Demlová (úpravy Matěj Dostál) 16. dubna 2019

OKRUŽNÍ A ROZVOZNÍ ÚLOHY: OBCHODNÍ CESTUJÍCÍ. FORMULACE PŘI RESPEKTOVÁNÍ ČASOVÝCH OKEN

Operační výzkum. Přiřazovací problém.

Algoritmus pro hledání nejkratší cesty orientovaným grafem

Základy informatiky. Teorie grafů. Zpracoval: Pavel Děrgel Úprava: Daniela Szturcová

Jiří Neubauer. Katedra ekonometrie FEM UO Brno

VYSOKÁ ŠKOLA EKONOMICKÁ V PRAZE. Optimalizace trasy při revizích elektrospotřebičů

6 Ordinální informace o kritériích

Diskrétní matematika. DiM /01, zimní semestr 2016/2017

Metody síťové analýzy

fakulty MENDELU v Brně (LDF) s ohledem na disciplíny společného základu (reg. č. CZ.1.07/2.2.00/28.

Modely teorie grafů, min.kostra, max.tok, CPM, MPM, PERT

Drsná matematika III 10. demonstrovaná cvičení Kostry grafů

LDF MENDELU. Simona Fišnarová (MENDELU) Základy lineárního programování VMAT, IMT 1 / 25

4EK213 Lineární modely. 10. Celočíselné programování

Základy informatiky. 07 Teorie grafů. Kačmařík/Szturcová/Děrgel/Rapant

Grafové algoritmy. Programovací techniky

Parametrické programování

ÚLOHA ČÍNSKÉHO LISTONOŠE, MATEMATICKÉ MODELY PRO ORIENTOVANÝ A NEORIENTOVANÝ GRAF

Problém obchodního cestujícího(tsp) Vstup: Množina n měst a vzdálenosti mezi nimi. Výstup: Nejkratší okružní cesta procházející všemi městy.

3.10 Rezoluční metoda ve výrokové logice

TEORIE GRAFŮ TEORIE GRAFŮ 1

7. přednáška Systémová analýza a modelování. Přiřazovací problém

STROMOVE ALGORITMY Prohledavani do sirky (level-order) Po vodorovnejch carach fronta

Teorie grafů. zadání úloh. letní semestr 2008/2009. Poslední aktualizace: 19. května First Prev Next Last Go Back Full Screen Close Quit

Grafové algoritmy. Programovací techniky

4EK213 Lineární modely. 12. Dopravní problém výchozí řešení

TGH05 - aplikace DFS, průchod do šířky

Hledáme efektivní řešení úloh na grafu

ČESKÁ ZEMĚDĚLSKÁ UNIVERZITA V PRAZE. Teze diplomové práce

Hledání optimální cesty v dopravní síti

3. Optimalizace pomocí nástroje Řešitel

Teorie grafů. Kostra grafu. Obsah. Radim Farana Podklady pro výuku pro akademický rok 2013/2014

5 Informace o aspiračních úrovních kritérií

5 Orientované grafy, Toky v sítích

Algoritmy na ohodnoceném grafu

Paralelní grafové algoritmy

TGH09 - Barvení grafů

Generující kořeny cyklických kódů. Generující kořeny. Alena Gollová, TIK Generující kořeny 1/30

TGH05 - aplikace DFS, průchod do šířky

Dynamické programování

Vzdálenost uzlů v neorientovaném grafu

PROBLÉM ČTYŘ BAREV. Lze obarvit jakoukoliv mapu v rovině čtyřmi barvami tak, aby žádné dvě sousedící oblasti neměly stejnou barvu?

BCH kódy. Alena Gollová, TIK BCH kódy 1/27

4EK213 LINEÁRNÍ MODELY

Informatika navazující magisterské studium Přijímací zkouška z informatiky 2018 varianta A

12. Lineární programování

1 Extrémy funkcí - slovní úlohy

2 Spojité modely rozhodování

07 Základní pojmy teorie grafů

zejména Dijkstrův algoritmus pro hledání minimální cesty a hladový algoritmus pro hledání minimální kostry.

Teoretická informatika Tomáš Foltýnek Barvení grafů Platónská tělesa

Lineární algebra - I. část (vektory, matice a jejich využití)

Determinant matice řádu 5 budeme počítat opakovaným použitím rozvoje determinantu podle vybraného řádku nebo sloupce. Aby byl náš výpočet

TOKY V SÍTÍCH II. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

IB112 Základy matematiky

příkladů do cvičení. V textu se objeví i pár detailů, které jsem nestihl (na které jsem zapomněl) a(b u) = (ab) u, u + ( u) = 0 = ( u) + u.

Přílohy. Příloha 1. Obr. P1.1 Zadání úlohy v MS Excel

4 Kriteriální matice a hodnocení variant

Dijkstrův algoritmus

Diskrétní matematika. DiM /01, zimní semestr 2018/2019

Hlavolamy a teorie grafů

Metody lineární optimalizace Simplexová metoda. Distribuční úlohy

TGH12 - Problém za milion dolarů

7 Kardinální informace o kritériích (část 1)

Binární vyhledávací stromy II

Zajímavé aplikace teorie grafů

Obr. P1.1 Zadání úlohy v MS Excel

Vrcholová barevnost grafu

3. Grafy a matice. Definice 3.2. Čtvercová matice A se nazývá rozložitelná, lze-li ji napsat ve tvaru A =

Ekonomická formulace. Matematický model

1. července 2010

Jan Březina. 7. března 2017

Rozdělování dat do trénovacích a testovacích množin

Úvod do teorie grafů

Grafy. RNDr. Petra Surynková, Ph.D. Univerzita Karlova v Praze Matematicko-fyzikální fakulta.

Geometrické vyhledávání

Stromové rozklady. Definice 1. Stromový rozklad grafu G je dvojice (T, β) taková, že T je strom,

Největší společný dělitel

Soustavy lineárních rovnic

Vektorové podprostory, lineární nezávislost, báze, dimenze a souřadnice

8 Přednáška z

Matematika (CŽV Kadaň) aneb Úvod do lineární algebry Matice a soustavy rovnic

8 Kořeny cyklických kódů, BCH-kódy

Graf. Uzly Lokality, servery Osoby fyzické i právní Informatické objekty... atd. Hrany Cesty, propojení Vztahy Informatické závislosti... atd.


STROMY. v 7 v 8. v 5. v 2. v 3. Základní pojmy. Řešené příklady 1. příklad. Stromy

12. Aproximační algoritmy

5. Lokální, vázané a globální extrémy

Jan Březina. Technical University of Liberec. 30. dubna 2013

CVIČNÝ TEST 15. OBSAH I. Cvičný test 2. Mgr. Tomáš Kotler. II. Autorské řešení 6 III. Klíč 15 IV. Záznamový list 17

H {{u, v} : u,v U u v }

Maturitní téma: Programovací jazyk JAVA

Výroková logika II. Negace. Již víme, že negace je změna pravdivostní hodnoty výroku (0 1; 1 0).

Transkript:

HEURISTICKÉ ALGORITMY PRO ŘEŠENÍ ÚLOH OBCHODNÍHO CESTUJÍCÍHO Heuristické algoritmy jsou speciálními algoritmy, které byly vyvinuty pro obtížné úlohy, jejichž řešení je obtížné získat v rozumném čase. Mezi takovéto obtížné úlohy, pro něž neexistuje polynomiální algoritmus, patří úloha obchodního cestujícího. Pro zopakování: v úloze obchodního cestujícího máme zadáno výchozí místo a uzly 2,3 n představující zákazníky, které musíme navštívit. Vzdálenost mezi uzly i a j značíme c ij. Matici vzdáleností C získáme tak, že určíme nejkratší možnou cestu mezi každou dvojicí uzlů, a to ať už jsou přímo spojeny hranou, nebo ne (v tom případě musíme zkrátka jet přes jiný uzel jako bychom dodefinovali umělou hranu, jejíž délka se rovná nejkratší vzdálenosti mezi těmito uzly). Naším cílem je navštívit všechny zákazníky a vrátit se do výchozího místa tak, aby délka trasy byla minimální. Jinak řečeno, chceme najít Hamiltonův cyklus s minimálním součtem ohodnocení hran. Heuristiky nezajišťují nalezení optimálního řešení, ale umožní najít dostatečně dobré řešení v rozumném čase. Lze je rozdělit na algoritmy, které vytvoří nové řešení (trasa je vytvářena postupně z výchozího uzlu sem patří metoda nejbližšího souseda, metoda vkládací, metoda výhodnostech čísel a metody založené na algoritmu minimální kostry), a na metody, které nalezené řešení zlepšují (sem patří například metoda 2-opt). Ke všem algoritmům potřebujeme matici nejkratších vzdáleností. Nejkratší cestu v grafu lze najít pomocí tzv. Dijkstrova algoritmu. Uvažujme následující graf. V Lingu najdeme nejkratší cestu z uzlu 1 do uzlu 4 takto: model:!hledáme nejkratší cestu mezi uzlem 1 a 4; sets: uzel/1..5/; tok(uzel,uzel):x,c; endsets data:!tam, kde neexistují hrany, dáme 1000; C= 1000 5 4 1000 1000 5 1000 6 15 1000 4 6 1000 12 18 1000 15 12 1000 9 1000 1000 18 9 1000; enddata min = @sum(tok: x*c); @for(uzel(i) i#ne#1#and#i#ne#4: @sum(uzel(j): x(i,j)) = @sum(uzel(k): x(k,i)));!z každého uzlu kromě 1 a 4 musíme tolikrát vyjet, kolikrát do něj přijedeme; @for(uzel(i) i#eq#1: @sum(uzel(j): x(i,j)) = 1); @for(uzel(i) i#eq#1: @sum(uzel(j): x(j,i)) = 0); @for(uzel(i) i#eq#4: @sum(uzel(j): x(i,j)) = 0); @for(uzel(i) i#eq#4: @sum(uzel(j): x(j,i)) = 1);!do prvního uzlu nepřijedeme ani jednou, ale musíme jednou vyjet, u čtvrtého uzlu je to naopak, do ostatních uzlu nemusíme ani prijet ani z nich vyjet; @for(tok: @bin(x)); end

METODA NEJBLIŽŠÍHO SOUSEDA: 1. Vybereme libovolný uzel. 2. Nalezneme nejbližšího souseda k vybranému uzlu. 3. Nalezneme nejbližšího souseda k uzlu z bodu 2 atd., dokud nevznikne Hamiltonův cyklus. Tato metoda je rychlá a jednoduchá, ale nemusí dávat dobré výsledky, i proto, že na konci se musíme vrátit do výchozího uzlu, který může být dost daleko od posledního navštíveného uzlu. Je možné zvolit jako výchozí uzel postupně všechny uzly a vybrat nejlepší řešení. Příklad: máme stejnou úlohu jako dříve. Pomocí metody nebližšího souseda ji řešíme takto. (1) Sestavíme matici nejkratších vzdáleností. (2) Vyjedeme z uzlu 1. První sloupec v matici nejkratších vzdáleností můžeme vyškrtnout, protože do uzlu jedna už nepojedeme, dokud neobjedeme všechny uzly. Nebližším sousedem uzlu 1 je uzel 3, pojedeme tedy tam. (3) Vyškrtneme třetí sloupec, protože z jiného uzlu už znovu do uzlu 3 nepojedeme. Nejbližším potenciálním sousedem, kam můžeme jet z uzlu 3, je uzel 2. Pojedeme tedy do uzlu 2. (4) Vyškrtneme druhý sloupec, protože z jiného uzlu už znovu do uzlu 2 nepojedeme. Nyní jsme tedy v uzlu 2 a nejbližším sousedem, kam můžeme jet, je uzel 4. Pojedeme tedy do uzlu 4. (5) Vyškrtneme čtvrtý sloupec, protože z jiného uzlu už do něj nepojedeme. Z uzlu 4 jedeme do uzlu 5. (6) Uzel 5 je posledním navštíveným uzlem. Z něj se tedy vrátíme do uzlu 1. Celá trasa je tudíž 1 3 2 4 5 1. Celková ujetá vzdálenost je 56. Skutečně optimální řešení je přitom 51. (1) C 1 2 3 4 5 (2) C 1 2 3 4 5 (3) C 1 2 3 4 5 1 0 5 4 16 22 1 0 5 4 16 22 1 0 5 4 16 22 2 5 0 6 15 24 2 5 0 6 15 24 2 5 0 6 15 24 3 4 6 0 12 18 3 4 6 0 12 18 3 4 6 0 12 18 4 16 15 12 0 9 4 16 15 12 0 9 4 16 15 12 0 9 5 22 24 18 9 0 5 22 24 18 9 0 5 22 24 18 9 0 (4) C 1 2 3 4 5 (5) C 1 2 3 4 5 (6) C 1 2 3 4 5 1 0 5 4 16 22 1 0 5 4 16 22 1 0 5 4 16 22 2 5 0 6 15 24 2 5 0 6 15 24 2 5 0 6 15 24 3 4 6 0 12 18 3 4 6 0 12 18 3 4 6 0 12 18 4 16 15 12 0 9 4 16 15 12 0 9 4 16 15 12 0 9 5 22 24 18 9 0 5 22 24 18 9 0 5 22 24 18 9 0

METODA VÝHODNOSTNÍCH ČÍSEL (CLARK, WRIGHT) 1. Sestavíme matici výhodnostních čísel: s ij = (c 1i + c i1 + c 1j + c j1) (c 1i + c ij + c 1j) = c i1 + c 1j c ij, pro i, j = 2, 3,, n, i j. 2. Setřídíme čísla s ij sestupně. 3. Podle setříděných čísel s ij, postupně spojujeme uzly i a j tak, aby vznikl výsledný cyklus (čísla s ij, která by spojením vrcholu i a j vytvořila cyklus, přeskočíme). Výhodnostní čísla říkají, o kolik je výhodnější jet jako na obrázku B oproti způsobu na obrázku A. i i 1 1 j j A B Uvažujme stejný příklad jako výše. (1) Z matice nejkratších vzdáleností sestavíme matici výhodnostních čísel. Například prvek s 23 spočítáme jako s 23 = s 21 + s 13 s 23 = 5 + 9 6 = 3. Hledáme největší výhodnostní číslo, což je s 45 = 29. Pojedeme tedy z uzlu 4 do uzlu 5. (2) Vyškrtneme s 54 (aby nevznikl předčasně cyklus), 4. řádek (do jiného uzlu už ze 4. uzlu nepojedeme) a 5. sloupec (do 5. uzlu už z jiného uzlu nepojedeme). Pak hledáme největší výhodnostní číslo ve čtvrtém sloupci a pátém řádku. Chceme totiž prodloužit dosavadní trasu, takže musíme tedy bud vyjet z 5. uzlu nebo přijet do 4 uzlu. (3) Největší výhodnostní číslo je buď s 53 = 8, nebo s 34 = 8. Lepší bude vybrat s 53, protože po vyškrtnutí 5. řádku a 3. sloupce nám zbude v matici větší použitelné výhodnostní číslo než po vyškrtnutí 3. řádku a 4.sloupce. Dosavadní trasa je tedy 4-5-3. (4) Vyškrtneme 5. řádek, 3. sloupec a s 34, aby nevznikl předčasně cyklus. Hledáme největší výhodnostní číslo ve třetím řádku a čgtvrtém sloupci. (5) Tímto největším výhodnostním číslem s 24. Dosavadní trasa je tedy 2-4-5-3. (6) Trasu získanou v posledním kroku musíme spojit s výchozím bodem. Výsledná trasa bude 1-2- 4-5-3-1 s délkou 51, což je optimální řešení. (1) 1 2 3 4 5 (2) 1 2 3 4 5 (3) 1 2 3 4 5 1 1 1 2 3 6 3 2 3 6 3 2 3 6 3 3 3 8 8 3 3 8 8 3 3 8 8 4 6 8 29 4 6 8 29 4 6 8 29 5 3 8 29 5 3 8 29 5 3 8 29 (4) 1 2 3 4 5 (5) 1 2 3 4 5 (6) C 1 2 3 4 5 1 1 1 0 5 4 16 22 2 3 6 3 2 3 6 3 2 5 0 6 15 24 3 3 8 8 3 3 8 8 3 4 6 0 12 18 4 6 8 29 4 6 8 29 4 16 15 12 0 9 5 3 8 29 5 3 8 29 5 22 24 18 9 0

METODA VKLÁDACÍ 1. Najdeme nejvzdálenější uzel od výchozího místa s, označíme jej s. Vytvoříme uzavřenou cestu 1-s-1. 2. Vložíme do této cesty některý ze zbylých uzlů tak, aby prodloužení bylo minimální. 3. To opakujeme, dokud nenajdeme Hamiltonův cyklus. Uvažujme stejný příklad jako výše. Nejvzdálenějším uzlem od prvního uzlu je uzel 5. Nyní se musíme rozhodnout, který uzel vložit mezi ně. Zjistíme, o kolik by se tím prodloužila trasa. (1,2),(2,5) 5 + 24 22 = 7 (1,3),(3,5) 4 + 18 22 = 0 (1,4),(4,5) 16 + 9 22 = 3 Nejmenší prodloužení je při vložení uzlu 3 mezi uzly 1 a 5. Trasa bude 1-3-5. Dále musíme vložit některý ze zbylých uzlů do stávající trasy. Možnosti jsou následující. (1,2),(2,3) 5 + 6 4 = 7 (1,4),(4,3) 16 + 12 4 = 24 (3,2),(2,5) 6 + 24 18 = 12 (3,4),(4,5) 12 + 9 18 = 3 (5,2),(2,1) 24 + 5 22 = 7 (5,4),(4,1) 9 + 16 22 = 3 Můžeme vložit uzel 4 mezi uzly 5 a 1. Trasa bude 1-3-5-4-1. Možnosti, kam vložit zbylý uzel 2, jsou tyto: (1,2),(2,3) 5 + 6 4 = 7 (3,2),(2,5) 6 + 24 18 = 12 (5,2),(2,4) 24 + 15 9 = 30 (4,2),(2,1) 15 + 5 16 = 4 Vložíme jej mezi uzly 4 a 1. Výsledná trasa bude 1-3-5-4-2-1 s délkou 51. U velkých matic rychle roste počet míst, kam můžeme vložit další uzly. METODA VÝMĚN (LIN. KERNIGHEN, METODA 2X2) Tato metoda zlepšuje již nalezené řešení. 1. Vynecháme dvě hrany, které nemají společný uzel. 2. Vyměníme tyto dvě hrany za jiné dvě tak, aby opět vznikl Hamiltonův cyklus. 3. Pokud takováto výměna přináší úsporu, necháme ji tam. Příklad: zlepšuje tato výměna optimální řešení?

METODA MINIMÁLNÍ KOSTRY 1. Najdeme minimální kostru grafu. 2. Zdvojíme hrany, čímž získáme Eulerův cyklus. 3. Transformujeme Eulerův cyklus na Hamiltonův. Jde o polynomiální algoritmus. Uvažujme stejný příklad jako výše. Najdeme minimální kostru. Tu transformujeme na Eulerův cyklus: 1-2-1-3-4-5-4-3-1. Ten transformujeme na Hamiltonův cyklus tak, že vynecháme uzly, které již byly navštíveny. Výsledná trasa tedy bude 1-2-3-4-5-1. Její délka je 54. CHRISTOFIDOVA METODA Tato metoda je podobná předcházející metodě minimální kostry, od níž se liší ve druhém kroku. 1. Najdeme minimální kostru grafu. 2. Uzly lichého stupně spojíme hranami metodou perfektního párování s minimálními náklady. 3. Získaný Eulerův cyklus transformujeme na Hamiltonův cyklus. Ve druhém kroku se spojují hranou dvojice uzlů lichého stupně. Hledá se optimální párování v rámci jedné množiny, takže se řeší obecný přiřazovací problém. Našli bychom tedy minimální kostru jako na obrázku nahoře nalevo. Uzly lichého stupně jsou uzly 2 a 5. Kdyby jich bylo více, hledáme jejich optimální párování pomocí přiřazovacího problému, takhle je zřejmým řešením párování (2,5). Přidáme do grafu hranu (2,5), čímž vznikne Eulerův cyklus, který se pak transformuje na Hamiltonův (v tomto případě už bude zároveň Hamiltonovým cylkem). Délka trasy je 54.

METODA ZATŘIĎOVÁNÍ 1. Vytvoříme výchozí systém minicyklů. 2. Shlukujeme cykly na základě minimální vzdálenosti, dokud nevznikne Hamiltonův cyklus. D min ( c c c c, ij kl ik jl i, k j, l ) Příklad: máme minicykly alfa a beta. Zkusíme nahradit hrany (i,k) a (j,l) hranami (i,j) a (k,l). Takto zjišťujeme, jak mám sloučit cykly, aby byla vzdálenost co nejmenší. ZDROJE: Ing. J. Fábry, Ph.D.: přednášky 4EK314 Diskrétní modely, 2011. Burdová, J.: Heuristické a metaheuristické metody řešení úlohy obchodního cestujícího. Diplomová práce, VŠE, 2010. Dostupné z http://www.vse.cz/vskp/23543_heuristicke_a%c2%a0metaheuristicke_metody_reseni_ulohy_obcho dniho_cestujiciho