Optimální plánování rozvozu pomocí dopravních prostředků

Podobné dokumenty
Úvod do úloh plánování rozvozu (Vehicle Routing Problems)

1 Úvod do celočíselné lineární optimalizace

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

Učební texty k státní bakalářské zkoušce Matematika Základy lineárního programování. študenti MFF 15. augusta 2008

Algoritmizace prostorových úloh

Maticí typu (m, n), kde m, n jsou přirozená čísla, se rozumí soubor mn veličin a jk zapsaných do m řádků a n sloupců tvaru:

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

13. Lineární programování

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

0.1 Úvod do lineární algebry

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

Greenova funkce pro dvoubodové okrajové úlohy pro obyčejné diferenciální rovnice

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

Vektory a matice. Obsah. Aplikovaná matematika I. Carl Friedrich Gauss. Základní pojmy a operace

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

Třídy složitosti P a NP, NP-úplnost

Lineární programování

Výpočetní složitost algoritmů

Kolik existuje různých stromů na pevně dané n-prvkové množině vrcholů?

3. Třídy P a NP. Model výpočtu: Turingův stroj Rozhodovací problémy: třídy P a NP Optimalizační problémy: třídy PO a NPO MI-PAA

4EK213 LINEÁRNÍ MODELY

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

1 Linearní prostory nad komplexními čísly

(Cramerovo pravidlo, determinanty, inverzní matice)

FIT ČVUT MI-LOM Lineární optimalizace a metody. Dualita. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Problém lineární komplementarity a kvadratické programování

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

10. Soustavy lineárních rovnic, determinanty, Cramerovo pravidlo

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

Necht tedy máme přirozená čísla n, k pod pojmem systém lineárních rovnic rozumíme rovnice ve tvaru

ALGORITMY A DATOVÉ STRUKTURY

Úvod do teorie her

Operační výzkum. Síťová analýza. Metoda CPM.

Složitost 1.1 Opera ní a pam ová složitost 1.2 Opera ní složitost v pr rném, nejhorším a nejlepším p ípad 1.3 Asymptotická složitost

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

DEFINICE Z LINEÁRNÍ ALGEBRY

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

0.1 Úvod do lineární algebry

Grafové algoritmy. Programovací techniky

12. Lineární programování

1 Determinanty a inverzní matice

Riemannův určitý integrál

Dynamické programování

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

MATICE. a 11 a 12 a 1n a 21 a 22 a 2n A = = [a ij]

Zadání a řešení testu z matematiky a zpráva o výsledcích přijímacího řízení do magisterského navazujícího studia od podzimu 2014

Operace s maticemi. 19. února 2018

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

Konstrukce relace. Postupně konstruujeme na množině všech stavů Q relace i,

Množiny, relace, zobrazení

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

3. ANTAGONISTICKÉ HRY

PQ-stromy a rozpoznávání intervalových grafů v lineárním čase

VI. Maticový počet. VI.1. Základní operace s maticemi. Definice. Tabulku

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

1. července 2010

Grafové algoritmy. Programovací techniky

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

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

Aplikovaná numerická matematika - ANM

1 Vektorové prostory.

Báze a dimenze vektorových prostorů

Úlohy nejmenších čtverců

Metody síťové analýzy

Dijkstrův algoritmus

V předchozí kapitole jsme podstatným způsobem rozšířili naši představu o tom, co je to číslo. Nadále jsou pro nás důležité především vlastnosti

ANTAGONISTICKE HRY 172

Zadání a řešení testu z matematiky a zpráva o výsledcích přijímacího řízení do magisterského navazujícího studia od podzimu 2016

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

= je prostý orientovaný graf., formálně c ( u, v) 0. dva speciální uzly: zdrojový uzel s a cílový uzel t. Dále budeme bez

Další NP-úplné problémy

Parametrické programování

3. úloha - problém batohu metodami branch & bound, dynamické programování, heuristika s testem

8.3). S ohledem na jednoduchost a názornost je výhodné seznámit se s touto Základní pojmy a vztahy. Definice

Lineární algebra : Báze a dimenze

P 1 = P 1 1 = P 1, P 1 2 =

2.6. VLASTNÍ ČÍSLA A VEKTORY MATIC

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

Binární vyhledávací stromy pokročilé partie

IB112 Základy matematiky

Těleso racionálních funkcí

Matematika 1 MA1. 2 Determinant. 3 Adjungovaná matice. 4 Cramerovo pravidlo. 11. přednáška ( ) Matematika 1 1 / 29

Úvod do lineární algebry

1 Báze a dimenze vektorového prostoru 1

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.

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

Definice 13.1 Kvadratická forma v n proměnných s koeficienty z tělesa T je výraz tvaru. Kvadratická forma v n proměnných je tak polynom n proměnných s

VYUŽITÍ NĚKTERÝCH METOD TEORIE GRAFŮ PŘI ŘEŠENÍ DOPRAVNÍCH PROBLÉMŮ

Matice. a m1 a m2... a mn

Západočeská univerzita v Plzni. Fakulta aplikovaných věd. Ivana Kozlová. Modely analýzy obalu dat

6 Lineární geometrie. 6.1 Lineární variety

Základy maticového počtu Matice, determinant, definitnost

Vzdálenost uzlů v neorientovaném grafu

10 Přednáška ze

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

Determinanty. Obsah. Aplikovaná matematika I. Pierre Simon de Laplace. Definice determinantu. Laplaceův rozvoj Vlastnosti determinantu.

Texty k přednáškám z MMAN3: 4. Funkce a zobrazení v euklidovských prostorech

Složitost Filip Hlásek

10. DETERMINANTY " # $!

Transkript:

Univerzita Karlova v Praze Matematicko-fyzikální fakulta DIPLOMOVÁ PRÁCE Ondřej Kafka Optimální plánování rozvozu pomocí dopravních prostředků Katedra pravděpodobnosti a matematické statistiky Vedoucí diplomové práce: Studijní program: Studijní obor: RNDr. Martin Branda, Ph.D. Matematika Pravděpodobnost, matematická statistika a ekonometrie Praha 2013

Na tomto místě bych rád poděkoval RNDr. Martinovi Brandovi, Ph.D. za vedení práce a cenné připomínky.

Prohlašuji, že jsem tuto diplomovou práci vypracoval samostatně a výhradně s použitím citovaných pramenů, literatury a dalších odborných zdrojů. Beru na vědomí, že se na moji práci vztahují práva a povinnosti vyplývající ze zákona č. 121/2000 Sb., autorského zákona v platném znění, zejména skutečnost, že Univerzita Karlova v Praze má právo na uzavření licenční smlouvy o užití této práce jako školního díla podle 60 odst. 1 autorského zákona. V... dne... Podpis autora

Název práce: Optimální plánování rozvozu pomocí dopravních prostředků Autor: Ondřej Kafka Katedra: Katedra pravděpodobnosti a matematické statistiky Vedoucí diplomové práce: RNDr. Martin Branda, Ph.D. Abstrakt: Práce se zabývá optimalizačními problémy, které vznikají při plánování rozvozu pomocí dopravních prostředků. Tyto problémy lze často formulovat jednoduše jako úlohy celočíselného programování, ale málokdy je možné je řešit přímo technikami celočíselného programování. Proto je třeba zkoumat také schopnosti heuristických algoritmů. Hlavním zaměřením práce je rozvozní problém s časovými okny. Pro tento problém byl navržen a implementován algoritmus tabu prohledávání. Algoritmus využívá celočíselné programování při řešení dělícího problému za účelem nalezení optimálního rozdělení všech zákazníků do přípustných tras nalezených během vyhledávacího procesu. V numerické studii jsou porovnány výsledky postupů klasického celočíselného programování, jednoduché vkládací heuristiky a navrženého algoritmu tabu prohledávání. Klíčová slova: rozvozní problém, problém obchodního cestujícího, celočíselné programování, heuristiky, tabu prohledávání Title: Vehicle Routing Problem Author: Ondřej Kafka Department: Department of Probability and Mathematical Statistics Supervisor: RNDr. Martin Branda, Ph.D. Abstract: The thesis deals with optimization problems which arise at distribution planning. These problems can often be easily formulated as integer programming problems, but rarely can be solved using mixed integer programming techniques. Therefore, it is necessary to study the efficiency of heuristic algorithms. The main focus of the thesis is on the vehicle routing problem with time windows. A tabu search algorithm for this problem was developed and implemented. It uses integer programming to solve the set partitioning problem in order to find optimal distribution of all customers into feasible routes found during the search. The results of the classical integer programming approach, basic insertion heuristic and presented tabu search algorithm are compared in a numerical study. Keywords: vehicle routing problem, traveling salesman problem, integer programming, heuristics, tabu search

