VUT Brno Fakulta informačních technologií Simulační nástroje a techniky (SNT) 2014/2015 Vehicle routing problem Ant colony František Němec (xnemec61) xnemec61@stud.fit.vutbr.cz 19. července 2015 1 Úvod Práce řeší Capacited Vehicle Routing Problem (CVRP) a je založena na článku s řešením pomocí Ant Colony System techniky [1]. Článek je z velké části zaměřen na detailní popis základu algoritmu a poté základní model rozšiřuje o řešení multi-compartment problému a využití k-means algoritmu pro tzv. clustering. Experimenty v článku jsou provedeny na několika často v literatuře používaných problémech [2]. V následujících kapitolách je popsán hlavní koncept Ant Colony techniky s její implementací, která je ověřena experimenty, jenž jsou následně vyhodnoceny a porovnány s výsledky uvedené v článku. 2 Vehicle Routing Problem Vehicle Routing Problem je optimalizační problém, který lze definovat jako hledání nejkratší cesty v grafu. V základním formátu se jedná o hledání nejkratší cesty, ale existuje několik rozšíření, která kladou další omezení. Mezi některá patří: Capacitated Vehicle Routing Problem (CVRP), kde jsou vozidla limitována svojí kapacitou nebo Vehicle Routing Problem with Time Windows (VRPTW), kde každý zákazník obsahuje časový interval kdy může být obsloužen. Vehicle Routing Problem má praktické využití např. v logistice pro minimalizaci nákladů na provoz vozidel nebo šetření životního prostředí snížením objemu výfukových plynů. Existuje mnoho metod pro jejich řešení, mezi která např. patří Particle Swarm Optimization [4], genetické algoritmy, simulované žíhání, Tabu Search [3] nebo Ant Colony [1]. 3 Koncept Ant Colony Existují mnohé varianty a rozšíření Ant Colony metody, ale tato práce (a článek) je založen na základní metodě Ant Colony Optimization (ACO), kterou dále rozšiřuje a která se nazývá Ant Colony System (ACS). 3.1 Ant Colony Optimization ACO algoritmus má dvě hlavní fáze: konstrukce trasy a obnova feromonových stop. Při konstrukci trasy mravenci souběžně budují cesty, přičemž začínají z náhodně zvolených uzlu (zákazníku). V každém kroku mravenec k aktuálně na uzlu i provede rozhodnutí k jakému dalšímu uzlu jít. Rozhodnutí je ovlivněno dvěma základními hodnotami: Heuristická funkce η ij, která vyjadřuje atraktivnost přechodu z uzlu i do uzlu j. Obvykle je tato funkce definována jako inverze ceny/vzdálenosti hrany mezi danými uzly. Úroveň feromonu na hraně (i, j) označena τ ij, která určuje jak moc byla v minulosti hrana používána. 1
Pravděpodobnost výběru uzlu n pro následující přechod mravence je následující: N k i p k in = (τ in ) α (η in ) β l N k i (τ il ) α (η il ) β (1) je množina přípustných uzlů (uzly do kterých lze přistoupit z uzlu i a zároveň ještě nebyly navštíveny) a α, β jsou heuristické parametry. Pokud však n / Ni k, pak je pravděpodobnost pk in = 0, neboli do nepřístupných uzlu je pravděpodobnost přechodu nulová. Jakmile všichni mravenci dokončí tvorbu tras je provedena aktualizace feromonových stop. To je provedeno snížením úrovně stopy na všech hranách (to reprezentuje vypaření a má za následek zapomenutí některých přechodů a podnícení prohledávání nových cest) a zvýšení úrovně feromonu na hranách, které byly překročeny. 3.2 Ant Colony System Ant Colony System (ACS) vylepšuje ACO v následujících aspektech: Konstrukce trasy: Při konstrukci trasy mravenec k na uzlu i přechází do uzlu n podle následujícího pravidla. Je vygenerováno náhodné číslo q rovnoměrného rozložení v intervalu [0,1] a když q > q 0, pak je uzel n zvolen podle standardního ACO pravidla (1) (s α = 1) v opačném případě je uzel zvolen následovně: n = arg max j N k i {(τ ij )(η ij ) β } (2) Tedy s pravděpodobností q 0 mravenec provede přechod s nejsilnější úrovní feromonové stopy, kdežto s pravděpodobností (1 q 0 ) provede náhodný přechod na základě feromonových stop. Aktualizace feromonů: ACS metoda používá dva typy aktualizace feromonů: lokální a globální. Lokální aktualizace je provedena vždy, když mravenec přejde hranu (i, j) (zvolí nový uzel) a feromon je upraven následovně: τ ij (1 ξ)τ ij + ξτ 0 (3) kde 0 < ξ < 1 a τ 0 je počáteční úroveň feromonu definována jako τ 0 = (NL nn ) 1, kde L nn je délka trasy při výběru nejbližšího souseda (trasa, kde každý přechod je proveden k nejbližšímu ještě nenavštívenému uzlu) a N je počet uzlů/zákazníků. Globální aktualizace je na druhou stranu provedena jen na hranách doposud nejlepší nalezené trasy a je implementována následující rovnicí: τ ij (1 ρ)τ ij + ρ τ bs ij, (i, j) T bs (4) kde τ bs ij = (Lbs ) 1, ρ je parametr řídící slábnutí feromonů a T bs je aktuálně nejlepší nalezená trasa s délkou L bs. To umožňuje algoritmu rychleji konvergovat koncentrací prohledávání okolo nejlepší trasy. Dalším rozšířením ACS algoritmu (nutné pro řešení CVRP) je zakomponování požadavků každého uzlu, kapacit mravenců a nutnost vracení do depa kvůli vyložení nákladu, aby nebyla překročena kapacita mravenců (v reálném světě kapacita vozidla). 4 Implementace Velice detailní popis ACS algoritmu se nachází přímo v článku, avšak vyskytuje se v něm chyba. V článku počítají přesný počet kroků potřebných na dokončení celé trasy. Výpočet je proveden na základě počtu nutných cest do depa podle depott rip = ceiling( v i /V ), kde v i je velikost požadavku zákazníka i a V je kapacita vozidla. Celkový počet kroků odpovídá steps = depott rip + N, kde N je počet uzlů/zákazníků. To však nemusí být pravda. Uved me příklad: 3 zákazníci každý s požadavkem 2 a vozidlo s kapacitou 3. Podle výše uvedeného vzorce je počet kroků roven steps = (3 2)/3 + 3 = 5. Požadavky ale nelze dělit a po obsloužení každého zákazníka vozidlo se musí navrátit do depa, protože by jinak překročilo svoji kapacitu a opravdový počet kroků se rovná steps = 6. 2
Výsledný algoritmu kombinuje několik technik. Pro nastavení τ 0 je použito Greedy prohledávání (prohledávání nejbližšího souseda). Po sestavení tras je aplikováno 2-opt vylepšení, což výrazně zlepšuje celkové výsledky. Vliv 2-opt je podroben testům v kapitole 5.1. Je vhodné zmínit, že v konečném algoritmu byl opomenut parametr α, protože v experimentech vždy nabývá hodnoty 1 a případně ho lze nahradit vhodnou volbou parametru β. Další důležitou informací je, že hrany mezi uzly se považují za neorientované. V článku nikde není tato informace explicitně uvedena a z teoretické popisu spíše vyplývá, že hrany jsou orientované. Nicméně vliv orientace hran byl testován a výsledky jsou, stejně jako 2-opt, popsány v kapitole 5.1. Algoritmus 1 obsahuje zjednodušený popis implementace ACS algoritmu. Algoritmus 1 Pseudokód vlastní implementace ACS algoritmu 1: for počet iterací do 2: Inicializace nenavštívených uzlů každého mravence 3: Rozmístění mravenců na náhodné počáteční uzly 4: while existují mravenci, kteří nedokončili konstrukci trasy do 5: Sestavení přípustných uzlů (nenavštívené uzly + uzly s dostatečně malým požadavkem) 6: if Seznam přípustných uzlů je prázdný (mravenec je příliš naložen) then 7: Cesta do depa 8: Vyložení nákladů 9: else 10: if mravenec se nachází depu then 11: Následující uzel je vybrán náhodně 12: else 13: Generace náhodné proměnné q v rozsahu [0,1) 14: if q > q 0 then 15: Výpočet pravděpodobností přechodů podle vzorce (1) 16: Výběr konkrétního uzlu ruletovým výběrem 17: else 18: Výběr uzlu na základě největší pravděpodobnosti (vzorec (2)) 19: end if 20: end if 21: Zvýšení nákladu mravence podle požadavku nového uzlu 22: end if 23: Lokální aktualizace feromonu na hraně posledního a nového uzlu 24: end while 25: Aplikace 2-opt vylepšení na trasy všech mravenců 26: Kontrola zda některý z mravenců našel novou nejlepší/nejkratší trasu 27: Globální aktualizace feromonových stop podle doposud nejlepší nalezené trase 28: end for Hlavní třídy simulátoru: Ant základní blok algoritmu. Field třída obsahující informace o feromonových stopách a vzdálenostech mezi uzly. Parameters singleton třída s parametry algoritmu jako β, q 0, ξ, ρ, počet běhů, počet iterací, počet mravenců. TwoOpt implementace 2-opt. VRP Vehicle Routing Problem, seznam uzlů s jejich požadavky a další omezení jako kapacita vozidla. VRPSolver jádro simulátoru. Třída s hlavními metodami Ant Colony System algoritmu. 5 Experimenty Cílem experimentů je ověřit správnost implementace algoritmu z článku [1] (dosáhnout stejných výsledků). Experimenty jsou provedeny (stejně jako v článku) na často používané sadě CVRP problémů shromážděné 3
panem Christofides [2]. Konkrétní vybrané problémy: C1, C2, C3, C11 a C12. Každý problém je definován následovně: souřadnice depa (x 0, y 0 ) souřadnice uzlů/zákazníků {(x i, y i ) i = 1,.., N} spolu s jejich požadavky {v i i = 1,.., N} kapacita vozidla V Parametry jsou taktéž stejné α = 1, β = 2, q 0 = 0, 9, ξ = ρ = 0.1. Počet mravenců je stejný jako počet uzlů konkrétního problému a počet iterací je zvolen na hodnotu 2000. Jelikož je Ant Colony stochastická metoda jeden běh nemá žádnou vypovídací hodnotu. V článku pro každý problém zvolili 10 běhů. V tabulce 1 jsou uvedeny výsledky experimentů (nejlepší, průměrná a nejhorší délka trasy) z článku a z vlastní implementace. Na grafu 1 je grafické porovnání průměrných délek tras z článku a vlastní implementace (u nejlepších a nejhorších délek je situace velice podobná). Článek Vlastní implementace Nejlepší Průměr Nejhorší Nejlepší Průměr Nejhorší C1 524,61 536,24 546,36 524,93 535,57 543,11 C2 877,75 907,46 933,15 875,56 890,72 902,85 C3 919,67 946,29 970,45 909,86 935,21 951,76 C11 1372,95 1418,03 1448,79 1048,06 1054,91 1067,43 C12 1147,20 1240,49 1294,59 846,98 848,52 851,79 Tabulka 1: Porovnání výsledků (délek tras) experimentů z článku a výsledků vlastní implementace Obrázek 1: Graf porovnání průměrných hodnot experimentů z článku a vlastní implementace Výsledky vlastní implementace jsou dokonce lepší než výsledky uvedené v článku. Nejsem si vědom žádného většího odklonění od konkrétního algoritmu z článku. Hlavním rozdílem je již zmíněný problém počítání přesného počtu kroků, ale to má za následek vytváření nevalidních tras a jejich zkrácení. Druhým rozdílem by mohla být orientace hran o které se v článku nepíše, ale z experimentů v následující kapitole vychází, že tak velký vliv orientace hran nemá. Pro vylepšení situace problémů C11 a C12 v článku implementovali k-means pro clustering. Nicméně i po jejich vylepšení vlastní implementace stále dosahuje lepších výsledků. Průměrné délky tras s clustering vylepšením z článku jsou pro C11 1193,07 a pro C12 1013,10, což je stále horší než výsledky vlastní implementace bez clustering vylepšení (C11 1054,91 a C12 848,52) 4
5.1 2-opt a orientace hran Vliv 2-opt byl testován na problémech C1 a C2, ale lze s jistotou předpokládat podobné výsledky i u ostatních problémů. Parametry testů jsou stejné jako v hlavních experimentech: α = 1, β = 2, q 0 = 0, 9, ξ = ρ = 0.1, 25 běhů, 2000 iterací, 50 mravenců pro C1, 75 mravenců pro C2. Z výsledků (tabulka 2) je zřejmé, že 2-opt výrazně zlepšuje výsledky celého algoritmu a to až o několik procent. Průměr Směrodatná odchylka Bez 2-opt S 2-opt Zlepšení Bez 2-opt S 2-opt Zlepšení C1 582,72 533,46 8,5% 10,62 6,36 40,0% C2 975,53 897,99 7,9% 12,01 10,40 13,5% Tabulka 2: Vliv 2-opt na výsledné délky tras Stejně jako vliv 2-opt testování proběhlo na problémech C1 a C2 (tabulka 3) při stejných parametrech. Z experimentů porovnávající orientované oproti neorientované hrany byly zjištěny lepší výsledky při neorientovaných hranách. Zlepšení o skoro 1% sice není tak markantní jako u 2-opt, ale zase není úplně zanedbatelné. Průměr Směrodatná odchylka Orientované Neorientované Zlepšení Orientované Neorientované Zlepšení C1 537,36 533,46 0,7% 5,27 6,36-20,6% C2 905,13 897,99 0,8% 12,17 10,40 16,5% Tabulka 3: Vliv orientace hran na výsledné délky tras 6 Závěr Cílem práce bylo replikovat model Ant Colony System z článku [1] pro řešení Vehicle Routing Problem a ověřit správnou implementaci. Model byl implementován v jazyce C++, jak v konzolové verzi tak s uživatelským rozhraním, které je v Qt frameworku. Z experimentů vyplývá, že vlastní implementace poskytuje lepší výsledky než původní algoritmus z článku i když neimplementuje clustering vylepšení. Důvod zlepšení výsledků není zcela znám. V článku se také zabývají multi-compartment problémem a jeho aplikaci na sběr papíru a skla, které v této práci není implementováno a bylo by vhodné jako rozšíření modelu. Stejně tak nebylo implementováno k-means pro clustering, protože i bez něj základní implementace dosáhla dobrých výsledků. Nicméně by mohlo být zajímavé clustering implementovat a sledovat zda se výsledky ještě nezlepší. Další rozšíření by se mohla týkat paralelizace, protože v aktuální stavu implementace využívá jen jedno jádro. U experimentů však byl tento nedostatek nahrazen několikanásobným spuštěním programu, které už běžely paralelně. Další experimenty by mohly být založeny na nalezení vhodných hodnot parametrů, které poskytují nejlepší výsledky nebo provést jejich metaoptimalizaci. Reference [1] M. Reed, A. Yiannakou, R. Evering. 2014. An ant colony algorithm for the multi-compartment vehicle routing problem. Applied soft computing. (15): 169-176. ISSN 1568-4946. Dostupné také z: http: //www.sciencedirect.com.ezproxy.lib.vutbr.cz/science/article/pii/s1568494613003517 [2] N. Christofides, A. Mingozzi, P. Toth. The vehicle routing problem, in: N.Christofides, A. Mingozzi, P. Toth, C. Sandi (Eds.). Combinatorial Optimization. Wiley, Chichester. 1979, 315 338. [3] S.R. Thangiah. A hybrid genetic algorithms, simulated annealing and tabusearch heuristic for vehicle routing problems with time windows. in: L.Chambers (Ed.), Practical Handbook of Genetic Algorithms, vol. III: ComplexStructures, CRC Press, Boca Raton. 1999, 347 381. [4] M.R. Khouadjia, B. Sarasola, E. Alba, L. Jourdan, E.-G. Talbi. A comparative studybetween dynamic adapted PSO and VNS for the vehicle routing problem withdynamic requests. Applied Soft Computing 12 (2012) 1426 1439. 5