Obsah přednášky Mgr. Květuše Sýkorová Optimalizace Lineární programování Distribuční úlohy Okružní problém KI Př UJEP Ústí nad Labem Nederivační metody Metody 1D optimalizace Derivační metody Optimalizace s omezeními Metody lineární optimalizace Grafická metoda Přímá metoda Simplexová metoda Distribuční úlohy Dopravní problém Okružní problém Přiřazovací problém Obecný distribuční problém 2 Lineární optimalizace DÚ LP Okružní problém Distribuční úlohy LP: Dopravní problém: Okružní problém: označované také jako problém obchodního cestujícího nebo problém listonoše iterační metoda vhodná programová implementace Ekonomická interpretace: Je potřeba naplánovat trasu, která prochází několika místy. Každým místem je potřeba projít právě jednou. Je potřeba optimalizovat tuto trasu. Přiřazovací problém Obecný distribuční problém příklad: Turista vyjíždí z Prahy a chce postupně navštívit všechna města v tabulce a nakonec se vrátit zpět do Prahy. Naplánujte trasu tak, aby ujel co nejméně kilometrů. Vzdálenosti mezi městy jsou dány v následující tabulce: 3 4 DÚ LP Okružní problém DÚ LP Okružní problém kategorie: okružní problém Problém obchodního cestujícího (Travelling Salesman Problem) rozvozní problém (Vehicle Routing Problem) statické úlohy všechna místa a zákazníci jsou předem známá dynamické úlohy v průběhu realizace úlohy přicházejí další požadavky jednookruhový problém nalezení nejkratší cesty, která obsahuje všechna místa víceokruhový problém z jednoho výchozího místa vytváříme více okruhů z několika výchozích míst vytváříme více samostatných okruhů 5 zadání: dáno n míst všechna místa je potřeba projet právě jednou a vrátit se do výchozího místa tabulkou dáno ohodnocení spojení vzdálenost, náklady na přepravu, čas dodatečné podmínky každé místo má jistý požadavek na kapacitu okruhu dána celková kapacita okruhu pokud celková kapacita požadavků jednotlivých míst > celková kapacita okruhu nutné mít více okruhů obecný algoritmus pro nalezení optima neexistuje NP úplná úloha s rostoucím n roste exponenciálně složitost (počet omezujících podmínek) existuje řada aproximačních metod jejich řešení lze považovat za optimální 6 1
DÚ LP Okružní problém DÚ LP Okružní problém obecná formulace DÚ LP: Hledáme minimum (x): c = cenové koeficienty (ocenění) x = objem přepravy (proměnná) za omezujících podmínek g i (x): kapacitní (řádkové) místo projedu jen jednou požadavkové (sloupcové) místo projedu jen jednou m xij = 1 ( i = 1,..., m) j= 1 m min m xij = 1 ( j = 1,..., m) a podmínek nezápornosti: x11, K, x mm plynou z ekonomické interpretace ÚLP i= 1 m i= 1 j= 1 x ij c ij x ij + další podmínky = 1 7 řešení: vycházíme z teorie grafů přidáváme postupně do grafu místa (vrcholy) a hrany tak, aby nevytvořili kružnici kružnici vytvoříme až přidáním posledního místa (vrcholu) a hrany hrany volíme podle ohodnocení z tabulky výhodné ohodnocení jedné trasy však může přinést nevýhodné ohodnocení v následujících krocích existuje několik metod řešení: Metoda nejbližšího souseda Vogelova aproximační metoda 8 DÚ LP Okružní problém DÚ LP Okružní problém algoritmus (VAM): 1. výpočet diferencí ze zadání príkladu 2. výběr nejkratší trasy v řadě s největší diferencí 3. vyřazení trasy, která předčasně uzavírá okruh pokud nemáme v okruhu všechna místa opakujeme krok 1.3., dokud nemáme v okruhu všechna místa optimální řešení: nalezen okruh procházející všemi místy spočteme účelovou funkci 9 1 DÚ LP Okružní problém DÚ LP Okružní problém spočteme diference zajímá nás největší diference 11 12 2
DÚ LP Okružní problém DÚ LP Okružní problém zvolíme místo s nejkratší trasou vyškrtneme v daném řádku a sloupci všechny trasy 13 14 DÚ LP Okružní problém DÚ LP Okružní problém vyškrtneme i předčasně uzavírající trasu 16 DÚ LP Okružní problém DÚ LP Okružní problém spočteme diference zajímá nás největší diference 51 17 44 3
DÚ LP Okružní problém DÚ LP Okružní problém zvolíme místo s nejkratší trasou vyškrtneme v daném řádku a sloupci všechny trasy 51 51 44 19 44 2 DÚ LP Okružní problém DÚ LP Okružní problém vyškrtneme i předčasně uzavírající trasu 51 44 21 22 DÚ LP Okružní problém DÚ LP Okružní problém spočteme diference zajímá nás největší diference 52 41 23 24 4
DÚ LP Okružní problém DÚ LP Okružní problém zvolíme místo s nejkratší trasou vyškrtneme v daném řádku a sloupci všechny trasy 52 52 41 41 25 26 DÚ LP Okružní problém DÚ LP Okružní problém vyškrtneme i předčasně uzavírající trasu 52 41 27 DÚ LP Okružní problém DÚ LP Okružní problém spočteme diference zajímá nás největší diference 59 26 3 5
DÚ LP Okružní problém DÚ LP Okružní problém zvolíme místo s nejkratší trasou vyškrtneme v daném řádku a sloupci všechny trasy 59 59 26 26 31 32 DÚ LP Okružní problém DÚ LP Okružní problém vyškrtneme i předčasně uzavírající trasu 59 26 DÚ LP Okružní problém DÚ LP Okružní problém spočteme diference zajímá nás největší diference 35 36 6
DÚ LP Okružní problém DÚ LP Okružní problém doplníme poslední trasy a uzavřeme okruh konečný výsledek 37 x = + + + + + = ( ) 544 38 DÚ LP Okružní problém DÚ LP Okružní problém konečný výsledek konečný výsledek ( x) = + + + + + = 544 39 ( x) = + + + + + = 544 4 DÚ LP Okružní problém DÚ LP Okružní problém algoritmus (Metoda nejbližšího souseda): 1. zvolíme výchozí místo postupně volíme všechna místa ze zadání príkladu 2. výběr nejbližšího sousedního místa cílové místo (soused) s nejkratší trasou 3. vyřazení trasy, která předčasně uzavírá okruh pokud nemáme v okruhu všechna místa opakujeme krok 2.3., dokud nemáme v okruhu všechna místa optimální řešení: spočteme účelovou funkci pro všechny možné druhy okruhů vybereme nejlepší okruh 41 7
DÚ LP Okružní problém DÚ LP Okružní problém 1. 1. 43 44 DÚ LP Okružní problém DÚ LP Okružní problém 1. 1. 45 46 DÚ LP Okružní problém DÚ LP Okružní problém 1. 1. 47 ( x) = + + + + + = 531 48 8
DÚ LP Okružní problém DÚ LP Okružní problém 2. 3. ( x) = + + + + + = 531 49 ( x) = + + + + + = 625 5 DÚ LP Okružní problém DÚ LP Okružní problém 4. 5. ( x) = + + + + + = 544 51 ( x) = + + + + + = 531 52 DÚ LP Okružní problém DÚ LP Okružní problém 6. 1. ( x) = + + + + + = 531 2. ( x) = + + + + + = 531 3. ( x) = + + + + + = 625 4. ( x) = + + + + + = 544 5. ( x) = + + + + + = 531 6. x = + + + + + = ( ) 544 ( x) = + + + + + = 544 53 54 9
DÚ LP Okružní problém DÚ LP Okružní problém nejkratší okruh nejkratší okruh x = + + + + + = ( ) 531 55 ( x) = + + + + + = 544 56 DÚ LP Okružní problém DÚ LP Okružní problém příklad 1: Turista podniká okružní trasu po Itálii. Vyjíždí z Catanzara a chce postupně navštívit všechna města uvedená v tabulce. Naplánujte trasu tak, aby ujel co nejméně kilometrů. 3 body Vzdálenosti míst jsou uvedeny v následující tabulce: Catanzaro Cosenza Crotone Reggio Scalea Tropea Catanzaro Cosenza Crotone Reggio Scalea Tropea 97 8 2 97 116 7 95 124 116 221 22 7 8 7 221 2 14 2 95 22 2 178 124 7 14 178 57 příklad 2: Pražská firma XY se zabývá výrobou kojeneckého oblečení. Toto zboží pak dále rozváží do 5 obchodů ve městech: Kladno, Brno, Poděbrady, Tábor, Liberec. Naplánujte nejkratší cestu mezi obchody (vzdálenosti v tabulce) 3 body Kladno Brno Poděbrady Tábor Liberec Kladno Brno Poděbrady Tábor Liberec 32 24 53 82 32 236 87 112 24 236 2 167 241 53 87 2 138 84 82 112 167 138 9 241 84 9 58 DÚ LP Okružní problém DÚ LP Okružní problém příklad 3: Je dána tabulka vzdáleností mezi osmi městy. Najděte nejkratší okruh obsahující všechna města: příklad 4: irma sídlící v Brně má pobočky v 7 jiných městech (km v tabulce). Zaměstnanec má navštívit všechny pobočky: 3 body A A B 81 C 99 D E 71 66 G 93 H 3 body Brno Brno Jih. 85 Viz. 13 Olo. 74 Str. Svi. 65 Zlín 91 Zno. 63 B 81 5 8 7 98 179 7 Jihlava 85 168 147 132 9 C 99 5 81 48 9 8 Vizovice 13 168 83 47 139 24 D 8 81 9 73 58 137 Olomouc 74 147 83 91 7 45 E 71 7 48 9 1 47 11 Strážnice 132 47 91 131 37 66 98 9 73 1 131 Svitavy 65 139 7 131 124 1 G 93 179 58 47 7 Zlín 91 9 24 45 37 124 1 H 7 8 137 11 131 7 59 Znojmo 63 1 1 1