Obsah Úvod 1 1 Časová složitost 2 1.1 Třídy složitosti............................ 2 2 Problém obchodního cestujícího 5 2.1 Formulace pomocí celočíselného programování........... 6 2.1.1 Podmínky zamezující vytváření subcyklů.......... 7 2.2 Přesné metody řešení problému obchodního cestujícího...... 8 2.3 Heuristiky pro problém obchodního cestujícího........... 11 2.3.1 Metoda nejbližšího souseda................. 11 2.3.2 Christofidova metoda..................... 11 2.3.3 Algoritmus k-opt....................... 12 2.4 Další problémy související s problémem obchodního cestujícího.. 13 2.4.1 Časově závislý problém obchodního cestujícího....... 13 2.4.2 Problém obchodního cestujícího s časovými okny..... 14 2.4.3 Úloha s více obchodními cestujícími............. 15 2.4.4 Rozvozní problém....................... 15 3 Rozvozní problém 16 3.1 Obecně o rozvozních problémech................... 16 3.2 Kapacitně omezený rozvozní problém................ 17 3.2.1 Clarkova-Wrightova heuristika................ 20 3.3 Rozvozní problém s časovými okny................. 22 3.4 Metody řešení rozvozních problémů................. 24 3.4.1 Postup pomocí matematického programování........ 24 3.4.2 Metoda generování sloupců.................. 28 3.4.3 Heuristiky........................... 31 4 Tabu prohledávání 35 4.1 Základní terminologie......................... 35 4.2 Aplikace tabu prohledávání na rozvozní problém s časovými okny 37 4.3 Implementace............................. 39 4.3.1 Datové struktury....................... 39 4.3.2 Metody............................ 40 4.4 Obecný postup............................ 43 5 Numerická studie 44 5.1 Přístup pomocí matematického programování........... 44 5.2 Heuristiky............................... 47 5.2.1 Solomonova vkládací heuristika............... 47 5.2.2 Tabu prohledávání...................... 49 Závěr 55 Reference 56

Seznam použitých zkratek 61 Přílohy 62 A Základní pojmy z teorie grafů 63 B Diagram rozmístění zákazníků problémů typu R 65 C Diagram rozmístění zákazníků problémů typu C (otočeno o 90 ) 66 D Diagram rozmístění zákazníků problémů typu RC (otočeno o 90 ) 67 E Nejlepší nalezená řešení algoritmem tabu prohledávání 68

Úvod Přeprava zboží a osob je důležitou součástí dnešního světa. Denně se utratí obrovské částky za palivo, platy řidičům, údržbu vozidel a mnoho dalšího. Je tedy jasné, že otázka přepravy nabízí velký prostor k optimalizaci nákladů ať už vylepšováním technického vybavení, infrastruktury nebo kvalitním plánováním. Při plánování distribuce zboží jsou v praxi úspěšně uplatňovány techniky operačního výzkumu. Odhadem lze obvykle docílit snížení nákladů o 5 až 20 % [58]. Asi nejznámější úlohou kombinatorické optimalizace je problém obchodního cestujícího (traveling salesman problem, TSP). Úkolem cestujícího je obejít v libovolném pořadí daných n měst a vrátit se do výchozího tak, aby celková délka či cena cesty byla minimální. Svoji popularitu si tato úloha získala díky snadné formulaci, širokému uplatnění a zároveň obtížnému řešení. Zobecněním TSP je pak rozvozní problém (vehicle routing problem, VRP), ve kterém skupina vozů vycházející z jednoho místa objíždí zákazníky a navrací se zpět. Úkolem je nalézt plán tras minimalizující celkovou ujetou vzdálenost či počet použitých vozidel. K VRP se často přidávají další omezení. Typicky to bývají časová okna, během kterých musí dojít k obsloužení zákazníka (vehicle routing problem with time windows, VRPTW). Protože výpočetní složitost přesných deterministických algoritmů exponenciálně roste s velikostí těchto úloh, velké praktické úlohy je často nutné řešit pomocí heuristických algoritmů, zajišťujících pouze suboptimální řešení. Diplomová práce je rozdělena do kapitol. První kapitola popisuje základní definice NP-těžkých a NP-úplných úloh. Ve druhé kapitole je popsán problém obchodního cestujícího včetně několika způsobů řešení. Třetí kapitola se zabývá rozvozními problémy a metodami jejich řešení. Ve čtvrté kapitole je navržen algoritmus tabu prohledávání pro rozvozní problém s časovými okny. Poslední, pátá kapitola shrnuje numerické výsledky algoritmu tabu prohledávání i běžného postupu pomocí celočíselného programování. 1

1. Časová složitost Algoritmus je seznam instrukcí k vyřešení problému. Časovou složitostí algoritmu budeme rozumět počet všech instrukcí z hlediska nejhoršího případu v závislosti na velikosti vstupních dat a vyjadřovat pomocí velké O notace. Formálně: f(x) je O(g(x)), jestliže existuje konstanta c > 0 a přirozené n 0 tak, že pro každé přirozené n n 0 platí f(n) c g(n). Má-li tedy algoritmus časovou složitost O(n 2 ), doba trvání jeho průběhu se zvyšuje kvadraticky v proměnné velikosti vstupu n. Tento způsob odhadu složitosti rozděluje algoritmy na dvě skupiny - polynomiální 1 a nepolynomiální (typicky exponenciální). Rozdíl v rychlosti mezi polynomiálním a exponenciálním algoritmem je zřejmý zejména při úlohách asymptotické velikosti. Zároveň polynomiální algoritmy mnohem lépe využijí případný technologický pokrok. Jasné jsou také matematické výhody tohoto rozdělení. Sečtením, vynásobením i složením dvou polynomů dostaneme opět polynom. Budeme-li tedy rozlišovat algoritmy na dobré a špatné v závislosti na tom, zda mají, či nemají polynomiální složitost, můžeme rovněž klasifikovat problémy jako lehké a těžké podle toho, zda je umíme nebo neumíme vyřešit polynomiálním algoritmem. Výpočetní složitost problému obchodního cestujícího je podrobně popsána v [30]. Odtud jsou také převzaty základní definice této kapitoly. Rozhodovací úlohy jsou úlohy, jejichž výstupem je pouze odpověď na otázku ve smyslu ANO/NE. Každý optimalizační problém lze snadno převést na rozhodovací úlohu, kdy místo hledání optima účelové funkce, se pouze ptáme, jestli existuje řešení splňující nějaké omezení účelové funkce. Pro většinu optimalizačních úloh navíc platí, že pro ně existuje polynomiální algoritmus právě tehdy, když existuje polynomiální algoritmus pro jejich rozhodovací verze. Lze se tak víceméně bez újmy na obecnosti omezit na rozhodovací úlohy. Definice 1. Úloha A je polynomiálně redukovatelná na úlohu B, existuje-li polynomiální algoritmus, který z libovolných vstupních dat a úlohy A vyrobí vstupní data b pro úlohu B takovým způsobem, že odpovědi na otázky spojené s oběma úlohami budou stejné. Zde předpokládáme, že velikost b je také polynomiální funkcí velikosti a. Z vlastnosti skládání polynomů plyne následující věta. Věta 1. Pokud je problém A polynomiálně redukovatelný na problém B a existuje polynomiální algoritmus pro B, pak existuje polynomiální algoritmus pro A. 1.1 Třídy složitosti Definice 2. Třídu P tvoří rozhodovací úlohy řešitelné deterministickými algoritmy v polynomiálním čase (tzn. jejich složitost je O(n k ) pro nějaké k). Definice 3. Třídu NP (nedeterministicky polynomiální) tvoří rozhodovací úlohy řešitelné v polynomiálním čase na nedeterministickém Turingově stroji, tj. na pomyslném počítači, který dokáže v každém kroku rozvětvit výpočet na n větví a v nich poté současně hledat řešení. 1 Mezi polynomiální patří i např. algoritmy složitosti log(n), neboť O(log(n)) O(n). 2

Celková odpověď nedeterministického algoritmu je ANO, pokud nějaká z větví odpoví ANO, jinak je odpověď NE. Například TSP je zřejmě z třídy NP. Nedeterministický počítač může začít v libovolném městě a rozvětvit výpočet na tolik větví, kolik vede z města cest, a v každém z dalších měst postupovat stejně s výjimkou již navštívených měst. Jedním z největších otevřených problémů v teoretické informatice je otázka, zda P = NP. Inkluze P NP je zřejmá. Obecně se však předpokládá, že P NP, ale důkaz takového tvrzení dosud nebyl objeven. Protože třída NP obsahuje rozhodovací úlohu TSP, těžko budeme ukazovat, že TSP není řešitelný v polynomiálním čase, pokud nejprve nedokážeme, že P NP. Lze totiž ukázat, že problém P = NP je ekvivalentní problému, zda rozhodovací TSP patří do P. Klíčem k tomu je tzv. NP-úplnost. Definice 4. Řekneme, že optimalizační nebo rozhodovací problém je NP-těžký, jestliže každý problém z NP je na něj polynomiálně redukovatelný. Definice 5. Řekneme, že rozhodovací problém A je NP-úplný, jestliže je NP-těžký a zároveň platí A NP. Důsledkem těchto definic je tvrzení, že pokud rozhodovací verze problému je NP-úplná, pak jeho optimalizační verze je NP-těžká. NP-úplné úlohy jsou v jistém smyslu nejtěžší úlohy z NP. Pokud by existoval polynomiální algoritmus pro libovolný NP-úplný problém, potom by existoval polynomiální algoritmus pro všechny úlohy z NP a bylo by P = NP. I mezi různými NP-těžkými problémy lze ještě poukázat na rozdíl v obtížnosti jejich řešitelnosti. K některým problémům existují i tzv. pseudopolynomiální algoritmy. Definice 6. Řekneme, že algoritmus řešící problém A je pseudopolynomiální, jestliže jeho časová složitost je omezena polynomem proměnných len(i), max(i), kde jsme označili len(i) velikost vstupu instance I v nějakém kódování a max(i) největší číselný parametr v instanci I. Jednoduchým příkladem pseudopolynomiálního algoritmu je testování prvočíselnosti čísla n postupným dělením čísly {2, 3,..., n 2 }. Definice 7. Nechť A je rozhodovací nebo optimalizační problém. Označme A(p) restrikci problému A na instance I takové, že max(i) p(len(i)). Řekneme, že A je silně NP-těžký, jestliže existuje polynom p takový, že A(p) je NP-těžký. A nazveme silně NP-úplný, pokud A NP a existuje polynom p takový, že A(p) je NP-úplný. Pokud A je silně NP-těžký nebo silně NP-úplný problém, pak pokud P NP, neexistuje k A pseudopolynomiální algoritmus. 3

VRP Obecný TSP Symetrický TSP TSP splňující trojúhelníkovou nerovnost Symetrický TSP splňující trojúhelníkovou nerovnost Euklidovský TSP Problém hamiltonovské kružnice Obrázek 1.1: Schéma speciálních případů souvisejících s TSP Problém A je speciálním případem problému B, pokud oba řeší stejnou otázku a množina všech možných vstupních dat problému A je podmnožinou všech možných vstupních dat problému B. Zřejmě tak obecnější případ problému nemůže být lehčí než jeho speciální verze. Bylo dokázáno, že samotné nalezení libovolné hamiltonovské kružnice (kružnice, která právě jednou projde všemi vrcholy) v daném neorientovaném (i orientovaném) grafu je NP-úplný problém [35], dokonce silně, jelikož zadání ani neobsahuje numerická data. Také euklidovský TSP je silně NP-těžký problém [46]. A protože se tato vlastnost v diagramu na obrázku 1.1 zachovává směrem vzhůru, jsou všechny úlohy na diagramu rovněž silně NP-těžké. Dokonce rozhodovací verze problémů jsou z třídy NP, a jsou tedy i silně NP-úplné. Jednotlivé typy problému obchodního cestujícího na obrázku 1.1 se odlišují vlastnostmi vzdáleností svých zákazníků. Matematicky budou popsány v další kapitole. 4

2. Problém obchodního cestujícího Je dáno n měst a v jednom z nich se nachází obchodní cestující. Potřebuje obejít zbývající města a vrátit se zpět. Přitom pro každou dvojici měst zná náklady na cestu oběma směry a hledá celkovou nejlevnější trasu. Jsou-li každá dvě města vzájemně dosažitelná, přípustným řešením úlohy je libovolná permutace n měst, která představuje posloupnost po sobě navštívených měst. Asi nejjednodušší znění úlohy obchodního cestujícího je tedy následující: Pro danou matici C = (c ij ) n n, reprezentující ceny, nalezněte permutaci π množiny {1, 2,..., n}, která minimalizuje součet c π(n),π(1) + n 1 i=1 c π(i),π(i+1). Je-li například n = 5, očíslujme města 1, 2,..., 5, pak řešení 1 2 3 4 5 1 a 2 3 4 5 1 2 jsou zřejmě totožná. Snadno si tak představíme, že na výchozím městě v úloze obchodního cestujícího nezáleží a počet všech přípustných řešení TSP je (n 1)!. Jiná formální definice TSP vychází z teorie grafů. Použité definice z teorie grafů jsou shrnuty v příloze A. Nechť G = (V, E) je graf (orientovaný nebo neorientovaný). Označme V = {1, 2,..., n}. Pro každou hranu (i, j) E resp. {i, j} E je dána její cena c ij. Potom úlohou obchodního cestujícího je nalézt hamiltonovskou kružnici v G, jejíž součet cen hran je nejmenší možný. Bez újmy na obecnosti předpokládejme, že G je úplný graf. Chybějící hrany lze jinak dodefinovat jako hrany vysoké ceny. Matici C = (c ij ) n n, kde c ij odpovídá ceně hrany vedoucí z vrcholu i do vrcholu j, nazveme maticí cen (vzdáleností, vah). Diagonální prvky matice C nejsou zajímavé, později je z praktických důvodů definujeme jako nekonečno. Nicméně povaha matice C definuje dvě velké třídy TSP. Je-li C symetrická (tj. G neorientovaný), mluvíme o symetrickém problému obchodního cestujícího (STSP). Pokud C obecně není symetrická (tj. G orientovaný), jde o nesymetrický problém obchodního cestujícího (ATSP). Poznamenejme, že je možné ATSP formulovat jako STSP s dvojnásobným počtem vrcholů [31]. 6 3 1 5 4 2 3 1 2 3 M 5 3 4 1 3 2 M 6 2 1 M 1 2 Obrázek 2.1: Transformace nesymetrického TSP na symetrický Uvažujme ATSP na orientovaném grafu D = (N, A), N = {1, 2,..., n}, C = (c ij ) n n. Sestavme neorientovaný graf G = (V, E ) s množinou vrcholů 5

V = N {1, 2,..., n }. Ke každé hraně (i, j) D vytvoříme hranu {i, j } G s cenou c ij. Dále přidáme hrany {i, i } s cenou M pro nějaké velké M. Ostatní hrany mají cenu M. Nyní stačí jen ověřit, že řešení ATSP na D je ekvivalentní řešení STSP na G. Jednoduchý příklad této transformace je znázorněn na obrázku 2.1. Jinou transformaci nesymetrického problému na symetrický s trojnásobným počtem vrcholů navrhl Karp [35]. Splňují-li prvky C trojúhelníkovou nerovnost c ij + c jk c ik, i, j, k, jedná se o metrický TSP. Speciálně je-li c ij přímo euklidovská vzdálenost měst i a j v rovině, jde o euklidovský TSP. 2.1 Formulace pomocí celočíselného programování V následujících formulacích budeme předpokládat orientované hrany grafů i u symetrických problémů. Formulace celočíselného programování TSP zpravidla vychází z tzv. přiřazovacího problému. Definujme n 2 binárních proměnných x ij takových, že x ij = 1, pokud cesta prochází hranou (i, j) neboli městu i je přiřazeno následující město j. Úlohu minimalizovat za podmínek n n c ij x ij (2.1) i=1 j=1 n x ij = 1, j = 1, 2,..., n, (2.2) i=1 n x ij = 1, i = 1, 2,..., n, (2.3) j=1 x ij {0, 1}, i, j = 1, 2,..., n, (2.4) nazýváme přiřazovací problém. Podmínky (2.3), (2.2) zajistí, že každému městu bude přiřazen právě jeden následník a každé město bude přiřazeno právě jednomu předchůdci. V podstatě je přiřazovací problém zvláštní případ známého vyváženého dopravního problému minimalizovat za podmínek n m c ij x ij (2.5) i=1 j=1 n x ij = b j, j = 1, 2,..., m, (2.6) i=1 m x ij = a i, i = 1, 2,..., n, (2.7) j=1 x ij 0, i = 1, 2,..., n, j = 1, 2,..., m. (2.8) ve kterém x ij představují převážený náklad ze skladu i k zákazníkovi j a požadujeme přesné splnění požadavků b j s přesným využitím všech kapacit skladů a i (podmínky (2.6), (2.7) ve tvaru rovnosti). Pokud požadavky b j a kapacity a i nahradíme 1 a položíme n = m neboli mezi n městy přepravujeme jen jednotková množství, dostáváme již přiřazovací problém. Podmínku (2.4) skutečně lze nahradit podmínkou (2.8), a je tedy možné nahlížet na přiřazovací problém jako 6

na úlohu lineárního programování (LP). Důvodem, proč vždy existuje celočíselné řešení, je fakt, že matice A ve formulaci LP přiřazovacího problému je totálně unimodulární, tj. determinant každé její čtvercové podmatice je roven 0, 1 nebo 1 a platí následující věta. Věta 2. Nechť matice A je totálně unimodulární a b Z m. Potom konvexní polyedrická množina M = {x R n Ax = b, x 0} má všechny krajní body celočíselné. Důkaz. Nechť A je typu m n. Každý krajní bod z je určen n n regulární submaticí A ve smyslu A z = b, kde hodnoty b odpovídají příslušným hodnotám vektoru b. Označme (A ) i matici, kterou získáme z A nahrazením i-tého sloupce vektorem b. Podle Cramerova pravidla z i = det((a ) i ) det(a ) Z. Protože lineární programování je problém z P (např. metoda vnitřního bodu [34]), přiřazovací problém patří také do třídy P a jsou pro tento problém známy i polynomiální algoritmy, např. maďarská metoda [37]. Přiřazovací problém je důležitou relaxací TSP, ale sám o sobě k formulaci TSP nestačí. Zřejmě je schopen zajistit, že z každého a do každého města vede právě jedna cesta, řešení ale nemusí tvořit jeden cyklus. Mohou tak vzniknout lokální smyčky jako je tomu na pravé straně obrázku 2.2. 4 4 5 3 5 3 1 2 1 2 Obrázek 2.2: Souvislá trasa vs. dva subcykly na příkladu 5 měst Je tedy nutné přidat další omezení, které zamezí vytváření subcyklů. Tím se bohužel pokazí vlastnosti úlohy. 2.1.1 Podmínky zamezující vytváření subcyklů Budeme postupně eliminovat subcykly různé délky. Subcyklem délky 1 rozumíme přiřazení města sobě samému a přirozeně definujeme subcykly vyšších délek. K eliminaci subcyklů délky 1 stačí položit x ii = 0, i = 1, 2,... n. Pokud položíme x ii = 0, není nutné tyto proměnné vůbec uvažovat, mírně se tím ale komplikuje matematický zápis úloh. Eliminace těchto subcyklů se obvykle provádí také definováním cen c ii =, i = 1, 2,... n. Podmínka x ij +x ji 1, i, j zřejmě zamezí vzniku subcyklů délky 2. Podobně subcykly délky 3 lze eliminovat podmínkou x ij + x jk + x ki 2, i, j, k a dále lze postupovat analogicky, což dohromady dává x ij S 1, S {1, 2,..., n}; 2 S n 1, (2.9) i S j S 7

kde značí mohutnost množiny. Bohužel celkový počet těchto nerovností je téměř 2 n. Sice je možné jejich počet snížit úvahou, že stačí eliminovat subcykly do délky n 2, neboť případná existence delšího subcyklu už implikuje přítomnost subcyklu kratšího, ale stále jich pro rozumný zápis do paměti počítače může být příliš mnoho. Podmínka (2.9), prvně formulovaná v [11], se přesto stala velmi užitečnou. Vhodné nerovnosti lze totiž například iterativně přidávat až v průběhu výpočtu. Později byla objevena jiná formulace podmínek vylučujících subcykly se skutečně polynomiálním počtem nerovností [42]: u i u j + nx ij n 1, i, j = 2, 3,..., n, (2.10) kde u i, i = 2, 3,..., n jsou nově přidané neomezené reálné proměnné. Ukážeme, že tyto podmínky skutečně eliminují subcykly délek 1 až n 1. Předpokládejme, že řešení netvoří hamiltonovský cyklus. Protože z každého a do každého vrcholu vede jen jedna hrana, řešení je tvořeno více cykly. Alespoň jeden cyklus neprochází vrcholem 1, označme jej C, počet hran cyklu C označme E(C). Sečteme-li nerovnosti (2.10) přes všechny hrany cyklu C, dostaneme n E(C) (n 1) E(C), což je spor. Nechť naopak E(C) = {(i, j) x ij = 1} je množina hran hamiltonovského cyklu s vrcholy v pořadí v 1, v 2,..., v n a v 1 = 1. Položme u i = l, je-li i = v l. Pak pro každou hranu (i, j) E(C), i, j 2, platí u i u j = u vl u vl+1 = 1. Tedy u i u j + nx ij = 1 + n n 1. Pro ostatní hrany (i, j) / E(C), pro které i, j 2, nerovnost (2.10) přirozeně platí. Každý hamiltonovský cyklus je tedy přípustný. Přiřazovací problém (2.1) (2.4) spolu s některou z popsaných podmínek je vhodnou formulací problému obchodního cestujícího, přesněji ATSP. V případě STSP je možné formulaci ještě zjednodušit: minimalizovat za podmínek n n c ij x ij (2.11) i=1 j=1 n x ij = 2, j = 1, 2,..., n, (2.12) i=1 x ij {0, 1}, i, j = 1, 2,..., n, (2.13) {(i, j) x ij = 1} neobsahuje subcykly. (2.14) Podmínky (2.12) zajistí každému zákazníkovi j, že bude součástí právě 2 hran výsledné kružnice v grafu. Pro další různé podmínky eliminující subcykly a jiné formulace TSP lze doporučit [50]. 2.2 Přesné metody řešení problému obchodního cestujícího Některé způsoby hledání optimálního řešení TSP jsou založeny na principu větví a mezí (branch and bound). Jeden z nejjednodušších takových algoritmů budeme 8

demonstrovat na příkladě. Uvažujme symetrický TSP zadaný grafem na obrázku 2.3, resp. v tabulce 2.1. Primitivní dolní mez, tedy délku trasy, pro kterou můžeme bezpečně tvrdit, že neexistuje řešení kratší, získáme přímo z tabulky 2.1 prostým sečtením řádkových minim: 3 + 3 + 2 + 2 + 3 = 13, tj. sečtením minimálních cen, za které je možné opustit každé dané město. 4 1 2 3 4 5 5 4 4 5 5 3 5 6 2 4 3 1 3 6 5 3 2 3 4 5 5 3 6 4 2 4 4 5 5 2 4 1 3 2 5 3 5 4 4 Obrázek 2.3: TSP zadaný grafem Tabulka 2.1: TSP zadaný tabulkou Nyní rozdělíme výpočet do čtyř větví. V první větvi předpokládáme x 12 = 1, v druhé x 13 = 1, ve třetí x 14 = 1 a konečně ve čtvrté x 15 = 1. Pro každou tuto větev spočteme novou dolní mez za uvedeného předpokladu. 13 x 12 = 1 x 13 = 1 x 14 = 1 x 15 = 1 14 18 17 14 16x23 = 1 x 25 = 1 x 24 = 1 17 18 16x52 = 1 x 54 = 1 x 53 = 1 17 16 x 34 = 1 16 Obrázek 2.4: Průběh výpočtu algoritmu větví a mezí Tedy například ve větvi x 12 = 1 vynecháme z tabulky 2.1 první řádek a druhý sloupec, protože z města 1 do města 2 už vede cesta a přičteme součet řádkových minim k ceně hrany (1, 2): (4 + 2 + 2 + 3) + 3 = 14. 9

Jediný rozdíl při výpočtu nových dolních mezí je, že již by mohl vzniknout subcyklus. Ve větvi x 12 = 1 už nechceme x 21 = 1. Tedy na příslušném místě v tabulce 2.2 je pomlčka. 1 3 4 5 2 4 5 5 3 6 2 4 4 5 2 4 5 3 4 4 Tabulka 2.2: Zadaný TSP za předpokladu x 12 = 1 Pro každou větev dostaneme postupně nové dolní meze 14, 18, 17, 14. Například ve větvi předpokládající x 13 = 1 nelze nalézt řešení s lepší hodnotou než 18. Dále algoritmus pokračuje rozvětvením tam, kde je nejmenší dolní mez. Tedy například k předpokladu x 12 = 1 se postupně přidávají x 23 = 1, x 24 = 1, x 25 = 1. Aby opět nevznikaly subcykly, tak např. ve větvi x 12 = 1, x 23 = 1 požadujeme x 31 = 0. Tedy opět na příslušném místě v tabulce 2.3, vzniklé z 2.2 vynecháním sloupce 3 a řádku 2, je pomlčka. 1 4 5 3 2 4 4 5 4 5 3 4 Tabulka 2.3: Zadaný TSP za předpokladu x 12 = x 23 = 1 Po těchto krocích zůstává nejlepší dolní mez 14 v pravé části diagramu na obrázku 2.4, proto algoritmus dále pokračuje ve výpočtu v této větvi. Protože necyklická trojice hran již jednoznačně určuje řešení problému s pěti vrcholy, na třetí úrovni větvení už dostáváme přípustná řešení problému a s nimi i horní meze (optimální řešení nemůže být horší). Ve větvi x 12 = x 23 = 1 algoritmus nalézá řešení 1 2 3 4 5 1 s délkou trasy 16. V tuto chvíli přestává prohledávat všechny větve (uzly), pro které dolní mez je větší nebo rovna 16, tzn. v našem případě se algoritmus zastaví. Algoritmy založené na principu větvení a mezí se mohou lišit způsobem výpočtu dolní meze (nejčastěji lineární relaxace, přiřazovací problém), způsobem větvení (např. binárně x 12 = 0, x 12 = 1), ale i způsobem výběru dalších uzlů k prozkoumání. Jejich nevýhodou mohou být slabé dolní meze, kvůli kterým je pak nelze použít k řešení větších problémů. V této práci měl příklad hlavně ilustrovat exponenciální složitost exaktních algoritmů. Obecně bývají mnohem rychlejší algoritmy založeny na principu větvení a řezů (branch and cut), což kombinuje metodu větvení a mezí s metodou sečné nadroviny (cutting plane method), podrobný přehled v [43]. Toto schéma využívá i jeden z nejrychlejších současných exaktních algoritmů pro symetrický problém obchodního cestujícího Concorde [2], který například v roce 2006 dokázal vyřešit problém o velikosti 85 900 měst. 10

Z hlediska nejhoršího případu dosud nejlepší známý exaktní algoritmus pro libovolný TSP funguje na principu dynamického programování a má složitost O(n 2 2 n ) [24]. 2.3 Heuristiky pro problém obchodního cestujícího Jiná možnost, jak přistupovat k řešení složitých problémů, je nehledat přesně optimální řešení, ale spokojit se pouze s nějakým kvalitním řešením, které lze hledat v polynomiálním čase. K tomuto účelu slouží různé heuristiky. Klasické heuristiky lze obecně rozdělit na dvě skupiny. Konstrukční heuristiky, sloužící k nalezení nějakého přípustného řešení, a zlepšovací heuristiky, které se používají k vylepšování nalezeného řešení. Pokud algoritmus dokonce zaručuje, že délka nalezené trasy nepřekročí určitý násobek optima, mluvíme o aproximačním algoritmu. 2.3.1 Metoda nejbližšího souseda Vůbec nejjednodušší konstrukční heuristikou je metoda nejbližšího souseda. Algoritmus startuje v jednom z vrcholů a postupně tvoří posloupnost vrcholů tak, aby vždy následující vrchol měl nejmenší vzdálenost od předešlého. Přitom každý vrchol musí být použit právě jednou. Protože řešení závisí na volbě startovního vrcholu, lze tuto proceduru provést pro každý vrchol v grafu a vybrat nejlepší řešení. Kvalita výsledného řešení se bohužel zhoršuje s rostoucí velikostí problému. Na druhou stranu jedinou podmínkou pro použití je úplnost zadaného grafu. 2.3.2 Christofidova metoda Mnohem zajímavější konstrukční heuristikou je tzv. Christofidova metoda pro symetrický TSP [26]. Konstrukce trasy probíhá v několika krocích. Nechť symetrický problém obchodního cestujícího je určen úplným grafem G = (V, E). Nalezneme minimální kostru T grafu G. Označme C množinu vrcholů lichého stupně v T. Z věty A.12 víme, že C je sudé, tedy podgraf v G příslušící vrcholům z C obsahuje perfektní párování. Spočteme minimální perfektní párování M a přidáme ho ke kostře T. Některé hrany se mohou zduplikovat a tím mírně i porušit definici grafu. V T M pak mají všechny vrcholy sudý stupeň a můžeme nalézt Eulerův cyklus R. Odstraněním opakujících se vrcholů v R dostaneme řešení. 4 4 5 6 5 5 4 5 3 5 4 3 2 5 4 3 2 3 1 2 2 1 2 2 Obrázek 2.5: Minimální kostra grafu TSP 11

Lépe je opět postup vidět na příkladě. Mějme symetrický TSP popsán grafem vlevo na obrázku 2.5. Vpravo je pak jeho zřejmá minimální kostra. Vrcholy 5, 1, 4, 3 mají lichý stupeň, hledáme tedy minimální perfektní párování. Jsou tři možnosti: {{1, 3}, {4, 5}}, {{1, 4}, {3, 5}} a {{1, 5}, {3, 4}}, přičemž poslední možnost je minimální s hodnotou 8. Tyto hrany můžeme zakreslit do grafu minimální kostry a získat tím Eulerův cyklus po vrcholech postupně 1, 2, 3, 4, 1, 5, 1. 4 5 3 1 2 Obrázek 2.6: Eulerův cyklus Zbývá vybrat Hamiltonův cyklus vynecháním některých vrcholů. V tomto případě jsou možnosti dvě: 1 2 3 4 1 5 1, 1 2 3 4 1 5 1. První možnost je dokonce i jedno z optimálních řešení. Hledání minimální kostry i minimálního perfektního párování lze provádět v polynomiálním čase. Nalezení optima v poslední fázi algoritmu je již NP-těžký problém [47]. I přesto ale Christofidův algoritmus zaručuje jistý nejhorší možný výsledek. Jestliže je graf G úplný a vzdálenosti c ij jsou nezáporné a splňují trojúhelníkovou nerovnost, pak lze ukázat, že celková délka libovolného řešení nalezeného heuristikou nepřekročí 1.5 násobek optima [26]. 2.3.3 Algoritmus k-opt Algoritmus k-opt patří do třídy zlepšovacích heuristik. Vstupem do algoritmu je spolu s problémem i nějaké řešení, které se následně snažíme zlepšit sérií dalších úprav. Krok 2-opt [9] jednoduše odebere z řešení nějaké dvě hrany, které nemají společný vrchol, a vzniklé dvě cesty opět spojí do nového cyklu. Takto definuje množinu sousedních řešení, tj. řešení, která lze získat krokem 2-opt. Od nejlepšího sousedního řešení pokračuje stejným způsobem až do chvíle, kdy žádný krok typu 2-opt nenalezne zlepšení. Algoritmus 3-opt pracuje podobně, namísto dvou hran odstraňuje tři. Drobný rozdíl je v opětovném propojení, neboť zde již existuje více způsobů propojení do nového cyklu. Algoritmus je možné zobecnit i pro k > 3, nicméně s rostoucím k roste také náročnost výpočtu a naopak efekt zlepšení 12

vzhledem ke k 1 se zmenšuje 1. Nejlepší algoritmy tohoto typu mají proměnlivé k podle toho, které k přinese největší zlepšení. Algoritmus opět předpokládá symetrický problém, protože výměny hran mohou způsobit změnu směru průchodu mezi některými městy. 4 5 4 5 3 6 3 1 2 Obrázek 2.7: Krok 2-opt 1 2 Obrázek 2.8: Krok 3-opt Jedno z nejstarších tvrzení o problému obchodního cestujícího říká, že v optimálním řešení euklidovského TSP se nemohou hrany křížit, např. proto, že 2-opt krok na křížící se hrany by určitě vytvořil lepší řešení (viz obrázek 2.7). Krok typu 3-opt je znázorněn na obrázku 2.8. Zde zmíněné algoritmy patří k těm nejpopulárnějším, samozřejmě ale existuje celá řada dalších heuristik pro STSP i ATSP. Speciální třídu heuristických algoritmů tvoří tzv. metaheuristiky (např. simulované žíhání, genetické algoritmy, tabu prohledávání, mravenčí kolonie aj.), které jsou schopné při prohledávání nalézt cestu i z lokálního minima. Podrobný přehled heuristických algoritmů pro TSP včetně analýzy chování nabízí [28, 29]. 2.4 Další problémy související s problémem obchodního cestujícího Podle potřeby se k problému obchodního cestujícího přidávají další podmínky, popřípadě se problém ještě více zobecňuje. Tím vznikají nové problémy, které je třeba řešit. Některé nejčastější varianty zobecnění TSP uvedeme při zavedeném značení i zde. 2.4.1 Časově závislý problém obchodního cestujícího Pro každou hranu (i, j) E grafu G = (V, E) jsou známy ceny c t ij, t = 1, 2,..., n, které představují náklady na cestu z i do j v závislosti na pořadí t. Počáteční, a tedy i koncové město je 1. Úkolem časově závislého problému obchodního cestujícího je opět nalézt okružní cestu přes všechna města, pro níž jsou náklady v popsané struktuře minimální. Podrobněji se o tomto problému lze dočíst v [48]. 1 S výjimkou 5-opt kroku, který dle [27] nabízí v tomto smyslu z kombinatorického hlediska více možností. 13

2.4.2 Problém obchodního cestujícího s časovými okny Pro každou hranu (i, j) E grafu G = (V, E) jsou kromě cen c ij dány také doby přesunu t ij. Dále je pak pro každý vrchol i dán interval [a i, b i ], 0 a i b i, který představuje časové okno, ve kterém má být obsloužen zákazník ve vrcholu i. Bez újmy na obecnosti předpokládáme, že doba obsluhy s i je již zahrnuta v t ij, tedy s i = 0 pro každé i. Pokud cestující dorazí do i dříve, než mu povoluje příslušné časové okno [a i, b i ], musí čekat do času a i. Také zde cestující vyráží a navrací se vrcholu 1, zvaného depo. Označíme-li proměnnou T i okamžik začátku obsluhy zákazníka i, formulace problému obchodního cestujícího s časovými okny (traveling salesman problem with time windows, TSPTW) je vzhledem k již popsanému TSP poměrně jasná: minimalizovat za podmínek n n c ij x ij (2.15) i=1 j=1 n x ij = 1, j = 1, 2,..., n, (2.16) i=1 n x ij = 1, i = 1, 2,..., n, (2.17) j=1 a i T i b i, i = 2, 3,..., n, (2.18) t 1j T j M(1 x 1j ), j = 2, 3,..., n, (2.19) T i + t ij T j M(1 x ij ), i, j = 2, 3,..., n, (2.20) x ij {0, 1}, i, j = 1, 2,..., n. (2.21) Podmínka eliminace subcyklů je tu nahrazena podmínkami (2.19) a (2.20). Poznamenejme, že místo vysoké kladné konstanty M lze psát M ij = max{b i + t ij a j, 0}. i,j Potom, je-li b i + t ij a j, jsou omezení (2.19) a (2.20) splněna vždy a stačí je použít jen pro taková i, j, pro která M ij > 0. Protože výchozí vrchol obvykle představuje nějakou vozovnu či sklad, odkud vozidla vyráží obsluhovat zákazníky, setkáváme se v literatuře s trochu jinou formulací tohoto problému. Nechť V = {0, 1, 2,..., n, n + 1}. Zákazníci jsou ve vrcholech 1, 2,..., n. Vrchol se skladem je duplicitně 0 i n + 1, přičemž 0 je výchozí bod a n + 1 konečný. Každému vrcholu i V přísluší časové okno [a i, b i ], kde a 0 je počáteční čas výjezdu a b n+1 nejpozdější možný čas návratu a opět klademe M ij = max{b i + t ij a j, 0}. i,j Pak lze problém obchodního cestujícího s časovými okny formulovat následovně [16]: minimalizovat za podmínek n+1 n+1 i=0 j=0 n+1 j=1 c ij x ij (2.22) x ij = 1, i = 1, 2,..., n, (2.23) 14

n x 0,j = 1, (2.24) j=1 n n+1 x ij x ji = 0, j = 1, 2,..., n, (2.25) i=0 i=1 n x i,n+1 = 1, (2.26) i=1 a i T i b i, i = 0, 1,..., n + 1, (2.27) T i + t ij T j M ij (1 x ij ), i, j; M ij > 0, (2.28) x ij {0, 1}, i, j = 0, 1,..., n, n + 1. (2.29) Podmínky (2.23) (2.26) určují cestu v grafu z 0 do n + 1 přes všechny vrcholy 1, 2,..., n. Z binárních proměnných (2.29) lze vynechat x 0,n+1, jelikož s výjimkou účelové funkce není ve formulaci nikde použita. Existují i verze s tzv. měkkými časovými okny, které je možné za cenu určité penalizace porušit. 2.4.3 Úloha s více obchodními cestujícími Jiným druhem zobecnění TSP je úloha s více obchodními cestujícími (multiple TSP, m-tsp), ve které uvažujeme m obchodních cestujících (vozidel) a jedno společné depo pro všechny. Obecně předpokládáme, že každé vozidlo musí opustit depo a každý zákazník musí být navštíven právě jedním vozidlem. Cílem je samozřejmě minimalizovat celkovou ujetou vzdálenost vozidel. Na rozdíl od rozvozních problémů se v m-tsp nekladou jednotlivým vozidlům žádné podmínky na kapacitu. Typicky tedy problém může najít uplatnění ve firmách poskytujících různé servisní služby. Problém m-tsp lze také snadno formulovat přímo jako TSP. Nicméně specializované algoritmy budou při řešení m-tsp určitě lepší volbou. Nechť C = (c ij) n n je matice vzdáleností n zákazníků a r je n-složkový vektor, kde r i udává vzdálenost i-tého zákazníka od depa. Potom řešení problému TSP s maticí vzdáleností C r r r r C = r....... r typu (n+m) (n+m) udává řešení m-tsp [56]. Posledních m sloupců a m řádků matice C náleží všechny depu, do kterého se cestující dohromady m-krát vrací. 2.4.4 Rozvozní problém Rozvozní problém vznikne z m-tsp, pokud každému zákazníkovi přísluší ještě nějaká poptávka po zboží, zároveň rozvážející vozidla mají omezenou (ne nutně stejnou) kapacitu. Součet poptávek na trase vozidla nesmí překročit jeho kapacitu. Optimalizovat se zde nemusí jen ujetá vzdálenost, ale často i počet použitých vozidel. Podrobněji se budeme věnovat rozvoznímu problému a především verzi s časovými okny v následující kapitole. 15

3. Rozvozní problém Rozvozní problém (popř. problém okružních jízd), v literatuře známý častěji pod zkratkou VRP (vehicle routing problem), dostaneme v situaci, kdy je k obsluze zákazníků k dispozici více než jedno vozidlo. Aby se zároveň nejednalo jen o zvláštní případ TSP, přidávají se navíc další omezení. Nejčastěji to bývá kapacita vozidla, ale je možné uvažovat i další omezení, např. maximální ujetou vzdálenost vozidla nebo maximální počet zákazníků, které může dané vozidlo obsloužit. Obecně se za zkratkou VRP skrývá celá třída problémů. Praktické problémy totiž přináší mnoho dalších omezení. Podrobnější přehled problémů VRP nabízí [58], nejdůležitější a nejčastější druhy podmínek popíšeme i zde. Široké aplikace problémy mají samozřejmě v dopravě a distribuci zboží, běžnými příklady mohou být rozvoz novin, nápojů a potravin nebo sběr odpadu (viz např. [21]). 3.1 Obecně o rozvozních problémech Struktura problémů VRP se opět většinou definuje pomocí orientovaného či neorientovaného grafu, jehož vrcholy představují umístění zákazníků a dep s vozidly a hrany cesty mezi dvojicemi vrcholů. Ke každé hraně je přiřazena cena, která obecně představuje vzdálenost. Rovněž bývá hranám přiřazen také čas potřebný k přesunu, který může záviset např. na typu vozidla. Vzhledem k běžnému předpokladu lineárního vztahu mezi těmito veličinami a předpokladu stejného typu vozidel stačí často uvažovat (vhodnou volbou jednotek) pouze jednu cenu hrany. Jednotliví zákazníci bývají nebo mohou být charakterizováni následující sadou vlastností: vrchol, ve kterém jsou umístěni, množství zboží (poptávaného či naopak odevzdávaného), povoleny jsou i různé druhy zboží, časové okno, ve kterém z jakýchkoli důvodů musí být zákazník obsloužen, čas potřebný k obsloužení zákazníka, může záviset i na typu vozidla, podmnožina vozidel, které je možné použít k obsluze klienta. Občas ani nemusí být možné splnit požadavky všech zákazníků, v takovém případě je pak třeba vhodně nastavit priority či penalizace za případná nesplnění. Jednotlivé trasy začínají a končí v nějakém depu. Každé depo charakterizují počty různých typů vozidel. V reálných aplikacích zákazníci často náleží jednomu danému depu, které se nachází v jejich blízkosti, a problém pak lze rozdělit na několik menších nezávislých problémů. Vozy se od sebe mohou lišit vlastnostmi: výchozí depo a depa, ve kterých je možné zakončit trasu, kapacita vozu - maximální hmotnost, objem či počet kusů, které vůz uveze, typy zboží, které může vůz převážet, podmnožina hran, po kterých je vůz schopen jet, 16

náklady spojené s provozem vozidla. Úloha si může rovněž klást různé cíle: minimalizace nákladů, minimalizace počtu použitých vozidel, vyvážení tras, minimalizace penalizací spojených s nesplněním požadavků, různé kombinace uvedených cílů. Další podmínky mohou být kladeny i na řidiče (pracovní doba, povinné přestávky apod.), případně může být pro daného zákazníka nutné navštívit dřív jiné zákazníky stejným vozidlem. A nebylo by obtížné nalézt nebo i vymyslet další různé verze VRP a podmínky, které musí splňovat. V praktických aplikacích bývá často i tolik omezení, že žádné přípustné řešení ani neexistuje. Bohužel ale i ty nejjednodušší varianty VRP bývají výpočetně velmi náročné. 3.2 Kapacitně omezený rozvozní problém Základní případ problému, ve kterém z možných podmínek uvažujeme pouze omezení na kapacitu vozidel, nazýváme kapacitně omezený rozvozní problém a značíme zkratkou CVRP (capacitated VRP). Poprvé jej navrhli Dantzig a Ramsey koncem 50. let minulého století ve svém článku [12]. Problém se stal velmi populárním díky širokým praktickým aplikacím, obtížné řešitelnosti a také proto, že přirozeně zobecňuje TSP. Poptávku po jednom druhu zboží známe od každého zákazníka předem, všechna vozidla jsou stejná (mají stejnou kapacitu) a jsou umístěna v jediné vozovně. Úkolem je obsloužit všechny zákazníky a přitom minimalizovat náklady. Zároveň každý zákazník musí být navštíven právě jednou (tzn. dodávku není možné rozdělit). Pokusme se nyní CVRP matematicky formulovat. Nechť je opět G = (V, E) úplný graf, kde V = {0, 1,..., n}, přičemž vrcholy 1, 2,..., n náleží zákazníkům a 0 výchozímu depu, c ij je cena hrany (i, j) E a c ii =, i V. V mnoha případech matice cen (c ij ) splňuje trojúhelníkovou nerovnost c ik + c kj c ij, i, j, k V, (3.1) což také bývá častý předpoklad pro různé algoritmy. Splnění (3.1) lze jednoduše docílit také přičtením vysokého čísla M > 0 k ceně každé hrany grafu, nicméně případná nějaká dolní či horní mez původního problému se může touto změnou značně zhoršit. Podobně jako u TSP můžeme s ohledem na vlastnosti matice (c ij ) rozlišovat mezi nesymetrickou, symetrickou nebo přímo euklidovskou verzí problému CVRP. U každého klienta i {1, 2,..., n} je známa poptávka d i 0. Pro depo případně definujeme d 0 = 0. Dále je dán počet vozidel K, z nichž každé má stejnou kapacitu Q > d i, i V. Označme K min minimální počet vozidel, kterými je možné obsloužit všechny zákazníky. Pro existenci nějakého řešení je tedy nutné předpokládat K K min. Hodnotu K min lze pro malé úlohy získat postupným 17

zkoušením nebo přímo vyřešením tzv. bin packing problému (BPP) odpovídajícího daným poptávkám a kapacitě vozidel. Potom tedy K min je v úplném grafu rovno optimální hodnotě úlohy n minimalizovat y i (3.2) za podmínek i=1 n j=1 n i=1 d j x ij Qy i, i = 1, 2,..., n, (3.3) x ij = 1, j = 1, 2,..., n, (3.4) y i {0, 1}, i = 1, 2,..., n, (3.5) x ij {0, 1}, i, j = 1, 2,..., n, (3.6) kde x ij = 1, pokud j-tý klient náleží vozidlu i, a y i = 1, pokud i-té vozidlo je použito. Podmínky (3.3) zajistí, že součet všech poptávek libovolně seřazených zákazníků na trase i-tého vozidla nepřekročí jeho kapacitu, dle (3.4) je každý zákazník součástí nějaké trasy. BPP je ale stále ještě silně NP-těžký problém (viz [18]). Ve své základní verzi hledá CVRP přesně K okruhů (tras příslušejících každému z K vozidel). Pokud je K > K min, lze některé vozy teoreticky ponechat nevyužity. Ve formulaci, která povoluje nevyužití všech vozů, se pak ale běžně ještě definují náklady na užití vozidla a přidávají se do účelové funkce. Z důvodu omezené kapacity vozidel totiž může nejkratší řešení zároveň potřebovat více vozidel než K min i v případě, že matice vzdáleností splňuje trojúhelníkovou nerovnost. Příklad je na obrázku 3.1, kde zákazníci ve vrcholech 2,4 požadují 3 jednotky zboží, ostatní požadují 2. Vozidla mají kapacitu 6. Zřejmě existuje řešení využívající pouze dvě vozidla 0 2 4 0, 0 3 5 1 0 s celkovými náklady 45, ale nejkratší přípustné řešení je s celkovými náklady 30. 0 1 2 0, 0 3 4 0, 0 5 0 4 7 6 2 5 6 2 6 11 10 0 9 5 7 6 5 10 3 1 2 2 Obrázek 3.1: Ukázka grafu symetrického CVRP 18

CVRP vlastně spojuje dva NP-těžké problémy, což jej činí obzvlášť obtížným: TSP - v případě neomezené kapacity vozidel Q = dostáváme m-tsp, který lze formulovat jako TSP, BPP - otázka, zda existuje přípustné řešení je problém typu BPP, rozhodovací verze BPP je tak principiálně ekvivalentní rozhodovacímu CVRP s c ij = 0, i, j V. Nesymetrickou verzi CVRP lze formulovat jako úlohu smíšeného celočíselného programování minimalizovat za podmínek n n c ij x ij (3.7) i=0 j=0 n x ij = 1, j = 1, 2,..., n, (3.8) i=0 n x ij = 1, i = 1, 2,..., n, (3.9) j=0 n x i0 = K, (3.10) i=1 n x 0j = K, (3.11) j=1 u i u j + d j Q(1 x ij ), i, j = 1, 2,..., n, (3.12) d i u i Q, i = 1, 2,..., n, (3.13) x ij {0, 1}, i, j = 0, 1,..., n. (3.14) Omezení (3.12) je obdobou podmínek k eliminaci subcyklů (2.10) navržených pro TSP [42]. Zde kromě eliminace subcyklů také spolu s (3.13) zamezuje vzniku tras s celkovou poptávkou převyšující Q. Je-li totiž x ij = 1, pak u j u i + d j, naopak pokud x ij = 0, podmínka (3.12) je díky (3.13) splněna automaticky. Proměnná u j tak představuje horní odhad aktuálně převezeného nákladu na trase po navštívení zákazníka j. Podmínky (3.8) a (3.9) zajistí, že do každého vrcholu vstupuje, resp. jej opouští právě jedna trasa a podmínky (3.11) a (3.10) zaručí, že z depa vyjede a navrátí se přesně K vozů. Odkázat se s touto formulací můžeme na původní článek [15] nebo [33]. Kromě proměnných x ii = 0 se ještě běžně nevyužívají (pokládají rovny 0) proměnné x ij, pro které platí d i + d j > Q. Pokud nechceme nutně využít všechna vozidla, stačí nahradit (3.10), (3.11) podmínkami n x i0 K, (3.15) i=1 n n x 0j = x i0. (3.16) j=1 i=1 Problém pak bude minimalizovat čistě jen ujetou vzdálenost (tzn. počet vozidel má v účelové funkci nulovou váhu). Jiné formulace místo podmínek (3.12) a (3.13) uvažují nerovnosti x ij r(s), S V \{0}; S, (3.17) i/ S j S 19

kde r(s) značí minimální počet vozidel potřebný k obsloužení všech zákazníků z množiny S, přičemž r(s) stačí nahradit jednoduchou dolní mezí n i=1 d i / Q. Počet těchto nerovností ale exponenciálně roste s n. Tuto a mnoho jiných základních formulací CVRP lze dohledat v již zmiňovaném příspěvku [58]. Z tohoto zdroje uvedeme ještě jeden pěkný model CVRP. Zaveďme binární proměnnou x ijk, která představuje počet, kolikrát vozidlo k použilo hranu (i, j). Dále definujme y ik = 1, pokud zákazník i je obsloužen vozem k, a y ik = 0 jinak. Potom lze CVRP popsat úlohou minimalizovat za podmínek n n K c ij x ijk (3.18) i=0 j=0 k=1 K y ik = 1, i = 1, 2,..., n, (3.19) k=1 K y 0k = K, (3.20) k=1 n n x ijk = x jik = y ik, i = 0, 1,..., n, k = 1, 2,..., K, (3.21) j=0 j=0 u ik u jk + d j Q(1 x ijk ), i, j = 1, 2,..., n, k = 1, 2,..., K, (3.22) d i u ik Q, i = 1, 2,..., n, k = 1, 2,..., K, (3.23) y ik {0, 1}, i = 0, 1,..., n, k = 1, 2,..., K, (3.24) x ijk {0, 1}, i, j = 0, 1,..., n, k = 1, 2,..., K. (3.25) Podmínky (3.19) (3.21) zajistí, že každý klient je navštíven právě jednou, K vozů opouští depo a k daného zákazníkovi přijede a odjede od něj tentýž vůz. Model nalezne využití především u komplexnějších variant rozvozních problémů, kdy přípustnost či cena trasy nezávisí pouze na využitých hranách trasy. V případě různých vozidel například stačí jen přidat index k ke kapacitě Q nebo k ceně c ij. 3.2.1 Clarkova-Wrightova heuristika Clarkova-Wrightova heuristika [5] bývá prezentována také pod názvem savings, neboť v principu se snaží propojovat města i, j, jejichž spojením se ušetří nejvíce nákladů, než kdyby města i, j byla součástí rozdílných tras. j j i i 0 0 Obrázek 3.2: Princip metody savings 20

Pokud i je poslední město jedné trasy a j první město jiné trasy, ušetřené náklady s ij jsou definovány rozdílem (c 0i + c 0j + c i0 + c j0 ) (c 0i + c ij + c j0 ), tedy s ij = c i0 + c 0j c ij. Takto se z matice (c ij ) n i,j=0 vypočtou prvky s ij, i, j 1, i j, které na začátku algoritmus sestupně seřadí a za počáteční řešení zvolí řešení s každým zákazníkem ve vlastní trase. Dále postupuje od nejvyšších s ij, a je-li to možné (nová trasa dává smysl a celková poptávka nepřekročí kapacitu), trasy propojí hranou (i, j). Spojení měst i, j se obecně vyplatí, jen je-li s ij kladné. Pokud ale chceme minimalizovat počet vozidel, můžeme povolit i spojení s s ij < 0. Podle zvolené strategie lze ještě u Clarkovy-Wrightovy heuristiky rozlišovat mezi paralelní a sekvenční verzí. V sekvenční verzi je postupně budována vždy jen jedna trasa (v každém kroku jsou nejprve uvažovány pouze hrany, které lze připojit k poslední vylepšené trase), zatímco v paralelní se trasy spojují libovolně. Pokračujme v příkladu z obrázku 3.1. Vypočteme z matice vzdáleností C matici úspor S. 0 1 2 3 4 5 0 5 6 5 6 2 1 5 2 9 10 6 2 6 2 10 11 7 3 5 9 10 2 6 4 6 10 11 2 7 5 2 6 7 6 7 C 1 2 3 4 5 1 9 1 1 1 2 9 1 1 1 3 1 1 9 1 4 1 1 9 1 5 1 1 1 1 S Nechť je ale nyní Q = 7. Paralelní verze spojí města 1, 2 a 3, 4, obojí s nejvyšší úsporou 9. Dále jakýmkoli způsobem k jedné z tras připojí město 5, všechny možnosti totiž ušetří 1 jednotku nákladů. Oproti tomu sekvenční verze nejprve spojí např. 1, 2 s nejvyšší úsporou a k této trase hned připojí další město s nejvyšší úsporou. V našem případě vybere jednu z možností s úsporou 1. Pokud v tomto kroku vytvoří trasu obsahující 3, již určitě neskončí u optimálního řešení, neboť z důvodu omezené kapacity přichází o možnost využití výhodné hrany (3,4). Paralelní přístup je tedy v tomto případě asi lepší volbou. Ke Clarkově-Wrightově heuristice bylo publikováno mnoho způsobů, jak zlepšit efektivitu algoritmu [1], [25], [59] aj. Zajímavou modifikací je například podobně jako v [1] definování ušetřených nákladů s ij = t(s i ) + t(s j ) t(s i S j ), kde S k značí množinu vrcholů trasy k a t(s k ) je délka optimálního (suboptimálního, pokud je hledáno čistě heuristicky) řešení TSP přes S k. Za jiné zobecnění lze považovat Moleovu-Jamesonovu sekvenční heuristiku 21

[41], kde je na budovanou trasu umístěn zákazník k mezi vrcholy i a j podle kritéria minimálního α(i, k, j) = c ik + c kj λc ij, popřípadě maximálního β(i, k, j) = µc 0k α(i, k, j), kde λ, µ jsou uživatelsky volitelné parametry. Po každém vložení nového zákazníka lze ještě pozměněnou trasu optimalizovat pomocí 3-opt kroků. Obsáhlý popis dalších klasických heuristik pro CVRP (konstrukčních, dvoufázových zahrnujících shlukování, ořezané metody větví a mezí - truncated branch and bound) nalezneme v [38]. Dvoufázové heuristiky obsahují dvě části, shlukování zákazníků a plánování tras. Typickým příkladem je heuristika nazvaná sweep, která nejprve rozdělí zákazníky na skupiny a potom v rámci skupin naplánuje trasy. Lze ji aplikovat na CVRP se zákazníky rozmístěnými v rovině. Algoritmus si nejprve vybere libovolného zákazníka a k němu do skupiny přiřazuje další, kterým například nejméně vzroste úhel v polárním systému souřadnic, samozřejmě dokud je možné obsloužit zákazníky jedním vozem. Ve druhé fázi pro každou skupinu zvlášť řeší problém obchodního cestujícího. Historie vývoje klasických heuristických algoritmů je jistě velice zajímavá, nicméně dnes již podobné algoritmy většinou naleznou nějaké přípustné řešení v minimálním čase a málokdy tak dokáží naplno využít možnosti dnešní výpočetní techniky. Proto se v posledních letech vývoj heuristických algoritmů ubírá směrem k metaheuristikám, které začínají právě tam, kde nějaká jiná jednoduchá heuristika skončila. Výchozí řešení jako takové samozřejmě má vliv na další průběh algoritmu, jeho kvalita by ovšem na kvalitu nejlepšího výsledku metaheuristiky téměř neměla mít vliv. V této práci se budeme zabývat tabu prohledáváním v rámci problému VRP s časovými okny. Protože VRP s časovými okny přímo zobecňuje CVRP, nebude problém algoritmus změnami parametrů přizpůsobit potřebám CVRP. 3.3 Rozvozní problém s časovými okny Rozvozní problém s časovými okny (VRPTW - vehicle routing problem with time windows) je přímým zobecněním CVRP. Nově obsluha zákazníka i musí začít v daném časovém intervalu [a i, b i ], b i a i 0. Vozidlům je povolen příjezd před okamžikem a i, pak ale musí čekat, až bude klient k dispozici. Příjezdy později než v čase b i povoleny nejsou. Protože porušení časových oken není povoleno, jedná se o problém s tzv. tvrdými časovými okny. Měkká časová okna porušení povolují obvykle za cenu penalizace v účelové funkci. V praktických situacích se omezení na časová okna přirozeně objevují. Často mohou být zákazníci obslouženi jen v určitých časových intervalech jako např. provozní doba, doba před otevřením obchodu apod. Proto je VRPTW důležitý optimalizační problém. VRPTW přejde v CVRP, když a i = 0 a b i =, i V. Odtud je opět jasná NP-obtížnost problému. Odpověď na otázku, zda vůbec existuje přípustné řešení problému VRPTW (TSPTW) je samo o sobě silně NP-úplný problém [51]. 22