´ UCEN ˇ ´I TECHNICKE ´ V BRNE ˇ VYSOKE BRNO UNIVERSITY OF TECHNOLOGY
ˇ YRSTV ´ ´I FAKULTA STROJN´IHO INZEN ´ USTAV MATEMATIKY FACULTY OF MECHANICAL ENGINEERING INSTITUTE OF MATHEMATICS
´ MODELY DOPRAVN´ICH ULOH ´ MATEMATICKE MATHEMATICAL MODELS FOR TRANSPORTATION PROBLEMS
´ RSK ˇ A ´ PRACE ´ BAKALA BACHELOR’S THESIS
´ AUTOR PRACE
´ HELENA PASCHKEOVA
AUTHOR
´ VEDOUC´I PRACE SUPERVISOR
BRNO 2012
RNDr. PAVEL POPELA, Ph.D.
Vysoké učení technické v Brně, Fakulta strojního inženýrství Ústav matematiky Akademický rok: 2011/2012
ZADÁNÍ BAKALÁŘSKÉ PRÁCE student(ka): Helena Paschkeová který/která studuje v bakalářském studijním programu obor: Matematické inženýrství (3901R021) Ředitel ústavu Vám v souladu se zákonem č.111/1998 o vysokých školách a se Studijním a zkušebním řádem VUT v Brně určuje následující téma bakalářské práce: Matematické modely dopravních úloh v anglickém jazyce: Mathematical models for transportation problems Stručná charakteristika problematiky úkolu: Student se seznámí s problematikou matematických modelů dopravních úloh, včetně jejich významu pro logistické aplikace. Zaměří se zejména na úlohy matematického programování s důrazem na úlohy o toku v sítích a úlohy založené na modifikacích úlohy obchodního cestujícího. Budou studovány vlastnosti vybraných úloh, modifikovány algoritmy a realizovány testovací výpočty s využitím dat z realných aplikací. Cíle bakalářské práce: Předpokládá se vývoj původních i modifikace existujících modelů a algoritmů a jejich aplikace v návaznosti na problémy řešené v rámci spolupráce ústavu matematiky FSI VUT v Brně se specialisty v oblasti logistiky z norské Molde University College (prof. Kjetil Kare Haugen).
Seznam odborné literatury: Christofides. N. .: Graph Theory - an Algorithmic Approach. Academic Press 1975. Wolsey L. A.: Integer programming. John Wiley and Sons, 1998. Ghiani, G., Laporte, G., Musmanno, R.: Introduction to Logistics Systems Planning and Control. John Wiley and Sons, New York, 2004.
Vedoucí bakalářské práce: RNDr. Pavel Popela, Ph.D. Termín odevzdání bakalářské práce je stanoven časovým plánem akademického roku 2011/2012. V Brně, dne 29.10.2011 L.S.
_______________________________ prof. RNDr. Josef Šlapal, CSc. Ředitel ústavu
_______________________________ prof. RNDr. Miroslav Doupovec, CSc., dr. h. c. Děkan fakulty
Abstrakt Pr´ace se zab´ yv´a modelov´an´ım a ˇreˇsen´ım vybran´ ych dopravn´ıch u ´loh. Nejprve jsou uvedeny historick´e postˇrehy, praktick´e poznatky a formulov´any vybran´e probl´emy. Potom se pr´ace vˇenuje modelov´an´ı vybran´ ych dopravn´ıch u ´loh pomoc´ı matematick´eho (line´arn´ıho a celoˇc´ıseln´eho) programov´an´ı a teorie graf˚ u. Pozornost je pˇredevˇs´ım vˇenov´ana probl´emu obchodn´ıho cestuj´ıc´ıho a r˚ uzn´ ym metod´am jeho ˇreˇsen´ı a jejich modifikac´ım. V pr´aci jsou rovnˇeˇz uvedeny koment´aˇre k origin´aln´ı programov´e implementaci model˚ u a algoritm˚ u, a to jak model˚ u v syst´emu GAMS, tak grafov´ ych algoritm˚ u v jazyce Python. Algoritmy ˇ Vysledky testov´an´ı byly testov´any na u ´loze zahrnuj´ıc´ı 73 b´ yval´ ych okresn´ıch mˇest v CR. jsou v z´avˇereˇcn´e ˇca´sti porovn´any a vyhodnoceny. Summary The thesis deals with modelling and solution techniques for the selected transportation problems. Firstly, historical remarks and application-related comments are introduced. Then the selected transportation problems are defined and mathematical programming and graph theory concepts are utilised to model them. The travelling salesman problem and suitable algorithms are under focus. The original implementation in GAMS and Python is discussed. Algorithms have been tested for the instance based on the set of 73 towns in the Czech Republic. Finally, the test results are evaluated and compared. Kl´ıˇ cov´ a slova dopravn´ı u ´lohy, optimalizace, teorie graf˚ u, probl´em obchodn´ıho cestuj´ıc´ıho, heuristiky Keywords transportation problem, optimization, graph theory, travelling salesman problem, heuristics
´ H. Matematick´e modely dopravn´ıch u PASCHKEOVA, ´loh. Brno: Vysok´e uˇcen´ı technick´e v Brnˇe, Fakulta strojn´ıho inˇzen´ yrstv´ı, 2012. 60 s. Vedouc´ı RNDr. Pavel Popela, Ph.D.
Prohlaˇsuji, ˇze jsem bakal´aˇrskou pr´aci Matematick´e modely dopravn´ıch u ´loh vypracovala samostatnˇe s pouˇzit´ım materi´al˚ u uveden´ ych v seznamu literatury. Helena Paschkeov´a
R´ada bych zde podˇekovala vedouc´ımu bakal´aˇrsk´e pr´ace RNDr. Pavlu Popelovi, PhD. za jeho cenn´e rady a ˇcas, kter´ y mi vˇenoval pˇri ˇreˇsen´ı dan´e problematiky. V neposledn´ı ˇradˇe tak´e dˇekuji vˇsem, kteˇr´ı se pod´ıleli na jazykov´e korektuˇre t´eto bakal´aˇrsk´e pr´ace. Helena Paschkeov´a
Obsah 1 Dopravn´ı u ´ lohy 1.1 Historie . . . . . . . . . . . . . 1.2 Praktick´e poznatky . . . . . . . 1.3 Typy u ´loh . . . . . . . . . . . . 1.4 Probl´em obchodn´ıho cestuj´ıc´ıho 1.5 Probl´em ˇc´ınsk´eho listonoˇse . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
13 13 13 14 15 16
2 Matematick´ e programov´ an´ı 2.1 Line´arn´ı programov´an´ı . . . . . . . 2.1.1 Model dopravn´ı u ´lohy . . . ´ 2.2 Ulohy celoˇc´ıseln´eho programov´an´ı . 2.2.1 Model probl´emu obchodn´ıho
. . . . . . . . . . . . . . . . . . . . . cestuj´ıc´ıho .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
17 17 18 21 22
3 Teorie graf˚ u 3.1 Z´akladn´ı pojmy . . . . . . 3.2 Cykly v grafu . . . . . . . 3.2.1 Hamilton˚ uv cyklus 3.2.2 Euler˚ uv cyklus . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
25 25 28 28 29
4 Heuristiky 4.1 V´ yznam heuristik . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 Heuristiky pro u ´lohu obchodn´ıho cestuj´ıc´ıho . . . . . . . . . . 4.2.1 Metoda hled´an´ı nejbliˇzˇs´ıho souseda . . . . . . . . . . . 4.2.2 Metoda hladov´eho algoritmu . . . . . . . . . . . . . . . 4.2.3 Metoda vkl´ad´an´ı mˇest do trasy . . . . . . . . . . . . . 4.2.4 Metoda dvojit´e minim´aln´ı kostry grafu . . . . . . . . . 4.2.5 Christofidesova metoda . . . . . . . . . . . . . . . . . . 4.3 Algoritmy pro zlepˇsen´ı vlastnost´ı trasy obchodn´ıho cestuj´ıc´ıho 4.3.1 2-optim´aln´ı algoritmus . . . . . . . . . . . . . . . . . . 4.3.2 3-optim´aln´ı algoritmus . . . . . . . . . . . . . . . . . . 4.3.3 k-optim´aln´ı algoritmus . . . . . . . . . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
31 31 31 32 34 35 36 37 39 39 43 46
. . . .
. . . .
. . . .
. . . . .
. . . .
. . . . .
. . . . .
. . . .
. . . . .
. . . .
. . . . .
. . . .
. . . . .
. . . .
. . . . .
. . . .
. . . . .
. . . .
. . . .
5 Porovn´ an´ı v´ ysledk˚ u testov´ an´ı metod
47
6 Pokroˇ cil´ e algoritmy a modely 51 6.1 Pokroˇcil´e algoritmy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 6.2 Vehicle routing problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 7 Z´ avˇ er
55
8 Pˇ r´ılohy 8.1 Minim´aln´ı kostra grafu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.2 Algoritmus pro minim´aln´ı p´arov´an´ı v grafu . . . . . . . . . . . . . . . . . . 8.3 Seznam pˇr´ıloh na CD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
59 59 59 60
11
1. Dopravn´ı u ´ lohy Za dopravn´ı u ´lohy a logistiku oznaˇcujeme organizaci, pˇrepravu a uskladnˇen´ı materi´alu ˇci v´ yrobk˚ u na cestˇe k z´akazn´ıkovi a pˇrepravu samotn´ ych osob z jednoho m´ısta na jin´e. [4] Pˇrestoˇze mˇelo slovo logistika dˇr´ıve ˇcistˇe vojensk´ y v´ yznam, dnes se t´ yk´a pˇrev´aˇznˇe distribuce v´ yrobk˚ u kaˇzdodenn´ı potˇreby. C´ılem je vytvoˇrit syst´em, ve kter´em je ten spr´avn´ y produkt pˇrepraven na dan´e m´ısto v dan´ y ˇcas. Tento probl´em, aˇc se zd´a jednoduch´ y, zahrnuje rozs´ahlou problematiku od z´asobov´an´ı po koneˇcn´ y prodej a mohou na nˇem z´aviset dokonce i lidsk´e ˇzivoty. M´alokter´a firma totiˇz zajiˇst’uje cel´ y v´ yrobn´ı cyklus od vytˇeˇzen´ı surovin aˇz po distribuci v´ yrobk˚ u a mus´ı se proto spol´ehat i na subdodavatele. Nav´ıc mnoho z´akazn´ık˚ u si dnes jiˇz zvyklo na trh s neust´al´ ym pˇr´ısunem nov´ ych model˚ u, kter´e nut´ı firmy k inovac´ım a tedy i neust´al´emu v´ yvoji a vyuˇz´ıv´an´ı nov´ ych materi´al˚ u. T´ım se se s´ıt’ pˇrepravy materi´al˚ u a v´ yrobk˚ u mˇen´ı takˇrka kontinu´alnˇe. Pˇri tomto procesu, kter´ y je pro kaˇzdou firmu nepostradateln´ y, doch´az´ı k utr´acen´ı nemal´eho mnoˇzstv´ı penˇez, a proto se jej firmy snaˇz´ı co nejv´ıce zefektivnit. K tomu jim pom´ahaj´ı modern´ı modely dopravn´ıch s´ıt´ı, kter´e jsou schopny pˇrizp˚ usobit se zmˇenˇe dodavatel˚ u i odbˇeratel˚ u a uˇsetˇrit pen´ıze, kter´e mohou b´ yt reinvestov´any do v´ yzkumu.
1.1. Historie Historie ˇreˇsen´ı dopravn´ıch u ´loh zaˇc´ın´a v polovinˇe 19. stolet´ı pˇri rozvoji manufaktur ve vˇetˇs´ıch mˇestech a rozvoji s´eriov´e v´ yroby. Z poˇca´tku bylo moˇzn´e v´ yrobky dod´avat jen do nejbliˇzˇs´ıho okol´ı tov´aren, protoˇze doprava zboˇz´ı byla drah´a. Nejv´ıce vyuˇz´ıvanou dopravou zboˇz´ı na vˇetˇs´ı vzd´alenosti byly lodˇe (pˇredevˇs´ım z Indie a jin´ ych koloni´ı). Sn´ıˇzen´ı n´aklad˚ u na dopravu prob´ıhalo jednoduˇse tak, ˇze se lodˇe naloˇzily vˇzdy pln´e a jednotliv´ı prodejci se domlouvali na rozdˇelen´ı n´aklad˚ u na pˇrepravu. V pr˚ ubˇehu 19. stolet´ı doˇslo k rozvoji ˇ ˇzelezniˇcn´ı s´ıtˇe a t´ım i dopravy vnitrozemsk´e. Zelezniˇcn´ı doprava pˇrispˇela pˇredevˇs´ım k rozvoji na z´apadn´ı stranˇe Spojen´ ych st´at˚ u americk´ ych, kam se dopravovalo mnoho v´ yrobk˚ u z v´ ychodu zemˇe. Opravdov´a revoluce pˇriˇsla ale aˇz s vyn´alezem automobilu na pˇrelomu 19. a 20. stolet´ı. Auta byla relativnˇe levn´a, zp˚ usobila rozvoj silniˇcn´ı s´ıtˇe a umoˇznila dopravovat individu´alnˇe mnohem menˇs´ı z´asilky neˇz vlakem nebo lod´ı a to pˇr´ımo na m´ısto urˇcen´ı. D´ıky rozvoji silniˇcn´ı s´ıtˇe se mnohon´asobnˇe rozrostly moˇznosti dopravy a pˇrepravy zboˇz´ı k z´akazn´ıkovi. Proto se tak´e ve 30. letech zaˇc´ın´a hovoˇrit o tzv. dopravn´ı u ´loze, tedy minimalizov´an´ı n´aklad˚ u na distribuci zboˇz´ı. Rozv´ıjej´ıc´ı se teorie je pak vyuˇz´ıv´ano i v pr˚ ubˇehu druh´e svˇetov´e v´alky k z´asobov´an´ı arm´ad. Po v´alce doch´az´ı k prudk´emu rozvoji dopravn´ı techniky (d´ıky v´aleˇcn´ ym technologi´ım) a zefektivnˇen´ı dopravn´ıch s´ıt´ı aˇz do dneˇsn´ıch dn´ı. V´ıce o historii viz [5].
1.2. Praktick´ e poznatky V praxi je tˇreba zajistit pˇrepravu v´ yrobk˚ u od v´ yrobce k odbˇerateli a minimalizovat moˇzn´a zpoˇzdˇen´ı a prodraˇzov´an´ı zak´azek. V angliˇctinˇe se takov´ y postup oznaˇcuje jako Supply chain. Jedn´a se o komplexn´ı logistick´ y syst´em, kter´ y zaˇc´ın´a u v´ ybˇeru a dovozu z´akladn´ıch surovin, pokraˇcuje zpracov´an´ım v pˇr´ısluˇsn´ ych z´avodech a skladov´an´ım v meziskladech a konˇc´ı u koneˇcn´eho z´akazn´ıka. Typick´ y pˇr´ıklad vid´ıme na obr´azku 1.1. V pr˚ ubˇehu zpra-
13
cov´an´ı surovin na v´ yrobky m˚ uˇzeme zvolit i strategii v´ yroby polotovar˚ u. V´ yroba tedy m˚ uˇze b´ yt rozdˇelena na v´ıce z´avod˚ u, ˇci m˚ uˇzeme hotov´e polotovary pˇr´ımo nakupovat.
Obr´azek 1.1: Sch´ema distribuce v´ yrobk˚ u [4] Logistika se ale ˇcasto v´ yrobou a konkr´etn´ım zpracov´an´ım v r´amci jednotliv´ ych z´avod˚ u nezab´ yv´a a povaˇzuje je za objekty, pro kter´e staˇc´ı vˇedˇet potˇrebn´e vstupy, v´ ystupy a dobu zpracov´an´ı materi´alu na v´ yrobek. Pokud se soustˇred´ıme na konkr´etn´ı v´ yrobek, kter´ y v pr˚ ubˇehu sv´eho vzniku projde cel´ ym t´ımto syst´emem, m˚ uˇzeme rozliˇsit dva z´akladn´ı modely distribuce: • push supply chains jsou modely distribuce v´ yrobk˚ u takov´e, kde jsou v´ yrobky zpracov´av´any pr˚ ubˇeˇznˇe a jejich mnoˇzstv´ı je regulov´ano pomoc´ı pˇredpovˇedi popt´avky. K tˇemto v´ yrobk˚ um patˇr´ı drtiv´a vˇetˇsina komerˇcnˇe zpracov´avan´eho zboˇz´ı. • pull supply chains jsou modely distribuce, kde je v´ yrobek vyroben pouze v pˇr´ıpadˇe, ˇze o nˇej z´akazn´ık poˇz´ad´a. Jedn´a se tedy pˇredevˇs´ım o kusovou v´ yrobu. Pro distribuci v´ yrobk˚ u v praxi lze pak vyuˇz´ıt kombinaci obou metod a to tak, ˇze jednotliv´e polotovary zpracov´av´ame pr˚ ubˇeˇznˇe a koneˇcn´e v´ yrobky sestavujeme aˇz po vyˇza´d´an´ı z´akazn´ıka. Zkr´at´ıme t´ım podstatnˇe dobu v´ yroby u pull syst´emu, ale z´aroveˇ n m´ame vˇetˇs´ı variabilitu v´ yrobk˚ u oproti push syst´emu. D˚ uleˇzit´e je uvˇedomit si nejen cestu v´ yrobku k z´akazn´ıkovi, ale z´aroveˇ n i cestu od z´akazn´ıka k v´ yrobci. Pokud dojde v jak´emkoli stupni v´ yroby k z´avadˇe na v´ yrobku, je tˇreba jej opravit. Pokud z´avadu objev´ı aˇz z´akazn´ık, je tˇreba zajistit pˇrevoz zpˇet do z´avodu a opravu. Pokud je tedy pˇrepravn´ı s´ıt’ zvolena nevhodnˇe a pˇreprava samostatn´eho vadn´eho v´ yrobku zpˇet je vedena neefektivnˇe, m˚ uˇze nastat i pˇr´ıpad, kdy vadn´e v´ yrobky jednoduˇse vyhazujeme a ztr´ac´ıme tak i pˇr´ıpadn´e n´ahradn´ı d´ıly na dalˇs´ı v´ yrobky.
1.3. Typy u ´ loh V pˇr´ıpadˇe sestavov´an´ı jak´ehokoli modelu je tˇreba si uvˇedomit, kter´e skuteˇcnosti jsou natolik podstatn´e, ˇze je nezbytnˇe nutn´e je do modelu zahrnout. Vˇetˇsinou staˇc´ı pouze 14
vytvoˇrit model m´ıst d˚ uleˇzit´ ych pro v´ yrobu a distribuci a vz´ajemn´ ych cest mezi nimi. Mohou zde b´ yt ovˇsem i poˇzadavky na pˇrevoz v´ yrobku, kter´ y m˚ uˇze b´ yt kˇrehk´ y, chemicky nebezpeˇcn´ y nebo rychle se kaz´ıc´ı. M˚ uˇze se jednat napˇr´ıklad i o ˇziv´a zv´ıˇrata. Z´aroveˇ n mohou m´ıt z´akazn´ıci poˇzadavky na ˇcas doruˇcen´ı a je tedy tˇreba navˇst´ıvit z´akazn´ıky v urˇcit´em ˇcasov´em poˇrad´ı. Pˇri vykl´ad´an´ı a nakl´ad´an´ı zboˇz´ı je tˇreba zv´aˇzit, zda je potˇreba tuto ˇcasovou prodlevu zanedbat nebo je podstatn´a vzhledem k dobˇe pˇrepravy. Obecnˇe se vˇsak snaˇz´ıme modely vytv´aˇret co nejjednoduˇsˇs´ı a t´ım si v´ yraznˇe uspoˇrit pr´aci a v´ ypoˇcetn´ı ˇcas. D´ale se ve zbytku pr´ace budeme zab´ yvat pouze ˇreˇsen´ım probl´em˚ u, kter´e z´avis´ı na pˇrepravˇe mezi dan´ ymi m´ısty a nebudeme uvaˇzovat ˇza´dn´e speci´aln´ı poˇzadavky na v´ yrobky nebo od z´akazn´ık˚ u. Rozebereme si z´akladn´ı u ´lohu pˇrepravy ˇreˇsenou pomoc´ı line´arn´ıho programov´an´ı a d´ale u ´lohu obchodn´ıho cestuj´ıc´ıho, kter´a je d˚ uleˇzitou z´akladn´ı u ´lohou pro ˇreˇsen´ı dalˇs´ıch sloˇzitˇejˇs´ıch u ´loh.
1.4. Probl´ em obchodn´ıho cestuj´ıc´ıho Probl´em obchodn´ıho cestuj´ıc´ıho je jedn´ım z nejzn´amˇejˇs´ıch probl´em˚ u z oblasti diskr´etn´ı optimalizace. Zad´an´ı u ´lohy zn´ı takto: Obchodn´ı cestuj´ıc´ı m´a sch˚ uzku v n mˇestech a chce je navˇst´ıvit v takov´em poˇrad´ı, aby mu cestov´an´ı zabralo nejm´enˇe ˇcasu. Kaˇzd´e mˇesto je navˇst´ıveno minim´alnˇe jednou a po navˇst´ıven´ı vˇsech mˇest se obchodn´ı cestuj´ıc´ı vrac´ı do p˚ uvodn´ıho mˇesta. [13] Jedn´a se tedy o u ´lohu nalezen´ı nejkratˇs´ı cesty mezi vˇsemi mˇesty, kter´e chce dan´ y obchodn´ı cestuj´ıc´ı navˇst´ıvit. Formulace minim´alnˇe jednou“ je ˇcasto nahrazena formulac´ı ” pr´avˇe jednou“. Formulace minim´alnˇe jednou vede na obecnˇejˇs´ı zad´an´ı u ´lohy. Obecnˇe ” totiˇz graf mˇest s cestami m˚ uˇze m´ıt tvar tzv. stromu a nemus´ı b´ yt Hamiltonovsk´ y. V´ıce k tomuto t´ematu najdete v kapitole 3.2.1. ´ Uloha samozˇrejmˇe obecnˇe nemus´ı b´ yt symetrick´a, tedy z mˇesta A do mˇesta B m˚ uˇze b´ yt jin´a vzd´alenost neˇz z mˇesta B do A. Pro lepˇs´ı pˇredstavu je vhodn´e pˇredstavit si parn´ık, kter´ y pluje po a proti proudu ˇreky. Zat´ımco po proudu bude parn´ık pˇrekon´avat vzd´alenost s minim´aln´ı n´amahou, proti proudu bude tˇreba motor˚ u, kter´e spotˇrebov´avaj´ı palivo a prodraˇzuj´ı cestu. Cena cesty tedy nemus´ı z´aviset pouze na vzd´alenosti, ale i na pˇrev´ yˇsen´ı, pouˇzit´em prostˇredku dopravy a podobnˇe. Ve sv´e pr´aci se budu podrobnˇe zab´ yvat hlavnˇe t´ımto probl´emem, kter´ y budu pro ˇ e republiky. Jako testovac´ı mˇesta jsem vyuˇzila vˇsech 73 n´azornost ˇreˇsit na mapˇe Cesk´ ˇ e republiky a vytvoˇrila matici urˇcuj´ıc´ı vzd´alenosti, mezi b´ yval´ ych okresn´ıch mˇest Cesk´ tˇemito mˇesty. Domn´ıv´am se, ˇze pr´avˇe tento model poskytne ˇcten´aˇri dostateˇcnou orientaci a pˇredstavu o tom, jak jednotliv´e v´ ypoˇcty a postupy ˇreˇsen´ı prob´ıhaj´ı. Poˇcet mˇest se mi zd´a dostateˇcn´ y pro zn´azornˇen´ı sloˇzitosti probl´emu. Uspoˇra´d´an´ı mˇest ukazuje obr´azek 1.2. Vz´ajemn´a poloha mˇest je pˇrevzata z kartografick´ ych map [1]. Jako vzd´alenost mezi mˇesty poˇc´ıt´am vzduˇsnou spojnici mezi nimi. Vzd´alenost mezi mˇesty je Eulerovsk´a a na vˇsech algoritmech je tedy jasnˇe vidˇet princip jejich postupu. Pro libovoln´e dalˇs´ı modely lze samozˇrejmˇe vytvoˇrit obecnou matici vzd´alenost´ı a aplikovat algoritmy s touto matic´ı.
15
•
•• •
• •• • • • • • • • • • • • • • • • • • • • • • •
• • • •
• •
•
• • • •
• •
•
•
•
• • •
• • • • • • • • • • • • • • • • • • • • • • ˇ e republiky Obr´azek 1.2: Stylizovan´a mapa okresn´ıch mˇest Cesk´ •
•
1.5. Probl´ em ˇ c´ınsk´ eho listonoˇ se Probl´em ˇc´ınsk´eho listonoˇse je zad´an´ım velmi podobn´ y probl´emu obchodn´ıho cestuj´ıc´ıho, pˇresto se ˇreˇsen´ı velmi liˇs´ı. Zad´an´ı u ´lohy zn´ı takto: ˇ ınsk´y listonoˇs mus´ı rozn´est poˇstovn´ı psan´ı do vˇsech ulic ve sv´em mˇestˇe a C´ vr´atit se zpˇet na m´ısto, ze kter´eho vych´azel. V jak´em poˇrad´ı a v jak´em smˇeru m´a ulice proj´ıt, aby jeho trasa byla nejkratˇs´ı moˇzn´a? Tuto u ´lohu formuloval ˇc´ınsk´ y matematik M. K. Kwan roku 1962. Tato u ´loha lze opˇet zobrazit v grafu, kde jednotliv´e ulice reprezentuj´ı hrany a kˇriˇzovatky mezi ulicemi reprezentuj´ı vrcholy v grafu. V´ıce o t´eto problematice a Eulerov´ ych cyklech lze nal´ezt v kapitole 3.2.2. Plat´ı, ˇze pokud v grafu existuje Eulerovsk´ y tah, pak je tento Eulerovsk´ y tah optim´aln´ı cestou listonoˇse. [13]
16
2. Matematick´ e programov´ an´ı 2.1. Line´ arn´ı programov´ an´ı Line´arn´ı programov´an´ı ˇreˇs´ı probl´emy souvisej´ıc´ı s hled´an´ım v´azan´ ych extr´em˚ u u line´arn´ıch funkc´ı v´ıce promˇenn´ ych. Omezuj´ıc´ı podm´ınky tˇechto funkc´ı jsou ve tvaru line´arn´ıch ˇ sen´ım tˇechto probl´em˚ rovnic nebo nerovnost´ı. Reˇ u se jako jeden z prvn´ıch matematik˚ u zab´ yval J. B. J. Fourier, kter´ y je vyuˇzil ve sv´e teorii pravdˇepodobnosti a v analytick´e mechanice. Od ˇctyˇric´at´ ych let se vyuˇz´ıvalo line´arn´ıho programov´an´ı v ekonomii a pozdˇeji i k ˇreˇsen´ı dopravn´ıch probl´em˚ u. Rozvoj efektivn´ıch metod ˇreˇsen´ı tˇechto u ´loh pˇredstavil G. B. Dantzig, kter´ y vytvoˇril tzv. simplexovou metodu.1 , kter´a je dnes jiˇz vˇseobecnˇe zn´amou metodou. V souˇcasn´e dobˇe se st´ale pracuje na dalˇs´ıch metod´ach ˇreˇsen´ı tˇechto u ´loh. S rozvojem poˇc´ıtaˇc˚ u se otev´ıraj´ı moˇznosti pro ˇreˇsen´ı pomoc´ı paraleln´ıch v´ ypoˇct˚ u. Matematickou formulac´ı u ´lohy line´arn´ıho programov´an´ı ve standardn´ım tvaru rozum´ıme: min{
n X
cj x j |
X
aij xj = bi , i = 1, . . . , m, xj ≥ 0, j = 1, . . . , n},
j=1
kde cj , bi , aij ∈ R jsou konstantn´ı koeficienty u ´lohy a xj ∈ R jsou nezn´am´e promˇenn´e u ´lohy. V literatuˇre je uvedeno, ˇze kaˇzdou u ´lohu line´arn´ıho programov´an´ı lze pˇrev´est na standardn´ı tvar. [9] T´ımto pˇr´ıstupem lze vyˇreˇsit i ˇsirokou paletu dalˇs´ıch probl´em˚ u, dopravn´ıch u ´loh a organizace pˇrepravy. Zad´an´ı nˇekter´ ych z tˇechto probl´em˚ u se pokus´ım naznaˇcit na nˇekolika dalˇs´ıch ˇr´adc´ıch. Pˇ reprava zboˇ z´ı dodavatel – odbˇ eratel Z´akladn´ı u ´lohou je u ´loha pˇrepravy zboˇz´ı od r˚ uzn´ ych dodavatel˚ u k odbˇeratel˚ um. Pˇriˇcemˇz lze do modelu pˇridat mezisklady, ˇci tov´arny, kter´e pˇr´ıpadn´e polotovary od dodavatel˚ u ´ pˇremˇen´ı v koneˇcn´ y v´ yrobek a pot´e jej transportuj´ı k odbˇerateli. Ukolem je pak minimalizovat celkovou cenu pˇrepravy, pˇr´ıpadnˇe celkov´ y pˇrepravn´ı ˇcas. Lepˇs´ı pochopen´ı ˇs´ıˇre probl´emu pak uv´ad´ı obr´azek 1.1. Proces v´ yroby Jedn´a se o u ´lohu nalezen´ı optim´aln´ıho postupu v´ yroby v´ yrobku. At’ uˇz z hlediska mnoˇzstv´ı pouˇzit´ ych materi´al˚ u, tak poˇrad´ım jednotliv´ ych krok˚ u v´ yroby. Dobr´ ym pˇr´ıkladem m˚ uˇze b´ yt v´ yroba urˇcit´eho typu oceli a jej´ıho dodateˇcn´eho legov´an´ı. [9] Jak m˚ uˇzeme vidˇet, jsou metody line´arn´ıho programov´an´ı pomˇernˇe uˇziteˇcn´e na praktick´e aplikace v dopravˇe a ekonomii v´ yroby. Pomoc´ı vhodn´ ych algoritm˚ u tzv. ˇreˇsiˇc˚ u staˇc´ı pak jen vhodnˇe formulovat u ´lohu a zadat ji dan´emu vhodn´emu ˇreˇsiˇci na vyˇreˇsen´ı. S rozvojem poˇc´ıtaˇcov´e technologie a v´ ypoˇcetn´ı kapacity pak maj´ı i tyto metody re´aln´e pouˇzit´ı v praxi. 1
Srozumiteln´e vysvˇetlen´ı lze nal´ezt na internetov´e adrese: http://www.algoritmy.net/article/1416/Simplexova-metoda.
17
ˇ siˇce jsou ˇcasto vyv´ıjeny jednotliv´ Reˇ ymi univerzitami nebo prestiˇzn´ımi firmami. Jsou ˇ siˇce m˚ ˇcasto specializovan´e na dan´ y typ u ´loh. Reˇ uˇzeme obecnˇe dˇelit na ˇreˇsiˇce urˇcen´e pro line´arn´ı programov´an´ı (LP), line´arn´ı programov´an´ı s celoˇc´ıseln´ ymi promˇenn´ ymi (MIP) ˇci neline´arn´ı programov´an´ı (NLP). Program GAMS nab´ız´ı ˇsirokou paletu velmi efektivn´ıch ˇreˇsic˚ u, kter´e m˚ uˇzeme pouˇz´ıt pro n´aˇs v´ ypoˇcet. Pro probl´em v n´asleduj´ıc´ı kapitole byl zvolen ˇreˇsiˇc CPLEX pro line´arn´ı programov´an´ı vyv´ıjen´ y spoleˇcnost´ı IBM. Pro lepˇs´ı orientaci v zad´an´ı u ´loh jsem se rozhodla uv´est jedno vzorov´e sestaven´ı modelu a jeho vyˇreˇsen´ı. Pˇredevˇs´ım chci pˇribl´ıˇzit postup a ˇreˇsen´ı konkr´etnˇe a pak tak´e uk´azat, ˇze k vyˇreˇsen´ı tˇechto model˚ u staˇc´ı i obyˇcejn´ y tabulkov´ y kalkul´ator, kter´ y m˚ uˇze b´ yt i zdarma dostupn´ y ke staˇzen´ı na internetu.
2.1.1. Model dopravn´ı u ´ lohy Uk´ azkov´ y pˇ r´ıklad ˇ ych Budˇejovic´ıch, Kutn´e Hoˇre a Olomouci) Mˇejme firmu se tˇremi tov´arnami (v Cesk´ vyr´abˇej´ıc´ımi hraˇcky, kter´a m´a poboˇcky ve tˇrech mˇestech (v Praze, Brnˇe a Ostravˇe). Do poboˇcek ve mˇestech chod´ı lid´e nakupovat tyto hraˇcky a t´ım vytv´aˇrej´ı popt´avku. Firma se snaˇz´ı m´ıt co nejvˇetˇs´ı zisk a neutr´acet proto mnoho na pˇrepravˇe. Je tedy zapotˇreb´ı minimalizovat n´aklady.
Obr´azek 2.1: Jednoduch´ y model Sestav´ıme tedy n´asleduj´ıc´ı model, kde indexem i oznaˇc´ıme promˇenn´e souvisej´ıc´ı s tov´arnami a indexem j promˇenn´e souvisej´ıc´ı s poboˇckami. Probl´em: 3 X 3 X minimalizuj cij xij i=1 j=1
Kde promˇenn´a xij oznaˇcuje, kolik hraˇcek se poveze z tov´arny i do poboˇcky j. Cenu cesty urˇcuje matice cen C, jej´ıˇz prvky jsou ceny pˇrepravy cij mezi tov´arnou i a poboˇckou j. Podm´ınky: • kaˇzd´a tov´arna m˚ uˇze vyprodukovat maxim´alnˇe ai v´ yrobk˚ u X xij ≤ ai , ∀ i ∈ {1, 2, 3} • kaˇzd´a poboˇcka mus´ı b´ yt z´asobena minim´alnˇe tak, aby se uspokojili vˇsichni z´akazn´ıci v n´ı nakupuj´ıc´ı. Mus´ı m´ıt dovezeno minim´alnˇe bj v´ yrobk˚ u. X xij ≥ bj , ∀ j ∈ {1, 2, 3} 18
cenov´a matice C Kutn´a Hora ˇ e Budˇejovice Cesk´ Olomouc
Praha Brno Ostrava 87 176 343 155 213 380 283 77 95
D´ale ud´ame v´ yrobn´ı kapacity jednotliv´ ych tov´aren a velikost popt´avky v jednotliv´ ych poboˇck´ach matice kapacity v´ yroby A kapacita v´ yroby ai matice popt´avky B popt´avka bj
ˇ e Budˇejovice Olomouc Kutn´a Hora Cesk´ 600 4500 3000 Praha 3000
Brno 2500
Ostrava 1500
Takto lze tedy definovat z´akladn´ı u ´lohu dopravy zboˇz´ı. Tuto u ´lohu lze jednoduˇse ˇreˇsit simplexovou metodou pomoc´ı algoritmu a nal´ezt ˇreˇsen´ı. Literatura uv´ad´ı dalˇs´ı efektivnˇejˇs´ı algoritmy [13]. V´ yhodou pouˇzit´ı simplexov´e metody je jej´ı rozˇs´ıˇren´ı a dostupnost. V dneˇsn´ı dobˇe existuje ˇrada program˚ u, kter´e maj´ı standardn´ı ˇreˇsiˇce a lze je bez probl´emu vyuˇz´ıt. ´ Ulohu jsem tedy ˇreˇsila uk´azkovˇe v programech GAMS a MS Excel. GAMS je specializovan´ y software pro ˇreˇsen´ı optimalizaˇcn´ıch u ´loh a je tedy vhodn´e uv´est alespoˇ n jednoduchou uk´azku z nˇej. Tabulkov´e kalkul´atory Microsoft Excel ˇci Open Office Calc jsou dnes jiˇz rozˇs´ıˇren´ ymi programy na t´emˇeˇr kaˇzd´em poˇc´ıtaˇci a jedn´a se o obecnˇe pouˇziteln´ y n´astroj i pro pokroˇcil´e matematick´e v´ ypoˇcty, proto jsem si dovolila zaˇradit i ˇreˇsen´ı tohoto pˇr´ıkladu v tˇechto programech. Zdrojov´e k´ody a programy jsou pˇriloˇzen´e na CD v desk´ach pr´ace. ˇ sen´ım t´eto u Reˇ ´lohy tedy bude matice pˇrepravy X: matice pˇrepravy v´ yrobk˚ uX Kutn´a Hora ˇ Cesk´e Budˇejovice Olomouc
Praha Brno Ostrava 600 0 0 2400 1000 0 0 1500 1500
Grafick´e ˇreˇsen´ı pak bude vypadat takto:
Obr´azek 2.2: Grafick´e ˇreˇsen´ı u ´vodn´ıho pˇr´ıkladu ˇ Cerven´ e ˇsipky ukazuj´ı ˇreˇsen´ı t´eto u ´lohy. Modr´e spojnice reprezentuj´ı cesty, kter´e z˚ ust´avaj´ı nevyuˇzity. 19
V´ yˇse popsan´ y model je samozˇrejmˇe velmi zjednoduˇsen´ y a vhodn´ y sp´ıˇse jako ilustraˇcn´ı ´ pˇr´ıklad. V praxi programy pracuj´ı s mnohem vˇetˇs´ım mnoˇzstv´ım dat. Ulohu lze pˇredevˇs´ım rozˇs´ıˇrit a pˇribl´ıˇzit realitˇe modelov´an´ım: • sklad˚ u a mezisklad˚ u v´ yrobk˚ u • z´avislost´ı produkce v´ yrobk˚ u na dan´em ˇcase nebo dnu v t´ ydnu • z´avislost´ı prodeje v´ yrobk˚ u na dan´em ˇcase nebo dnu v t´ ydnu • postupn´e pˇrepravy mezi tov´arnami (dle technologick´eho postupu v´ yroby) • pˇreprava pˇr´ımo k z´akazn´ıkovi × pˇreprava do lok´aln´ı poboˇcky V´ıce podrobnost´ı ke vˇsem tˇemto variant´am lze nal´ezt v knize Introduction to logistics systems planning and control [4].
20
´ 2.2. Ulohy celoˇ c´ıseln´ eho programov´ an´ı Celoˇc´ıseln´e programov´an´ı se vyznaˇcuje t´ım, ˇze jedna nebo v´ıce promˇenn´ ych je celoˇc´ıseln´eho charakteru, ˇci speci´alnˇe bin´arn´ıho charakteru. Matematickou formulac´ı u ´lohy celoˇc´ıseln´eho line´arn´ıho programov´an´ı ve standardn´ım tvaru rozum´ıme n X X min{ cj x j | aij xj = bi , i = 1, . . . , m, xj ≥ 0, j = 1, . . . , n, xj ∈ M, j ∈ JM } j=1
kde cj , bi , aij ∈ R jsou konstantn´ı koeficienty u ´lohy a xj ∈ R jsou nezn´am´e promˇenn´e u ´lohy. Konkr´etnˇe pak m˚ uˇzeme rozliˇsit u ´lohy: • Integer Program (IP) – jedn´a se o typ line´arn´ıho programov´an´ı, kde vˇsechny promˇenn´e maj´ı celoˇc´ıseln´ y charakter: M = Z, JM = {1, . . . , n} • Mixed Integer Program (MIP) – jedn´a se o typ line´arn´ıho programov´an´ı, kde nˇekter´e promˇenn´e maj´ı celoˇc´ıseln´ y charakter: M = Z, JM ⊂ {1, . . . , n} • Binary Integer Program (BIP) – jedn´a se o speci´aln´ı typ celoˇc´ıseln´eho programov´an´ı, kde promˇenn´e maj´ı bin´arn´ı charakter, tedy jsou rovny bud’ 0 nebo 1: M = {0, 1}, JM = {1, . . . , n} T´eto skuteˇcnosti se pak vyuˇz´ıv´a pˇri zad´an´ı mnoha u ´loh s dopravn´ı t´ematikou. Re´alnˇe totiˇz plat´ı, ˇze m˚ uˇzeme vˇzdy vypravit celoˇc´ıseln´e n´asobky vlak˚ u nebo letadel. Problematiku lze tedy vyuˇz´ıt pˇri: Pl´ anov´ an´ı j´ızdn´ıch ˇ r´ ad˚ u vlak˚ u Pro dan´ y pl´an trat’ov´e s´ıtˇe v´ıme, ˇze odjezdy a pˇr´ıjezdy vlak˚ u do n´ami urˇcen´ ych stanic se maj´ı opakovat po urˇcit´em ˇcasov´em odstupu. Napˇr´ıklad ze stanice A m´a vyj´ıˇzdˇet aspoˇ n jeden vlak kaˇzdou hodinu. Vzd´alenosti mezi jednotliv´ ymi stanicemi v s´ıti zn´ame, stejnˇe tak ˇcas potˇrebn´ y k pˇrekon´an´ı t´eto vzd´alenosti. Plat´ı z´aroveˇ n podm´ınka, ˇze dva vlaky jedouc´ı po sobˇe na dan´e trati mus´ı m´ıt nˇejak´ y n´ami dan´ y ˇcasov´ y rozestup. Pro pasaˇz´ery mus´ı zase ˇreˇsen´ı umoˇznit pˇrestup z jedn´e vlakov´e linky na druhou a poskytnout jim dostatek ´ ˇcasu pro tento pˇrestup. Ukolem pak je naj´ıt takov´ y pl´an pˇrepravy, aby vyhovoval vˇsem tˇemto podm´ınk´am. [13] Pl´ anov´ an´ı pohybu leteck´ ych pos´ adek Pro dan´ y pravideln´ y pl´an let˚ u pro dan´ y typ letadla je tˇreba naj´ıt pravideln´ y pl´an let˚ u pro pos´adku. Kaˇzd´ y den mus´ı b´ yt kaˇzd´a pos´adka pˇriˇrazena k letu na jedn´e, ˇci v´ıce link´ach, kter´e z´aroveˇ n mus´ı splˇ novat letov´ y pl´an dle z´ajmu z´akazn´ık˚ u na dan´e trase letˇet. Z´aroveˇ n je poˇzadov´ano, aby jednotliv´e linky na sebe navazovaly, aby byl nejkratˇs´ı ˇcas pˇreletu a aby se letadla zbyteˇcnˇe nezdrˇzovala na letiˇsti z d˚ uvod˚ u tax. Hled´ame tedy minimum vynaloˇzen´ ych prostˇredk˚ u na pos´adky letadel, coˇz je funkc´ı ˇcasu letu letadla, d´elky pracovn´ı doby a pauz mezi lety letadla. Z´aroveˇ n ale mus´ıme minimalizovat i letov´e ˇcasy a letiˇstn´ı taxy. [13]
21
Pl´ anov´ an´ı let˚ u na letiˇ sti Jedn´a se o podobn´ y probl´em jako pl´anov´an´ı pohybu leteck´ ych pos´adek, ale tentokr´at ze strany letiˇstn´ıho person´alu. Na z´akladˇe pˇr´ıchoz´ıch let˚ u je tˇreba rozhodnout, kter´e letadlo kam pˇristavit, aby pasaˇz´eˇri mohli mezi letadly pˇrestoupit a aby mˇeli dostateˇcn´ y ˇcas na pˇrestup. To vˇse s minimalizac´ı n´aklad˚ u a nehodovosti na letiˇsti. [13] Z pˇredchoz´ıho popisu celoˇc´ıseln´eho programov´an´ı by se mohlo zd´at, ˇze se jedn´a o velmi podobnou u ´lohu, jako je line´arn´ı programov´an´ı. Bohuˇzel pouh´ ym zaokrouhlen´ım v´ ysledk˚ u z line´arn´ıho programov´an´ı se nedostaneme k optim´aln´ımu ˇreˇsen´ı celoˇc´ıseln´eho programov´an´ı. Je tedy tˇreba pouˇz´ıt jin´e ˇreˇsiˇce, neˇz v pˇr´ıpadˇe line´arn´ıho programov´an´ı. Tuto problematiku podrobnˇe rozeb´ır´a kniha [13], kde lze nal´ezt mnoho pˇr´ıklad˚ u z celoˇc´ıseln´eho programov´an´ı a technik ˇreˇsen´ı tohoto typu u ´loh. D´ale se budeme zab´ yvat pouze konkr´etn´ı u ´lohou v oblasti dopravy a vysvˇetl´ıme si z´akladn´ı formulaci u ´lohy celoˇc´ıseln´eho programov´an´ı a v´ yznam jednotliv´ ych podm´ınek.
2.2.1. Model probl´ emu obchodn´ıho cestuj´ıc´ıho Probl´em obchodn´ıho cestuj´ıc´ıho budeme ˇreˇsit na grafu, kter´ y bude symetrick´ y a formulujeme jej jako metodu celoˇc´ıseln´eho programov´an´ı n´asledovnˇe: minimalizuj
n X n X
cij xij
i=1 j=1
xij ∈ {0, 1} n X
xij = 1,
i = 0, 1, . . . , n
xij = 1,
j = 0, 1, . . . , n
i=1 n X j=1
XX
xij ≥ 1 pro S ⊂ N, S 6= ∅
i∈S j ∈S /
ˇ ıslo cij urˇcuje cenu V tomto modelu jsou opˇet cij koeficienty cenov´e matice C. C´ pˇrepravy z mˇesta i do mˇesta j. Pokud je graf symetrick´ y, pak je i matice C symetrick´a. Matice X je bin´arn´ı matice, kter´a urˇcuje poˇrad´ı mˇest, kter´a budou navˇst´ıvena. Plat´ı pro ni: 1 pokud cesta z mˇesta i do mˇesta j leˇz´ı v trase obchodn´ıho cestuj´ıc´ıho xij = 0 jinak Ze z´apisu jednoduˇse vypl´ yv´a podm´ınka, ˇze souˇcet v kaˇzd´em ˇr´adku a v kaˇzd´em sloupci je jedna, nebot’ z kaˇzd´eho a do kaˇzd´eho mˇesta vede pr´avˇe jedna cesta. Jedn´a se vlastnˇe o speci´aln´ı pˇr´ıpad dˇr´ıve probran´e dopravn´ı u ´lohy 2.1.1, tzv. pˇriˇrazovac´ı probl´em, kdy z kaˇzd´eho z n mˇest pˇrepravujeme co nejlevnˇeji jednotkov´a mnoˇzstv´ı zboˇz´ı do jednoho ze zb´ yvaj´ıc´ıch n − 1 mˇest. Zd´a se tedy, ˇze by k vyˇreˇsen´ı mohlo staˇcit line´arn´ı programov´an´ı. Tato specifikace ale k vyˇreˇsen´ı u ´lohy jeˇstˇe nestaˇc´ı. Posledn´ı podm´ınka zaruˇcuje, ˇze nebudou 22
Obr´azek 2.3: Pˇr´ıklad jedn´e souvisl´e trasy × vznik dvou subcykl˚ u vznikat tzv. lok´aln´ı smyˇcky, ale vytvoˇr´ı se jeden velk´ y cyklus obsahuj´ıc´ı vˇsechna mˇesta, jak ukazuje obr´azek 2.3. Hledan´ ym ˇreˇsen´ım je pak to ˇreˇsen´ı s minim´aln´ı ohodnocenou trasou. Zad´an´ı vypad´a tedy pomˇernˇe jednoduˇse. Jak´a je ovˇsem n´aroˇcnost a rozs´ahlost t´eto u ´lohy? M˚ uˇzeme zaˇc´ıt v libovoln´em mˇestˇe z n mˇest a z nˇej m´ame n − 1 moˇznost´ı jak pokraˇcovat d´al. Pro dalˇs´ı mˇesto uˇz to bude n − 2 moˇznost´ı a tak d´ale. V koneˇcn´em d˚ usledku tedy m´ame (n − 1)! moˇzn´ ych ˇreˇsen´ı. Pro mal´a n je tedy probl´em dobˇre ˇreˇsiteln´ y, ale pro rozs´ahlejˇs´ı u ´lohy n´aroˇcnost ne´ umˇernˇe roste. Pro lepˇs´ı pˇredstavu na naˇsem modelu m´ame 73 okresn´ıch mˇest. To je pˇribliˇznˇe 4, 47 · 10105 moˇznost´ı cest, kter´e splˇ nuj´ı vˇsechny v´ yˇse urˇcen´e podm´ınky modelu. Odtud je jiˇz jasnˇe vidˇet, ˇze nalezen´ım vˇsech moˇznost´ı a jejich tˇr´ıdˇen´ım rozhodnˇe nedos´ahneme efektivn´ıho v´ ypoˇctu. Nav´ıc i pˇri dneˇsn´ım pokroku v oblasti poˇc´ıtaˇcov´ ych technologi´ı bychom mˇeli velk´e probl´emy s pamˇet´ı poˇc´ıtaˇce. S v´ yhodou jsem vyuˇzila jiˇz funkˇcn´ı ˇreˇsen´ı podobn´e u ´lohy, kter´a je souˇca´st´ı knihovny uk´azkov´ ych ˇreˇsen´ı programu GAMS. Programu tsp42, kter´ y p˚ uvodnˇe poˇc´ıtal optim´aln´ı trasu skrz 42 nejvˇetˇs´ıch mˇest Spojen´ ych st´at˚ u, jsem jako vstup poskytla data vˇsech okresn´ıch mˇest a vzd´alenost´ı mezi nimi. Program funguje na principu ˇreˇsen´ı, kter´e navrhli v roce 1954 autoˇri Dantzig, Fulkerson a Johnson. V jednoduchosti se jedn´a o dva kroky. Prvn´ım krokem je tzv. relaxace ˇreˇsen´ı, ve kter´e se matice ˇreˇsen´ı X transponuje a seˇcte s p˚ uvodn´ı matic´ı X. X + XT = Y n P i=1
Pro lepˇs´ı pˇredstavu uvedeme jednoduch´ y pˇr´ıklad. Matice X1 a X2 odpov´ıdaj´ı podm´ınk´am n P xij = 1 a xij = 1. X2 ovˇsem reprezentuje dvˇe uzavˇren´e trasy, X1 tvoˇr´ı jednu j=1
uzavˇrenou trasu. X1 =
0 0 0 0 1
1 0 0 0 0
0 0 0 1 0
0 1 0 0 0
0 0 1 0 0
,
X2 =
0 1 0 0 0
1 0 0 0 0
0 0 0 1 0
0 0 0 0 1
0 0 1 0 0
Pokud dojde k souˇctu tˇechto matic s jejich traspozicemi, vzniknou nov´e matice Y1 a Y2 . Kter´e budou symetrick´e a na diagon´ale nulov´e. Zab´ yv´ame se tedy pouze prvky pod diagon´alou. . . . . . . . . . . 1 . . . . 2 . . . . 0 0 . . . Y1 = 0 0 . . . , Y2 = 0 1 1 . . 0 0 1 . . 1 0 0 0 . 0 0 1 1 . 23
Pak tedy reformulujeme prodm´ınky
n P i=1
X
xij = 1 na jedinou podm´ınku:
j=1
X
yij +
j, j
n P
xij = 1 a
yij = 2
i, i>j
T´ımto postupem z´ısk´ame tzv. relaxovan´e ˇreˇsen´ı, kter´e program tsp42 spoˇcte. V´ ysledek zobraz´ıme pˇrevodem matice X do syntaxe LATEXu.
•
•• • •
• •• • • • • • • • • • • • • • • • • • • • • • • •
• • • • •
•
• •
•
•
• • •
•
• • •
• • • •
•
•
•
• • • • • • • • • • • • •
•
• • •
Obr´azek 2.4: Relaxovan´e ˇreˇsen´ı u ´lohy pomoc´ı programu GAMS Pot´e doch´az´ı k postupn´emu sdruˇzov´an´ı jednotliv´ ych subcykl˚ u tohoto ˇreˇsen´ı. Z´aroveˇ n mus´ıme kontrolovat, zda doch´az´ı ke splnˇen´ı dan´ ych podm´ınek pro ˇreˇsen´ı p˚ uvodn´ı u ´lohy. Podrobnˇeji jsou metody pops´any pˇr´ımo v ˇcl´anku Solution of a Large-Scale TravelingSalesman Problem [2]. Program tsp42 z relaxovan´eho ˇreˇsen´ı postupn´ ym spojov´an´ım a optimalizov´an´ım jednotliv´ ych subcykl˚ u u ´lohu vyˇreˇs´ı a nalezne optimum. Toto optimum m´a celkovou d´elku trasy (po korekci zaokrouhlov´an´ı) 4095 km.
•
•• • •
• •• • • • • • • • • • • • • • • • • • • • • • • •
• • • • •
•
• •
•
•
• • •
•
•
• • • • •
• •
•
•
•
• • • • • • • • • • • • •
• • •
Obr´azek 2.5: Optimum u ´lohy D´elka ˇreˇseni je 4 095 km. Dalˇs´ı pˇr´ıstupy ˇreˇsen´ı u ´lohy TSP zaloˇzen´e na celoˇc´ıseln´em line´arn´ım programov´an´ı lze nal´ezt v knize [13] a jejich implementace v GAMSu najdeme v [3]. D´ale se ale chci zab´ yvat efektivnˇejˇs´ımi algoritmy zaloˇzen´ ymi na teorii graf˚ u.
24
3. Teorie graf˚ u K dalˇs´ımu v´ ykladu je tˇreba definovat z´akladn´ı pojmy z teorie graf˚ u pro lepˇs´ı pozdˇejˇs´ı orientaci v textu. Grafy pak lze velmi dobˇre vyuˇz´ıt k vytvoˇren´ı modelu mˇest a jejich vz´ajemn´ ych vzd´alenost´ı a k n´azorn´e uk´azce postupu jednotliv´ ych algoritm˚ u pro hled´an´ı nejlepˇs´ıch tras obchodn´ıho cestuj´ıc´ıho.
3.1. Z´ akladn´ı pojmy Definice 3.1.1 Graf (obyˇcejn´ y ˇci jednoduch´ y neorientovan´ y graf) je uspoˇra´dan´a dvojice mnoˇzin G = (V, E), kde V je libovoln´a koneˇcn´a nepr´azdn´a mnoˇzina a E ⊆ 2V je libovoln´a mnoˇzina dvouprvkov´ ych podmnoˇzin mnoˇziny V . Mnoˇzinu V naz´ yv´ame mnoˇzinou vrchol˚ u a mnoˇzinu E mnoˇzinou hran. [6] Je nutno tak´e poznamenat, ˇze jako neorientovan´ y graf lze interpretovat i symetrickou ireflexivn´ı relaci, kde hrany tvoˇr´ı pr´avˇe dvojice prvk˚ u t´eto relace. [6] Grafy specifikujeme bud’ v´ yˇctem vrchol˚ u a hran nebo obr´azkem.
Obr´azek 3.1: Pˇr´ıklad zobrazen´ı grafu Pro naˇsi u ´lohu budeme reprezentovat mˇesta vrcholy grafu a cesty mezi mˇesty hranami grafu. Definice 3.1.2 Stupnˇ em vrcholu v v grafu G rozum´ıme poˇcet hran vych´azej´ıc´ıch1 z v. Stupeˇ n v v grafu G znaˇc´ıme dG (v). [6] ˇta 3.1.3 Souˇcet stupˇ Ve n˚ u v grafu je vˇzdy sud´ y a roven dvojn´asobku poˇctu hran. [6] D˚ ukaz t´eto vˇety je trivi´aln´ı. Tuto vˇetu vˇsak o p´ar kapitol d´ale vhodnˇe vyuˇzijeme u aplikace Christofidesovy metody. Definice 3.1.4 Podgrafem grafu G rozum´ıme libovoln´ y graf H na podmnoˇzinˇe vrchol˚ u V (H) ⊆ V (G), kter´ y m´a za hrany libovolnou podmnoˇzinu hran grafu G maj´ıc´ıch oba vrcholy ve V (H). P´ıˇseme H ⊆ G. [6] Definice 3.1.5 Isomorfismus graf˚ u G a H je bijektivn´ı (vz´ajemnˇe jednoznaˇcn´e) zobrazen´ı f : V (G) → V (H), pro kter´e plat´ı, ˇze kaˇzd´a dvojice vrchol˚ u u, v ∈ V (G) je spojen´a hranou v G pr´avˇe tehdy, kdyˇz je dvojice f (u), f (v) spojen´a hranou v H. Grafy G a H jsou izomorfn´ı, pokud mezi nimi existuje isomorfismus. P´ıˇseme G ∼ = H. [6]
25
Obr´azek 3.2: Pˇr´ıklad dvou isomorfn´ıch graf˚ u Isomorfismus n´am v jednoduchosti ˇr´ık´a, ˇze dva r˚ uznˇe nakreslen´e grafy o urˇcit´ ych vlastnostech jsou stejn´e“ a m˚ uˇzeme vˇsechny grafy dle t´eto bijekce roztˇr´ıdit do tˇr´ıd, kde kaˇzdou ” tˇr´ıdu m˚ uˇze reprezentovat graf s urˇcit´ ymi dan´ ymi vlastnostmi. Tedy napˇr´ıklad dle obr´azku jsou tyto dva grafy isomorfn´ı, tj. nez´aleˇz´ı, jak graf kresl´ıme, kdyˇz zachov´ame vz´ajemn´e vlastnosti. Definice 3.1.6 Sledem d´elky n v grafu G rozum´ıme posloupnost vrchol˚ u a hran v0 , e1 , v1 , e2 , v2 , . . . e1 , v0 ve kter´e vˇzdy hrana ei m´a koncov´e vrcholy vi−1 , vi . [6] Definice 3.1.7 Tah je sled v grafu bez opakov´an´ı hran. Uzavˇ ren´ y tah je tahem, kter´ y konˇc´ı ve vrcholu, ve kter´em zaˇcal. Otevˇ ren´ y tah je tahem, kter´ y konˇc´ı v jin´em vrcholu, neˇz s´am zaˇcal. [6] ˇ sen´ım Sledy a tahy n´am pomohou l´epe specifikovat trasu obchodn´ıho cestuj´ıc´ıho. Reˇ obchodn´ıho cestuj´ıc´ıho bude vˇzdy uzavˇren´ y tah v grafu mˇest a cest. Nyn´ı uˇz jen zb´ yv´a definovat vzd´alenost. Definice 3.1.8 Vzd´ alenost dG (u, v) dvou vrchol˚ u u, v v grafu G je d´ana d´elkou nejkratˇs´ıho sledu mezi u a v v G. Pokud sled mezi u, v neexistuje, definujeme vzd´alenost dG (u, v) = ∞.[6] ˇta 3.1.9 Vzd´alenost v grafech splˇ Ve nuje troj´ uheln´ıkovou nerovnost [6]: ∀u, v, w ∈ V (G)
:
dG (u, v) + dG (v, w) ≥ dG (u, w).
Definice 3.1.10 Souvisl´ y graf je takov´ y neorientovan´ y graf, v nˇemˇz plat´ı, ˇze pro kaˇzd´e dva vrcholy x a y existuje alespoˇ n jedna cesta z x do y. Definice 3.1.11 V´ aˇ zen´ y graf je graf G spolu s ohodnocen´ım w hran re´aln´ ymi ˇc´ısly w : E(G) → R. Kladnˇ e v´ aˇ zen´ y graf je dvojice (G, w) takov´a, ˇze w(e) > 0 pro vˇsechny hrany e.[6] Definice 3.1.12 V´ aˇ zen´ a vzd´ alenost. Mˇejme kladnˇe v´aˇzen´ y graf (G, w). D´elkou v´aˇzen´eho sledu S = (v0 , e1 , v1 , e2 , v2 , . . . e1 , v0 ) v G mysl´ıme souˇcet: dw G (S) = w(e1 ) + w(e2 ) + · · · + w(en ). V´aˇzenou vzd´alenost´ı v (G, w) mezi dvˇema vrcholy u, v pak mysl´ıme w dw G (u, v) = min{dG (S) : S je sled s konci u, v} 1
Pozn. U hran v ˇceˇstinˇe ˇr´ık´ ame, ˇze vych´ az´ı z obou vrchol˚ u souˇcasnˇe.
26
Definice 3.1.13 Celkov´ ym ohodnocen´ım podgrafu rozum´ıme souˇcet ohodnocen´ı vˇsech jeho hran. T´ım jsme tedy definovali v´aˇzenou vzd´alenost mezi vrcholy a d´elku v´aˇzen´eho sledu. Pˇri ˇreˇsen´ı u ´lohy obchodn´ıho cestuj´ıc´ıho se dle grafov´e terminologie snaˇz´ıme o uzavˇren´ y tah, kter´ y bude m´ıt minim´aln´ı v´aˇzenou vzd´alenost. D´ale je tˇreba definovat strom a dalˇs´ı d˚ uleˇzit´e pojmy. Definice 3.1.14 Neorientovan´ y uzavˇ ren´ y tah v grafu G nazveme kruˇ znic´ı v grafu G. [10] Definice 3.1.15 Strom je jednoduch´ y souvisl´ y graf G bez kruˇznic. [6] D´ıky znalosti tˇechto pojm˚ u pak m˚ uˇzeme l´epe pochopit kostru grafu a minim´aln´ı kostru grafu. Definice 3.1.16 Kostrou souvisl´eho grafu G je podgraf v G, kter´ y je s´am stromem a obsahuje vˇsechny vrcholy grafu G. [6] Definice 3.1.17 Minim´ aln´ı kostrou souvisl´eho v´aˇzen´eho grafu G definujeme jako takovou kostru grafu G, kter´a m´a nejmenˇs´ı moˇzn´e celkov´e ohodnocen´ı. [6] Definice 3.1.18 P´ arov´ an´ı v grafu G je podmnoˇzina hran M ⊆ E(G) takov´a, ˇze ˇza´dn´e dvˇe hrany z M nesd´ılej´ı koncov´ y vrchol. [6] Definice 3.1.19 Minim´ aln´ı p´ arov´ an´ı ve v´aˇzen´em grafu G je takov´e p´arov´an´ı, kter´e m´a minim´aln´ı celkov´e ohodnocen´ı. Definice 3.1.20 Perfektn´ı p´ arov´ an´ı ve v´aˇzen´em grafu G je takov´e p´arov´an´ı, kter´e pokryje vˇsechny vrcholy grafu G. Pojem minim´aln´ı kostry grafu vyuˇzijeme v dalˇs´ıch kapitol´ach ke konstrukci ˇreˇsen´ı u ´lohy obchodn´ıho cestuj´ıc´ıho. Z´aroveˇ n tak´e ke konstrukci vyuˇzijeme tzv. p´arov´an´ı v grafech.
27
3.2. Cykly v grafu Dalˇs´ı d˚ uleˇzitou kapitolou k pochopen´ı algoritm˚ u obchodn´ıho cestuj´ıc´ıho jsou cykly (uzavˇren´e tahy) v grafech. Cyklus v grafu m˚ uˇze pˇredstavovat jednoduchou posloupnost pohybu zboˇz´ı mezi vrcholy pˇr´ıpadnˇe skrz dan´e hrany grafu. Tato t´ematika se jiˇz v minulosti aplikovala na nˇekter´e dopravn´ı probl´emy a hry, proto si u t´eto kapitoly dovol´ım nˇekolik historick´ ych pozn´amek.
3.2.1. Hamilton˚ uv cyklus Historie vzniku probl´ emu Hamiltonova u ´loha byla formulov´ana poprv´e W. R. Hamiltonem v roce 1857 [12]. Hamilton ji jako n´apad prodal lond´ ynsk´emu prodejci her, kter´ y z n´ı vyrobil dˇrevˇenou deskovou hru a t´ım probl´em rozˇs´ıˇril do cel´eho svˇeta. Jednalo se o hru na dvan´actistˇenu, jehoˇz pl´aˇst’ se rozloˇzil do roviny a vytvoˇril se graf vrchol˚ u a hran dvan´actistˇenu. C´ılem je vˇsech 20 vrchol˚ u dvan´actistˇenu propojit tak, aby vznikl cyklus, kter´ y kaˇzd´ ym vrcholem projde pr´avˇe jednou. Proto se t´eto hˇre ˇr´ıkalo The Icosian game, tedy Hra na dvan´actistˇenu.
Obr´azek 3.3: Graf hran a vrchol˚ u dvan´actistˇenu a jedno z moˇzn´ ych ˇreˇsen´ı u ´lohy
Obecn´ a definice Definice 3.2.1 Hamilton˚ uv cyklus v grafu G definujeme jako uzavˇren´ y tah, kter´ y kaˇzd´ y vrchol pˇri pr˚ uchodu grafem zahrne pr´avˇe jednou. Graf, kter´ y obsahuje Hamilton˚ uv cyklus se naz´ yv´a Hamiltonovsk´ y graf. Pokud se tedy budeme na u ´lohu obchodn´ıho cestuj´ıc´ıho d´ıvat jako na graf s mˇesty jako vrcholy a cestami jako hranami, pak Hamilton˚ uv cyklus je jedno z moˇzn´ ych ˇreˇsen´ı probl´emu a cyklus s nejmenˇs´ım celkov´ ym ohodnocen´ım je optim´aln´ım ˇreˇsen´ım t´eto u ´lohy.
28
3.2.2. Euler˚ uv cyklus Historie vzniku probl´ emu Euler˚ uv cyklus byl poprv´e ˇreˇsen Leonardem Eulerem, kdyˇz se roku 1736 pokouˇsel vyˇreˇsit ´ slavn´ y probl´em sedmi most˚ u mˇesta Kr´alovce. Ukolem bylo v mˇestˇe Kr´alovci (nyn´ı Kaliningradu) pˇrej´ıt vˇsech sedm most˚ u pr´avˇe jednou. Pr´avˇe Euler jako prvn´ı dok´azal, ˇze tato u ´loha nem´a ˇreˇsen´ı a proto nen´ı moˇzn´e mosty ˇz´adn´ ym takov´ ym zp˚ usobem pˇrej´ıt. Pr´avˇe po nˇem jsou proto grafy s danou vlastnost´ı pojmenov´any. Mezi zn´am´ y pˇr´ıpad Eulerova cyklu patˇr´ı i kreslen´ı obr´azku domeˇcku jedn´ım tahem.
Obr´azek 3.4: Typick´ y pˇr´ıklad Eulerova cyklu na kreslen´ı domeˇcku jedn´ım tahem Obecn´ a definice Definice 3.2.2 Eulerovsk´ y cyklus v grafu je takov´ y tah, kter´ y kaˇzdou hranu grafu projde pr´avˇe jednou. Pokud tedy vytvoˇr´ıme graf, kter´ y bude reprezentovat mˇesto, zp˚ usobem takov´ ym, ˇze vrcholy budou pˇredstavovat kˇriˇzovatky a hrany mezi nimi budou pˇredstavovat ulice mezi nimi, pak staˇc´ı naj´ıt v tomto grafu libovoln´ y Euler˚ uv cyklus a t´ım vyˇreˇs´ıme u ´lohu ˇc´ınsk´eho listonoˇse. Pro Eulerovy cykly plat´ı tak´e nˇekolik zn´am´ ych z´akonitost´ı, kter´e d´ale v textu vyuˇzijeme. ˇta 3.2.3 Neorientovan´ Ve y graf je Eulerovsk´ y, je-li souvisl´ y a kaˇzd´ y jeho vrchol m´a sud´ y stupeˇ n. Euler˚ uv cyklus pak bude uzavˇren´ y tah. ˇta 3.2.4 Neorientovan´ Ve y graf je Eulerovsk´ y, je-li souvisl´ y a m´a-li pr´avˇe dva vrcholy lich´eho stupnˇe. Euler˚ uv cyklus pak bude otevˇren´ y tah.
29
30
4. Heuristiky 4.1. V´ yznam heuristik Heuristiky jsou takov´e algoritmy, kter´e poskytnou dostateˇcnˇe pˇresn´e ˇreˇsen´ı v rozumn´em v´ ypoˇcetn´ım ˇcase. Toto ˇreˇsen´ı nemus´ı b´ yt optim´aln´ı, pˇresto je pˇri velk´ ych modelech v´ yhodn´e ˇ jej vyuˇz´ıt. Casto heuristik vyuˇz´ıv´ame i v pˇr´ıpadech, kdy neexistuje metoda nalezen´ı pˇresn´eho ˇreˇsen´ı. V praxi jsou tyto metody velmi ˇcasto uˇz´ıvan´e a nˇekter´e z nich n´am dokonce zaruˇcuj´ı danou procentu´aln´ı vzd´alenost od optim´aln´ıho ˇreˇsen´ı. [7]
4.2. Heuristiky pro u ´ lohu obchodn´ıho cestuj´ıc´ıho Heuristiky pro TSP jsou algoritmy, kter´e po nalezen´ı ˇreˇsen´ı probl´emu TSP jiˇz nijak toto ˇreˇsen´ı nezlepˇsuj´ı. Nejlepˇs´ı z tˇechto algoritm˚ u dokonce zaruˇcuj´ı, ˇze spoˇc´ıtaj´ı ˇreˇsen´ı, kter´e se bude liˇsit maxim´alnˇe o 10–15 % od optim´aln´ıho ˇreˇsen´ı. Nemus´ı b´ yt ovˇsem pravidlem, ˇze pro z´ısk´an´ı nejlepˇs´ıho ˇreˇsen´ı mus´ıme pouˇz´ıt nejlepˇs´ı konstrukˇcn´ı algoritmus. Mnoho takto z´ıskan´ ych ˇreˇsen´ı lze zlepˇsovat pomoc´ı tzv. zlepˇsovac´ıch algoritm˚ u, kter´e mohou b´ yt velmi v´ ykonn´e a mohou ˇreˇsen´ı posunout mnohem bl´ıˇze k optimu. V naˇsem modelu opˇet pˇredpokl´ad´ame, ˇze pro mnoˇzinu mˇest m˚ uˇzeme urˇcit graf cest, kter´ y bude u ´pln´ y a bude pro nˇej platit troj´ uheln´ıkov´a nerovnost. Jednoduch´ y model mˇest a cest si lze prohl´ednout na obr´azku 4.1. Jednotliv´e metody budou prezentov´any napˇred pomoc´ı nˇekolika prvn´ıch krok˚ u pr´avˇe na tomto modelu. Vlastn´ı programov´an´ı a v´ ypoˇcty pak byly provedeny v jazyce Python a za modelov´ y pˇr´ıklad mnoˇziny mˇest byla opˇet ˇ e republiky. vybr´ana b´ yval´a okresn´ı mˇesta Cesk´
Obr´azek 4.1: Modelov´ y pˇr´ıklad mˇest a cest mezi nimi Typy tˇechto metod a jejich uplatnˇen´ı jsem studovala v r´amci spolupr´ace s norskou univerzitou Molde University College. Z vlastn´ı zkuˇsenosti a studia literatury [13], [7] vid´ım, ˇze tyto metody jsou pouˇz´ıv´any a mohou b´ yt ˇcasto velmi efektivn´ı pˇri hled´an´ı ˇreˇsen´ı ˇ na velmi velk´ ych modelech. Casto se pouˇz´ıvaj´ı i v pˇr´ıpadech nestandardn´ıch doplˇ nuj´ıc´ıch podm´ınek ˇci v pˇr´ıpadˇe, ˇze budeme potˇrebovat flexibiln´ı model, pˇri kter´em se podm´ınky mohou ˇsiroce mˇenit. V´ yhodou je tak´e to, ˇze ˇreˇsen´ı si pomoc´ı bezplatn´eho softwaru m˚ uˇzeme naprogramovat sami a nemus´ıme se spol´ehat na ˇreˇsiˇce, pokud budeme u ´lohu ˇreˇsit pomoc´ı metod matematick´eho programov´an´ı.
31
4.2.1. Metoda hled´ an´ı nejbliˇ zˇ s´ıho souseda Jedn´a se o nejjednoduˇsˇs´ı metodu hled´an´ı ˇreˇsen´ı, kter´a napadne t´emˇeˇr kaˇzd´eho. Algoritmus startuje v zadan´em poˇca´teˇcn´ım vrcholu grafu (neboli v startovn´ım mˇestˇe). Z tohoto vrcholu tvoˇr´ıme sled a pˇrid´av´ame do sledu dalˇs´ı hranu a vrchol tak, aby n´asleduj´ıc´ı vrchol mˇel nejmenˇs´ı v´aˇzenou vzd´alenost od vrcholu pˇredeˇsl´eho. Podm´ınkou je, ˇze kaˇzd´ y vrchol mus´ı b´ yt pouˇz´ıt ve sledu pr´avˇe jednou. Jinak ˇreˇceno zaˇcneme ve startovn´ım mˇestˇe a vˇzdy pˇrid´ame do posloupnosti jemu nejbliˇzˇs´ı mˇesto a postup opakujeme se zb´ yvaj´ıc´ımi mˇesty, dokud nenavˇst´ıv´ıme vˇsechna mˇesta pr´avˇe jednou v cel´em grafu. Tento algoritmus bohuˇzel nijak nezaruˇcuje efektivnost ˇreˇsen´ı. Vˇetˇsinou neposkytuje dostateˇcnˇe dobrou aproximaci a je nutn´e jej zlepˇsovat dalˇs´ımi algoritmy. Nav´ıc nen´ı zcela jasn´e, kter´e mˇesto by mˇelo b´ yt startovn´ı. Naˇstˇest´ı se jedn´a o pomˇernˇe jednoduchou techniku v´ ypoˇctu a proto nen´ı probl´em vypoˇc´ıtat v´ıce variant tras a po t´e vybrat tu nejvhodnˇejˇs´ı ze vˇsech. [8] Lepˇs´ı pˇredstavu postupu tohoto algoritmu doplˇ nuje obr´azek.
Obr´azek 4.2: Naznaˇcen´ı postupu ˇreˇsen´ı pomoc´ı metody nejbliˇzˇs´ıho souseda Z´akladn´ı algoritmy bud uv´adˇet d´ale v pseudok´odu, kter´ y je obdobn´ y tomu, kter´ y se pˇri publikaci grafov´ ych algoritm˚ u obvykle pouˇz´ıv´a. Algoritmus hled´ an´ı nejbliˇ zˇ s´ıho souseda Vstupem je seznam mˇest mesta a matice vzd´alenost´ı dist. V´ ystupem je trasa tour. begin tour = [ ]; vychozi mesto = mesta(1); mesta.odeber(vychozi mesto); while length(mesta) > 0 nasledujici mesto = najdi nejblizsi mesto(vychozi mesto, mesta); tour.pridej(nasledujici mesto); mesta.odeber(vychozi mesto); end end
32
Konkr´ etn´ı ˇ reˇ sen´ı Tuto metodu jsem naprogramovala ve skriptovac´ım jazyce Python a analyzovala jsem ˇ sen´ı vˇsech model˚ jej´ı vlastnosti. Reˇ u jsem pak zobrazila pomoc´ı rozˇsiˇruj´ıc´ıho bal´ıku funkc´ı pro jazyk Python s n´azvem NumPy. Za data jsem si opˇet zvolila vˇsechna b´ yval´a okresn´ı ˇ mˇesta (tj. 73 uzl˚ u grafu) v Cesk´e republice, nebot’ se jedn´a o vˇetˇs´ı vzorek dat a bude l´epe vidˇet variabilitu v z´avislosti na poˇc´ateˇcn´ım zvolen´ı v´ ychoz´ıho mˇesta. Za vzd´alenosti mezi mˇesty pouˇz´ıv´am vzduˇsnou vzd´alenost, kter´a dobˇre aproximuje vzd´alenosti skuteˇcn´e. Ze simulac´ı vypl´ yv´a, ˇze obecnˇe nelze nijak urˇcit, kter´e mˇesto by bylo pro zaˇc´atek algoritmu nejvhodnˇejˇs´ı. Mezi mnou vypoˇcten´ ym nejlepˇs´ım a nejhorˇs´ım ˇreˇsen´ım je znaˇcn´ y rozd´ıl, kter´ y je po vykreslen´ı grafu zcela patrn´ y. T´ım se jen potvrzuje, ˇze tato metoda nen´ı vhodn´a pro koneˇcn´e ˇreˇsen´ı tohoto probl´emu a bude tˇreba ˇreˇsen´ı d´ale posunout nˇejakou dalˇs´ı metodou bl´ıˇze k optim´aln´ımu ˇreˇsen´ı. Konkr´etnˇe pak pro m˚ uj pˇr´ıpad je nejlepˇs´ı aproximac´ı v´ ychoz´ı mˇesto Kol´ın a nejhorˇs´ı v´ ychoz´ı mˇesto Tachov. Z tohoto srovn´an´ı by se mohlo zd´at, ˇze okrajov´a mˇesta jsou na tom vˇzdy o trochu h˚ uˇre, obecnˇe se vˇsak toto tvrzen´ı simulacemi nepotvrdilo.
Obr´azek 4.3: Nejlepˇs´ı ˇreˇsen´ı na okresn´ıch mˇestech Celkov´a d´elka trasy = 4 508 km.
33
Obr´azek 4.4: Nejhorˇs´ı ˇreˇsen´ı na okresn´ıch mˇestech Celkov´a d´elka trasy = 5 266 km.
4.2.2. Metoda hladov´ eho algoritmu Tato metoda tvoˇr´ı cestu mezi mˇesty tak, ˇze utˇr´ıd´ı vˇsechny hrany grafu (cesty mezi mˇesty) dle velikosti. Vybere nejkratˇs´ı hranu a pokud tato hrana spln´ı podm´ınku, ˇze jej´ım pˇrid´an´ım nevznikne cyklus s m´enˇe mˇesty neˇz je celkov´ y poˇcet mˇest a ˇze pˇrid´an´ım t´eto hrany nevzroste u libovoln´eho vrcholu (mˇesta) stupeˇ n vrcholu na v´ıce neˇz dva, pak je tato hrana pˇrid´ana do cyklu. Pot´e se vyb´ır´a nejmenˇs´ı hrana n´asleduj´ıc´ı. Algoritmus se ukonˇc´ı po nalezen´ı cyklu se vˇsemi mˇesty. Postup algoritmu je podobn´ y Kruskalovu hladov´emu algoritmu, kter´ ym se budeme zab´ yvat u Christofidesovy metody. [8] Postup algoritmu lze dobˇre pochopit z ilustraˇcn´ıho obr´azku 4.5, kter´ y navazuje na ˇ obr´azek 4.1. C´ısla u jednotliv´ ych hran reprezentuj´ı poˇrad´ı pˇrid´an´ı hrany do cyklu.
Obr´azek 4.5: V´ yvoj hladov´eho algoritmu Tuto metodu jsem d´ale ˇza´dn´ ym zp˚ usobem nezpracovala ani neprogramovala.
34
4.2.3. Metoda vkl´ ad´ an´ı mˇ est do trasy Tato metoda je opˇet pomˇernˇe pˇr´ım´a a m´a mnoho variant. Algoritmus naˇc´ın´a na podmnoˇzinˇe vrchol˚ u (mˇest) a postupnˇe se k nim po jednom pˇrid´avaj´ı dalˇs´ı mˇesta. Poˇca´teˇcn´ı podmnoˇzinou je ˇcasto trojice ˇci dvojice vrchol˚ u. Princip metody spoˇc´ıv´a v tom, ˇze v kaˇzd´em kroku se snaˇz´ıme pˇridat dalˇs´ı vrchol do uzavˇren´eho tahu tak, aby pˇr´ır˚ ustek vzd´alenosti, kter´ y vznikne pˇrid´an´ım tohoto vrcholu, byl minim´aln´ı. Takto opakujeme, aˇz do uzavˇren´eho tahu pˇrid´ame vˇsechny vrcholy a vynikne n´am tedy cyklus mˇest. Obr´azek ilustruje nˇekolik prvn´ıch krok˚ u metody na modelov´em pˇr´ıkladˇe, kde poˇca´teˇcn´ı podmnoˇzinou byly vybr´any vrcholy grafu, kter´e spojuje nejkratˇs´ı hrana. Poˇrad´ı u ˇsed´ ych hran naznaˇcuje postup cel´eho algoritmu.
Obr´azek 4.6: V´ yvoj metody vkl´ad´an´ı cest do trasy Tuto metodu jsem opˇet zpracovala ve skriptovac´ım jazyce Python a zobrazila pomoc´ı NumPy. V´ ysledem v´ ypoˇctu m˚ uˇzete vidˇet na obr´azku n´ıˇze. D´elkou trasy je metoda srovnateln´a s metodou hled´an´ı nejbliˇzˇs´ıho souseda.
ˇ Obr´azek 4.7: Pouˇzit´ı metody vkl´ad´an´ı mˇest do trasy na b´ yval´ ych okresn´ıch mˇestech CR Celkov´a d´elka trasy = 4 854 km.
35
4.2.4. Metoda dvojit´ e minim´ aln´ı kostry grafu Tato metoda patˇr´ı jiˇz mezi sofistikovanˇejˇs´ı metody. Z´akladem je sestrojen´ı tzv. minim´aln´ı kostry grafu. Jedn´a se o podgraf grafu, pro kter´ y plat´ı, ˇze mezi kaˇzd´ ymi dvˇema vrcholy lze naj´ıt spojnici a celkov´e ohodnocen´ı hran v tomto grafu bude minim´aln´ı. Pˇri konstrukci tohoto podgrafu lze vyuˇz´ıt Kruskalova algoritmu. Postup tohoto algoritmu lze naj´ıt v pˇr´ıloze na konci pr´ace.
ˇ Obr´azek 4.8: Sestrojen´ı minim´aln´ı kostry grafu na b´ yval´ ych okresn´ıch mˇestech CR Celkov´a d´elka cest = 3 716 km. Metoda dvojit´e minim´aln´ı kostry grafu pak spoˇc´ıv´a pouze v dublov´an´ı kostry grafu. Tedy vytvoˇr´ıme novou mnoˇzinu a kaˇzd´a hrana v minim´aln´ı kostˇre grafu bude v n´ami novˇe vytvoˇren´e mnoˇzinˇe hran obsaˇzena pr´avˇe dvakr´at. Na t´eto mnoˇzinˇe hran pak lze sestrojit Euler˚ uv cyklus pouˇzit´ım vˇsech hran. Euler˚ uv cyklus pak jednoduˇse pˇrevedeme na Hamilton˚ uv. Proch´azen´ım Eulerova cyklu si postupnˇe zapisujeme navˇst´ıven´e vrcholy a vrcholy, kter´e se v seznamu budou opakovat vynech´ame. T´ım vznikne Hamilton˚ uv cyklus, kde kaˇzd´ y vrchol navˇst´ıv´ıme pr´avˇe jednou. [8] Tato metoda zaruˇcuje nejh˚ uˇre dvojn´asobnˇe dlouhou dr´ahu oproti optim´aln´ımu ˇreˇsen´ı, nebot’ plat´ı, ˇze kostra grafu bude m´ıt vˇzdy menˇs´ı celkov´e ohodnocen´ı trasy neˇz trasa optim´aln´ı.
36
4.2.5. Christofidesova metoda Algoritmus Christofides je pojmenov´an podle Nicose Christofidese, kter´ y jako prvn´ı navrhl tento zp˚ usob v´ ypoˇctu. Vˇetˇsina heuristik garantuje nejhorˇs´ı v´ ysledek ve dvojn´asobn´e v´ yˇsi oproti optimu (tedy nalezen´a trasa heuristikou je v nejhorˇs´ım pˇr´ıpadˇe dvakr´at tak dlouh´a neˇz optim´aln´ı trasa). Nicos Christofides navrhl rozˇs´ıˇren´ı algoritmu tak, aby nejhorˇs´ı moˇzn´ y v´ ysledek mˇel v˚ uˇci optimu pomˇer 3/2 (tedy nejhorˇs´ı pˇr´ıpad nalezen´e trasy bude o polovinu delˇs´ı neˇz d´elka optim´aln´ı trasy). Tento algoritmus je z´aroveˇ n i nejlepˇs´ım dosud zn´am´ ym algoritmem. [7] Vytvoˇr´ıme graf G = (V, E), kde vrcholy grafu budou n´ami navˇst´ıven´a mˇesta a E budou hrany mezi nimi. Konstrukce trasy pak prob´ıh´a n´asledovnˇe: • vytvoˇr´ıme minim´aln´ı kostru grafu G • vytvoˇr´ıme podmnoˇzinu vrchol˚ u C grafu, kter´a obsahuje pouze vrcholy s lich´ ym stupnˇem • na mnoˇzinˇe C vytvoˇr´ıme minim´aln´ı perfektn´ı p´arov´an´ı • hrany minim´aln´ı kostry grafu a minim´aln´ıho perfektn´ıho p´arov´an´ı sjednot´ıme do jedn´e mnoˇziny 1 • Z tohoto sjednocen´ı vytvoˇr´ıme Euler˚ uv cyklus • Euler˚ uv cyklus transformujeme na Hamilton˚ uv cyklus [7] Nyn´ı s v´ yhodou vyuˇzijeme pojm˚ u vysvˇetlen´ ych v kapitole 3. Je d˚ uleˇzit´e si uvˇedomit, ˇze Euler˚ uv cyklus sestroj´ıme v takto upraven´em podgrafu vˇzdy. Po konstrukci minim´aln´ı kostry grafu vyb´ır´ame pr´avˇe vrcholy s lich´ ym stupnˇem, kter´e n´am br´an´ı v konstrukci Eulerova cyklu. Ty pak d´ıky minim´aln´ımu p´arov´an´ı a sjednocen´ı budou m´ıt vˇsechny sud´ y stupeˇ n. Z vˇety 3.2.3 ale v´ıme, ˇze lze sestrojit Euler˚ uv cyklus. Pˇrevod Eulerova cyklu na Hamilton˚ uv pak vytvoˇr´ıme jednoduˇse tak, ˇze utvoˇr´ıme posloupnost po sobˇe jdouc´ıch vrchol˚ u v Eulerovˇe cyklu a opakuj´ıc´ı se vrcholy vynech´ame. T´ım vznikne Hamilton˚ uv cyklus na vˇsech vrcholech grafu G. Tuto metodu jsem opˇet zpracovala ve skriptovac´ım jazyce Python. Na grafu jsem vytvoˇrila minim´aln´ı kostru grafu pomoc´ı hladov´eho algoritmu (viz pˇr´ılohy pr´ace). Po t´e jsem urˇcila vrcholy grafu s lich´ ym poˇctem stupˇ n˚ u a na nich provedla minim´aln´ı pseudop´arov´an´ı. Vzhledem k pokroˇcil´e t´ematice pro algoritmy na minim´aln´ı perfektn´ı p´arov´an´ı v grafech jsem se rozhodla pro zjednoduˇsen´ y algoritmus, kter´ y na tˇechto bodech vytvoˇr´ı tzv. pseudop´arov´an´ı. Algoritmus funguje tak, ˇze setˇr´ıd´ı hrany mezi vybran´ ymi mˇesty dle velikosti a vybere nejkratˇs´ı hranu. Pot´e tyto dva jiˇz spojen´e vrcholy odstran´ı a opˇet zb´ yvaj´ıc´ı hrany setˇr´ıd´ı a vybere nejkratˇs´ı z nich. Takto pokraˇcuje, aˇz sp´aruje vˇsechny mˇesta. Tento probl´em jsem ˇreˇsila i pomoc´ı program˚ u, kter´e vytvoˇr´ı minim´aln´ı p´arov´an´ı na mnou dan´e mnoˇzinˇe vrchol˚ u s lich´ ym stupnˇem. Uk´azalo se, ˇze mnou navrˇzen´ y algoritmus generuje pro ˇ mnou navrˇzen´ y pˇr´ıklad 73 okresn´ıch mˇest v Cesk´e republice stejn´e ˇreˇsen´ı, jako algoritmus urˇcuj´ıc´ı minim´aln´ı p´arov´an´ı. Tyto dvˇe mnoˇziny jsem po t´e sjednotila a vytvoˇrila Euler˚ uv 1
Zde je nutno poznamenat, ˇze pokud bude libovoln´a hrana zastoupena v obou podmnoˇzin´ach, pak je nutn´e ji ve sjednocen´ı poˇc´ıtat jako objekt, kter´ y se v t´eto mnoˇzinˇe vyskytne dvakr´at. Coˇz je bohuˇzel i ˇc´ asteˇcn´e poruˇsen´ı definice grafu. Tuto konstrukci je nutn´e prov´est, abychom v dalˇs´ım kroku mohli sestrojit Euler˚ uv cyklus.
37
cyklus. Ten jsem pak jednoduch´ ym zp˚ usobem transformovala na Hamilton˚ uv cyklus, a t´ım jsem z´ıskala Christofidesovo ˇreˇsen´ı.
Obr´azek 4.9: Minim´aln´ı kostra grafu a pseudominim´aln´ı p´arovan´ı Celkov´a d´elka cest = 4 753 km.
ˇ sen´ı motodou Christofides Obr´azek 4.10: Reˇ Celkov´a d´elka trasy = 4 271 km.
38
4.3. Algoritmy pro zlepˇ sen´ı vlastnost´ı trasy obchodn´ıho cestuj´ıc´ıho V pˇredchoz´ım textu jsme shrnuli nˇekolik metod, jak spoˇc´ıtat ˇreˇsen´ı probl´emu obchodn´ıho cestuj´ıc´ıho s dostateˇcnˇe dobrou aproximac´ı od optim´aln´ı trasy. D´ale je nutno uv´est, ˇze tyto algoritmy mohou b´ yt u ´ˇcinn´e, ale st´ale je tu mnohdy moˇznost posunout dan´e nalezen´e pˇribliˇzn´e ˇreˇsen´ı jeˇstˇe v´ıce k ˇreˇsen´ı optim´aln´ımu. Vznik´a tedy nov´a tˇr´ıda algoritm˚ u, kter´e na vstupu dostanou jiˇz nˇejak´e libovolnˇe nalezen´e pˇribliˇzn´e ˇreˇsen´ı probl´emu obchodn´ıho cestuj´ıc´ıho a d´ale jej pouze pˇribliˇzuj´ı k optimu a trasu jako takovou jiˇz nekonstruuj´ı. Z tˇechto algoritm˚ u lze vybrat od jednoduch´ ych a rychl´ ych aˇz po sofistikovan´e a velmi efektivn´ı. Pak m´a tento pˇr´ıstup v´ yhodu tedy i v tom, ˇze lze libovolnˇe kombinovat konstrukˇcn´ı a zlepˇsuj´ıc´ı heuristiky a tedy i na dan´em probl´emu pouˇz´ıt danou nejvhodnˇejˇs´ı kombinaci metod. Tyto metody jsem studovala i v r´amci spolupr´ace s norskou univerzitou Molde University College pˇri ˇreˇsen´ı u ´kol˚ u projektu, na kter´em jsem se mohla pod´ılet. Z vlastn´ı zkuˇsenosti tedy v´ım, ˇze ˇrada tˇechto metod (pˇredevˇs´ım pokroˇcilejˇs´ıch) se pouˇz´ıv´a v praxi a velmi dobˇre funguje i na velk´ ych modelech, kter´e by v pˇr´ıpadˇe celoˇc´ıseln´eho line´arn´ıho programov´an´ı st´aly podstatnˇe v´ıce v´ ypoˇcetn´ıho ˇcasu.
4.3.1. 2-optim´ aln´ı algoritmus Jedn´ım z prvn´ıch algoritm˚ u je tzv. 2-optim´aln´ı algoritmus, kter´ y jako jeden z prvn´ıch 2 navrhl G. A. Croes jiˇz v roce 1958 . Tento algoritmus stav´ı na jednoduch´e metodˇe z´amˇeny dvou cest v celkov´e trase a testov´an´ı, zda je ohodnocen´ı novˇe vytvoˇren´e trasy menˇs´ı, neˇz ohodnocen´ı trasy p˚ uvodn´ı. N´azornˇe je moˇzno si tuto metodu pˇredstavit na obr´azku 4.11. Tato metoda je pomˇernˇe jednoduch´a a rychl´a, a proto se jej´ı pouˇzit´ı doporuˇcuje t´emˇeˇr vˇzdy. Laicky lze ˇr´ıci, ˇze po aplikov´an´ı tohoto algoritmu vznikne kolem mˇest tzv. bublina. Tedy z grafick´eho pohledu, kde vˇsechny cesty budou zn´azornˇeny jako u ´seˇcky, kter´e budou proporcion´alnˇe odpov´ıdat sv´e vzd´alenosti mezi mˇesty, se cesty nemohou kˇr´ıˇzit a budou obep´ınat mˇesta ve formˇe jedn´e velk´e zdeformovan´e bubliny. Nejl´epe je tento efekt vidˇet na n´asleduj´ıc´ıch aplikac´ıch, pˇredevˇs´ım na obr´azku 4.12.
Obr´azek 4.11: Sch´ema 2-optim´aln´ıho algoritmu Metodu lze konkr´etnˇe velmi dobˇre pochopit na algoritmu zapsan´em na dalˇs´ı stranˇe textu. Trasu obchodn´ıho cestuj´ıc´ıho reprezentujeme jednotliv´ ymi body, poskl´adan´ ymi za sebou v posloupnosti, v poˇrad´ı, v jak´em jsou navˇst´ıveny. Tuto poˇca´teˇcn´ı posloupnost 2
G. A. CROES (1958). A method for solving traveling salesman problems.
39
nazveme initial tour, pozdˇeji ve v´ ypoˇctu jiˇz jen promˇennou tour. Vstupem do algoritmu je z´aroveˇ n matice vzd´alenost´ı mezi mˇesty dist, kde dist(i, j) znaˇc´ı vzd´alenost mezi mˇestem i a j. Pokud bude distanˇcn´ı matice dist symetrick´a, pak je zˇrejmˇe i probl´em obchodn´ıho cestuj´ıc´ıho symetrick´ y. Nutno k tomuto algoritmu jeˇstˇe podotknout jednu specifikaci. Pokud bude vybr´ano mˇesto i = 1, pak by algoritmus pˇri v´ ypoˇctu distanˇcn´ı matice vybral mˇesto v promˇenn´e tour(0). To se m˚ uˇze zd´anlivˇe zd´at jako chyba algoritmu, proto definuji tour(0) jako stejn´e mˇesto na konci pole, tedy tour(a). Tento zd´anliv´ y nesoulad nepˇredstavuje v praxi probl´em, ’ nebot ˇrada jazyk˚ u m´a takto i nˇekter´a pole implementov´ana a je vhodn´e je tedy pouˇz´ıt. M´e vlastn´ı ˇreˇsen´ı v jazyce Python t´eto v´ yhody pˇr´ımo vyuˇz´ıv´a. Algoritmus pro nalezen´ı 2-optim´ aln´ı cesty Vstupem je vygenerovan´a poˇc´ateˇcn´ı trasa initial tour a matice vzd´alenost´ı dist. V´ ystupem je trasa tour, kter´a je 2-optim´aln´ı. begin tour := initial tour; a := length(tour); tour1 := [ ]; while tour1 !=tour Pokud tour1 == tour, pak je cyklus 2-optim´aln´ı. tour1 := tour for i := 1 to a step 1 do for j := 1 to a step 1 do u := dist(tour(i), tour(i − 1)) + dist(tour(j), tour(j − 1)); D´elka dvou cest, kter´e se maj´ı zamˇenit v := dist(tour(i), tour(j)) + dist(tour(i − 1), tour(j − 1)); D´elka dvou cest u zamˇenˇen´e varianty if u > v tour := tour.zamen mezi mesty(i, j); Funkce zmˇen´ı smˇer pr˚ uchodu mezi mˇesty i a j end end end end end
Tento algoritmus lze s v´ yhodou jeˇstˇe vylepˇsit. Staˇc´ı si povˇsimnout, ˇze v pˇr´ıpadˇe, kdy je zmˇena trasy v´ yhodn´a, mus´ı platit, ˇze d´elka jedn´e ze zamˇenˇen´ ych hran mus´ı b´ yt kratˇs´ı neˇz d´elka p˚ uvodn´ı nezamˇenˇen´e hrany. Lze tedy vytvoˇrit dvˇe jednoduˇsˇs´ı podm´ınky a udˇelat pˇr´ıpadnou z´amˇenu aˇz v pˇr´ıpadˇe, ˇze algoritmus spln´ı alespoˇ n jednu z nich. T´eto v´ yhody jsem tak´e vyuˇzila a aplikovala ji na sv˚ uj v´ ypoˇcet v programovac´ım jazyce Python. Samotn´ y zdrojov´ y k´od je moˇzno shl´ednout na pˇriloˇzen´em CD. Metodu jsem aplikovala na jiˇz dˇr´ıve vypoˇcten´e varianty poˇca´teˇcn´ıch tras obchodn´ıho cestuj´ıc´ıho. Na obr´azc´ıch si lze vˇsimnout jiˇz dˇr´ıve zmiˇ novan´eho tzv. bublinov´eho efektu, tedy nekˇriˇzen´ı cest. 40
Z tˇechto v´ ypoˇct˚ u jasnˇe vypl´ yv´a, ˇze rozd´ıl mezi nejhorˇs´ım a nejlepˇs´ım ˇreˇsen´ım Metody nejbliˇzˇs´ıho souseda po aplikov´an´ı 2-optim´aln´ıho algoritmu je t´emˇeˇr setˇren. P˚ uvodn´ı rozd´ıl t´emˇeˇr 760 kilometr˚ u byl d´ıky aplikaci 2-optim´aln´ıho algoritmu sn´ıˇzen na zhruba 207 kilometr˚ u. Pozdˇeji v textu uvid´ıme, ˇze tento rozd´ıl lze jeˇstˇe v´ıce sn´ıˇzit.
41
Obr´azek 4.12: Pouˇzit´ı 2-optim´aln´ı metody na jednotliv´a poˇca´teˇcn´ı ˇreˇsen´ı.
42
4.3.2. 3-optim´ aln´ı algoritmus Tento algoritmus je velmi podobn´ y 2-optim´aln´ımu algoritmu. Jedinou zmˇenou je to, ˇze m´ısto dvou cest jsou zamˇenˇeny cesty tˇri. Algoritmus je u ´ˇcinnˇejˇs´ı, co se t´ yˇce zlepˇsen´ı trasy a pˇribl´ıˇzen´ı se optimu. Na druhou stranu je o nˇeco n´aroˇcnˇejˇs´ı, neˇz 2-optim´aln´ı algoritmus. Moˇznosti pˇrepnut´ı hran reprezentuje obr´azek 4.13. Moˇznosti pˇrepnut´ı hran jsou pouze dvˇe. Druhou variantu je moˇzn´e rotovat na cyklu, ale jedn´a se principi´alnˇe o stejnou zmˇenu.
Obr´azek 4.13: Sch´ema 3-optim´aln´ıho algoritmu Algoritmus pro vytvoˇren´ı 3-optim´aln´ı cesty je opˇet uveden v pseudok´odu. Vstupem do algoritmu je opˇet libovolnˇe zvolen´a poˇc´ateˇcn´ı trasa initial tour a matice vzd´alenost´ı v grafu dist. Algoritmus vybere vˇsechny kombinace trojic, kter´e lze zamˇenit a spoˇc´ıt´a pro nˇe jak p˚ uvodn´ı, tak zamˇenˇenou d´elku trasy. Tyto d´elky tras seˇrad´ı dle velikosti a najde tedy nejv´ yhodnˇejˇs´ı variantu. Pokud je jedna ze z´amˇen v´ yhodnˇejˇs´ı, pak ji provede. Je nutn´e si povˇsimnout, ˇze zde mus´ıme poˇc´ıtat se dvˇema variantami z´amˇeny mˇest tour.zamen mezi mesty1(i, j, k) a tour.zamen mezi mesty2(i, j, k), nebot’ se jedn´a o dvˇe r˚ uzn´e z´amˇeny a u jedn´e z nich se smˇer pr˚ uchodu ani v jedn´e ˇc´asti cyklu nezmˇen´ı (prvn´ı varianta z´amˇeny) a u druh´e se mˇen´ı poˇrad´ı mˇest i smˇer pr˚ uchodu v alespoˇ n jedn´e ˇca´sti cyklu. Tuto metodu lze zefektivnit t´ım, ˇze nebude proch´azet vˇsechny trojice mˇest, ale opakuj´ıc´ı se trojice bude vynech´avat, takˇze cyklem projde jen pˇribliˇznˇe ˇsestina moˇznost´ı. To je ale vykoupeno dalˇs´ım testov´an´ım tras, protoˇze jiˇz nebude zahrnuta druh´a varianta zmˇeny trasy obecnˇe a je tˇreba ji testovat na vˇsechny druhy rotovan´ ych variant. Pˇresto tato metoda urychl´ı v´ ypoˇcet alespoˇ n ˇca´steˇcnˇe. Algoritmus 3-opt jsem v modifikovan´e verzi naprogramovala v programovac´ım jazyce Python a pouˇzila na trasy jiˇz dˇr´ıve spoˇc´ıtan´e heuristikami. Verzi algoritmu lze naj´ıt na pˇriloˇzen´em CD na zadn´ıch desk´ach pr´ace.
43
Algoritmus pro nalezen´ı 3-optim´ aln´ı cesty Vstupem je vygenerovan´a poˇc´ateˇcn´ı trasa initial tour a matice vzd´alenost´ı dist. V´ ystupem je trasa tour, kter´a je 3-optim´aln´ı. begin tour := initial tour; a := length(tour); tour1 := [ ]; while tour1 !=tour Pokud tour1 == tour, pak je cyklus 2-optim´aln´ı. tour1 := tour for i := 1 to a step 1 do for j := 1 to a step 1 do for k := 1 to a step 1 do u := dist(tour(i), tour(i − 1)) + dist(tour(j), tour(j − 1)) +dist(tour(k), tour(k − 1)); D´elka tˇr´ı cest, kter´e se maj´ı zamˇenit. v := dist(tour(i − 1), tour(j)) + dist(tour(i), tour(g − 1)) +dist(tour(k), tour(j − 1)); Prvn´ı ze zmˇen dle obr´azku 4.13 w := dist(tour(i − 1), tour(j − 1)) + dist(tour(i), tour(k − 1)) +dist(tour(j), tour(k)); Jedna z rotovan´ ych z´amˇen obr´azku 4.13 nejvyhodnejsi varianta := sort(u, v, w) if nejvyhodnejsi varianta(1) = v tour := tour.zamen mezi mesty(i, j, k); Funkce zmˇen´ı smˇer pr˚ uchodu mezi mˇesty i, j a k dle prvn´ıho pˇrepnut´ı end if nejvyhodnejsi varianta(1) = w tour := tour.zamen mezi mesty2(i, j, k); Funkce zmˇen´ı smˇer pr˚ uchodu mezi mˇesty i, j a k dle druh´eho pˇrepnut´ı end end end end end end
44
45
Obr´azek 4.14: Pouˇzit´ı 3-optim´aln´ı metody na jednotliv´a poˇca´teˇcn´ı ˇreˇsen´ı.
4.3.3. k-optim´ aln´ı algoritmus Nen´ı nutn´e konˇcit s v´ ypoˇcty na 3-optim´aln´ım algoritmu a lze s touto technikou doj´ıt jeˇstˇe d´al. Lze pokraˇcovat od 4-optim´aln´ıho algoritmu aˇz k k-optim´aln´ımu algoritmu. Tyto algoritmy ale spotˇrebuj´ı mnohem v´ıce v´ ypoˇcetn´ıho ˇcasu, a pˇri st´ale menˇs´ım efektu na zlepˇsen´ı celkov´e d´elky trasy k-optim´aln´ıho algoritmu oproti k − 1-optim´aln´ımu algoritmu. Tyto metody se proto neaplikuj´ı pro a > 4 a pro 4-optim´aln´ı se pouˇz´ıv´a vˇetˇsinou jen konstrukce tzv. pˇrekˇr´ıˇzen´ ych most˚ u (anglicky: the crossing bridges) [8]. Tuto konstrukci m˚ uˇzeme shl´ednout na obr. 4.15.
Obr´azek 4.15: Sch´ema metody crossing bridges Tuto metodu jsem jiˇz neimplementovala a nemohu tedy posoudit, jako moc je u ´ˇcinn´a. V´ıce informac´ı k tomuto t´ematu lze z´ıskat v ˇcl´anku autora K. Helsgaun, “An Effective Implementation of the Lin-Kernighan Traveling Salesman Heuristic”.
46
5. Porovn´ an´ı v´ ysledk˚ u testov´ an´ı metod V pˇredchoz´ıch kapitol´ach byly pops´any nˇekter´e metody pro ˇreˇsen´ı u ´lohy obchodn´ıho cestuj´ıc´ıho. D˚ uleˇzit´ ym dalˇs´ım krokem je tedy srovn´an´ı u ´ˇcinnosti tˇechto metod mezi sebou a vyvozen´ı z´avˇeru o vhodnosti pouˇzit´ı. Tyto z´avˇery budou vyvozeny z modelov´eho ˇ e republiky. pˇr´ıkladu okresn´ıch mˇest Cesk´
ˇ V´ ysledky na modelu okresn´ıch mˇ est Cesk´ e republiky Pro dan´ y model byly provedeny vˇsechny moˇzn´e kombinace dosud popsan´ ych ˇreˇsen´ı. V´ yvoj tˇechto ˇreˇsen´ı byl zanesen do grafu 5.1, kter´ y zn´azorˇ nuje poˇc´ateˇcn´ı aproximaci optim´aln´ıho ˇreˇsen´ı a d´ale aplikac´ı 2-optim´aln´ıho a 3-optim´aln´ıho algoritmu. Na svisl´e ose grafu je zn´azornˇena celkov´a d´elka nalezen´e trasy pro danou metodu. Na vodorovn´e ose je zn´azornˇen postup jednotliv´ ych aplikac´ı k-optim´aln´ıch algoritm˚ u, pˇriˇcemˇz ˇc´ıslo 1 reprezentuje p˚ uvodn´ı metodu, kter´a nalezne aproximaci cesty, ˇc´ıslo 2 reprezentuje 2-optim´aln´ı algoritmus a ˇc´ıslo 3 pak 3-optim´aln´ı algoritmus. Pro kaˇzdou lomenou ˇc´aru v grafu tedy plat´ı, ˇze prvn´ı hodnota reprezentuje ˇreˇsen´ı dan´e heuristiky, druh´a pak aplikaci 2-optim´aln´ıho algoritmu na toto dan´e ˇreˇsen´ı a tˇret´ı hodnota urˇcuje d´elku trasy po aplikaci 3-optim´aln´ıho ˇreˇsen´ı na danou p˚ uvodn´ı metodu. Graf se m˚ uˇze zd´at nepˇrehledn´ y mnoˇzstv´ım ˇcar, proto jsou nˇekter´e z nich odliˇseny tlouˇst’kou ˇca´ry. Nen´ı zde d˚ uleˇzit´a ani tak hodnota dan´eho ˇreˇsen´ı, ale vztah a v´ yvoj ˇreˇsen´ı. Pozorovan´e charakteristiky jsou tedy sp´ıˇse kvantitativn´ı. Barevn´e oznaˇcen´ı jednotliv´ ych metod v grafu je pak zvoleno takto: • Metody nejbliˇzˇs´ıho souseda jsou zn´azornˇeny nejtenˇc´ımi liniemi. Jsou zde zobrazeny vˇsechny poˇca´teˇcn´ı aproximace, kter´e z´avisej´ı na startovn´ım mˇestˇe. • Metoda vkl´ad´an´ı mˇest do trasy je zaznaˇcena tmavˇe modrou tlustou ˇcarou. • Christofidesova metoda je zn´azornˇena tmavˇe ˇcervenou tlustou ˇcarou. • Optim´aln´ı ˇreˇsen´ı spoˇc´ıtan´e pomoc´ı programu GAMS je zn´azornˇeno tmavˇe zelenou tlustou ˇcarou. Optim´aln´ı ˇreˇsen´ı je v grafu konstantn´ı a urˇcuje tedy hranici, ke kter´e se vˇsechna ostatn´ı ˇreˇsen´ı postupnou aplikac´ı k-optim´aln´ıch metod bl´ıˇz´ı. Ze sklonu jednotliv´ ych pˇr´ımek je patrn´e, jak moc se ˇreˇsen´ı danou metodou zlepˇs´ı a pˇribl´ıˇz´ı se optim´aln´ımu. Pro p˚ uvodn´ı metody vid´ıme, ˇze nejlepˇs´ı aproximac´ı optim´aln´ıho ˇreˇsen´ı je v naˇsem pˇr´ıpadˇe skuteˇcnˇe Christofidesova metoda, zat´ımco soubor aproximac´ı metodou nejbliˇzˇs´ıho souseda tvoˇr´ı mnohem horˇs´ı odhady od optim´aln´ı metody. Metoda vkl´ad´an´ı mˇest do trasy m´a tak´e odhad trasy podobn´ y odhad˚ um metod nejbliˇzˇs´ıho souseda. Po aplikaci 2-optim´aln´ıho algoritmu je ale v grafu vidˇet velk´e zlepˇsen´ı pro metodu nejbliˇzˇs´ıho souseda a z´aroveˇ n pouze mal´e zlepˇsen´ı Christofidesovy metody. Metody nejbliˇzˇs´ıho souseda se jiˇz pˇribl´ıˇzily odhadu Christofidesovy metody. Pˇri aplikaci 3-optim´aln´ıho ˇreˇsen´ı na dan´e p˚ uvodn´ı metody je pak zcela evidentn´ı srovnatelnost jednotliv´ ych metod. 47
Obr´azek 5.1: Graf v´ ysledk˚ u
48
Christofidesova metoda po aplikaci 3-optim´aln´ıho algoritmu se dost´av´a sv´ ym ohodnocen´ım cesty mezi pr˚ umˇer metod nejbliˇzˇs´ıho souseda s 3-optim´aln´ım algoritmem. P˚ uvodn´ı metoda vkl´ad´an´ı cest do trasy s 3-optim´aln´ım algoritmem dokonce pˇredˇcila Christofidesovu metodu. Nejlepˇs´ı aproximaci pak poskytla metoda nejbliˇzˇs´ıho souseda, kter´a se svoj´ı p˚ uvodn´ı aproximac´ı zaˇradila mezi pr˚ umˇern´e. Zd´anlivˇe ide´aln´ı pouˇzit´ı celoˇc´ıseln´eho line´arn´ıho programov´an´ı v rozs´ahlejˇs´ıch u ´loh´ach je pˇr´ıliˇs ˇcasovˇe n´aroˇcn´e. Celkovˇe tedy vznik´a srovn´an´ı jednotliv´ ych metod a vhodnost jejich pouˇzit´ı. Protoˇze k-optim´aln´ı algoritmy jsou pomˇern´e jednoduch´e na teorii a programov´an´ı, ale pomˇernˇe n´aroˇcn´e na v´ ypoˇcetn´ı ˇcas, hod´ı se v kombinaci s jednoduˇsˇs´ımi poˇc´ateˇcn´ımi aproximacemi optim´aln´ıho ˇreˇsen´ı pro menˇs´ı u ´lohy, kter´e vyˇreˇs´ı s dostateˇcnˇe dobr´ ym odhadem, jenˇz je srovnateln´ y s pouˇzit´ım Christofidesovy metody. Plat´ı tedy: ´ Ulohy o menˇ s´ım rozsahu je vhodn´ e ˇ reˇ sit jednoduˇ sˇ s´ımi metodami v kombinaci s k -optim´ aln´ımi algoritmy Christofidesova metoda je naopak n´aroˇcnˇejˇs´ı na teorii a spr´avn´e naprogramov´an´ı. Po t´e pracuje velmi efektivnˇe a s mnohem menˇs´ım objemem v´ ypoˇct˚ u. Hod´ı se proto pro rozs´ahlejˇs´ı u ´lohy, kter´e vyuˇzij´ı jej´ı sofistikovanˇejˇs´ı pˇr´ıstup a vyuˇzij´ı efektivnˇe poskytnut´ y v´ ypoˇcetn´ı ˇcas. Plat´ı tedy: ´ Ulohy o vˇ etˇ s´ım rozsahu je vhodn´ eˇ reˇ sit sofistikovanˇ ejˇ s´ımi metodami (napˇ r. Christofidesovou metodou)
49
50
6. Pokroˇ cil´ e algoritmy a modely 6.1. Pokroˇ cil´ e algoritmy V praxi se ovˇsem pouˇz´ıvaj´ı i pokroˇcilejˇs´ı algoritmy neˇz k-optim´aln´ı. Podrobnˇe se jimi v textu zab´ yvat jiˇz nebudeme, pˇresto si dovol´ım letmo zm´ınit nˇekolik z nich, protoˇze pˇredstavuj´ı smˇery, ve kter´ ych je moˇzn´e na moji pr´aci d´ale nav´azat. Tabu-Search Jedn´a se o meta-heuristiku, kter´a dok´aˇze potlaˇcit neduhy metody nejbliˇzˇs´ıho souseda. Probl´em u metody nejbliˇzˇs´ıho souseda je ten, ˇze ˇcasto ˇreˇsen´ı skonˇc´ı v lok´aln´ım optimu a st´avaj´ıc´ı algoritmy jiˇz nemaj´ı moˇznost posunout ˇreˇsen´ı bl´ıˇze k optimu. Tomu se m˚ uˇzeme vyhnout pouˇzit´ım pr´avˇe metody Tabu-Search. Tato metoda totiˇz povoluje v pr˚ ubˇehu v´ yvoje ˇreˇsen´ı konat i nev´ yhodn´e zmˇeny trasy a t´ım je schopna se vymanit z lok´aln´ıch optim. Aby ovˇsem nedoch´azelo k cyklick´emu v´ yvoji ˇreˇsen´ı a znehodnocen´ı algoritmu, jsou pˇredchoz´ı kroky v postupu ˇreˇsen´ı uchov´av´any v tzv. tabu-listu a algoritmus se k nim za dan´ ych podm´ınek nesm´ı vr´atit. Odtud pak plyne n´azev metody Tabu-Search, nebot’ nˇekter´e zmˇeny v ˇreˇsen´ı jsou pro algoritmus tabu. [8] Simulated Annealing V ˇcesk´em jazyce tak´e tzv. simulovan´e ˇz´ıh´an´ı. Jedn´a se o pravdˇepodobnostn´ı optimalizaˇcn´ı metodu zaloˇzenou na simulaci ˇz´ıh´an´ı oceli. Metoda se opˇet snaˇz´ı vymanit z lok´aln´ıch minim a vytv´aˇr´ı n´ahodn´e prohled´av´an´ı dan´eho okol´ı aktu´aln´ıho ˇreˇsen´ı. Pokud nalezne lepˇs´ı ˇreˇsen´ı, pak pˇrepne do tohoto ˇreˇsen´ı. Pr´avˇe umoˇznˇen´ı zhorˇsen´ı ˇreˇsen´ı m´a za n´asledek, ˇze algoritmus neuv´ızne v lok´aln´ım minimu. Pˇri kaˇzd´em posunu se prohled´avan´e okol´ı zmenˇsuje, aby se splnil poˇzadavek konvergence algoritmu. [8] Ant Colony Optimization Optimalizace pomoc´ı metody mravenˇc´ı kolonie pˇredstavuje pomˇernˇe nov´ y pˇr´ıstup k ˇreˇsen´ı t´eto problematiky, kter´ y souvis´ı pˇredevˇs´ım s rozvojem poˇc´ıtaˇcov´e techniky. Princip t´eto metody vych´az´ı z chov´an´ı koloni´ı hmyzu. D´ıky aplikov´an´ı jednoduch´ ych pravidel pro jedince vznik´a komplexn´ı chov´an´ı decentralizovan´eho syst´emu jedinc˚ u jako celku. Jsou tedy v r´amci metody implementov´an´ı tzv. umˇel´ı mravenci, kteˇr´ı umˇej´ı mezi sebou kooperovat, ˇr´ıdit se podle tzv. feromonov´e stopy a pomoc´ı tˇechto feromonov´ ych stop spolu komunikovat. Takto vytvoˇren´e spoleˇcenstv´ı pak proch´az´ı n´ami vytvoˇren´ y graf. Postupem ˇcasu se cesty, kudy proch´az´ı jednotlivci ust´al´ı na ˇreˇsen´ı v´ yhodn´em pro celou kolonii. T´ım se nalezne nˇejak´e lok´aln´ı minimum. [8]
6.2. Vehicle routing problem Zd´alo by se, ˇze probl´em obchodn´ıho cestuj´ıc´ıho je u ´zce specializovan´ y probl´em, kter´ y v praxi uˇz moc vyuˇzit´ı nenalezne. Naˇstˇest´ı opak je pravdou a vˇsechny poznatky z chov´an´ı t´eto u ´lohy lze uplatnit jako pod´ ulohu dalˇs´ıch rozs´ahlejˇs´ıch u ´loh. Tˇemito u ´lohami jsou pr´avˇe VRP. V pln´em anglick´em n´azvu Vehicle Routing Problems. V ˇcesk´em jazyce se s pˇrekladem v odborn´e literatuˇre t´emˇeˇr nesetk´ame. N´azev lze pˇreloˇzit jako probl´emy pˇrepravy s v´ıce vozidly (d´ale oznaˇc´ıme jako VRP). VRP je rozˇs´ıˇren´ım u ´lohy obchodn´ıho cestuj´ıc´ıho a v praxi je velmi vyuˇz´ıvan´a.
51
Obr´azek 6.1: Princip VRP. [11] Mˇejme uk´azkov´e mˇesto, kter´e reprezentujeme grafem G = (V, E) tak, ˇze vrcholy V reprezentuj´ı z´akazn´ıky, kter´ ym mus´ıme dodat urˇcit´ y typ zboˇz´ı, nebo depa, kde m´ame zaparkov´any dopravn´ı prostˇredky pro pˇrepravu. Hrany E grafu reprezentuj´ı cesty mezi z´akazn´ıky a depy. Z´aroveˇ n m˚ uˇze platit pro urˇcitou podmnoˇzinu hran F ⊆ E, ˇze pr´avˇe tyto hrany mus´ıme ve sv´em ˇreˇsen´ı pouˇz´ıt. Depa jsou pak takov´e vrcholy grafu G, ˇze pro kaˇzd´ y takov´ y vrchol definujeme mi vozidel, kter´e jsou v dan´em depu k dispozici. Pokud zde existuje podmnoˇzina hran F , pak takto zvolenou mnoˇzinou vˇetˇsinou modelujeme vˇetˇs´ı mnoˇzstv´ı z´akazn´ık˚ u, kteˇr´ı s´ıdl´ı v nˇejak´e dostateˇcnˇe kompaktn´ı oblasti. Dobr´ ym pˇr´ıkladem m˚ uˇze b´ yt rozvoz poˇsty ˇci odvoz domovn´ıho odpadu z jedn´e konkr´etn´ı ulice. [4] Vˇetˇsinou vˇsak takto sloˇzitou u ´lohu neˇreˇs´ıme. Pokud nem´ame definovanou podmnoˇzinu hran F , pak se u ´loha zjednoduˇs´ı na Node routing problem (tedy u ´lohu ˇreˇs´ıc´ı pˇrepravu s v´ıce vozidly jen mezi jednotliv´ ymi z´akazn´ıky jako vrcholy grafu). Pokud na druhou stranu ˇreˇs´ıme pouze probl´em s podmnoˇzinou F a v grafu neexistuj´ı ˇza´dn´ı dalˇs´ı z´akazn´ıci, kteˇr´ı jsou reprezentov´ani vrcholy v grafu, pak takov´eto u ´loze ˇr´ık´ame Arc routing problem. V praxi se uplatˇ nuje napˇr´ıklad pˇri sv´aˇzen´ı odpadu v ulic´ıch mˇesta. Snadno vid´ıme, ˇze u ´loha obchodn´ıho cestuj´ıc´ıho je speci´aln´ı pˇr´ıpadem u ´lohy VRP, kdy m´ame k dispozici pouze jedno vozidlo v jednom depu a z´akazn´ıky reprezentujeme jako ´ vrcholy v grafu. Ulohu ˇc´ınsk´eho listonoˇse zase m˚ uˇze pˇredstavovat speci´aln´ı pˇr´ıpad VRP, kdy m´ame k dispozici pouze jedno vozidlo v jednom depu a snaˇz´ıme se obslouˇzit z´akazn´ıky reprezentovan´e pouze hranami E v grafu. Dalˇs´ımi dodateˇcn´ ymi zpˇresˇ nuj´ıc´ımi podm´ınkami pro definov´an´ı modelu mohou b´ yt napˇr´ıklad podm´ınky: • mnoˇzstv´ı vozidel mi nemus´ı b´ yt fixn´ı, m˚ uˇze b´ yt nastavena pouze horn´ı hranice vozidel k dispozici • celkov´ y n´aklad vozidla bˇehem cesty nesm´ı pˇrekroˇcit danou kapacitu vozidla • doba cesty vozidla nesm´ı pˇrekroˇcit zvolen´ y ˇcasov´ y limit pro danou smˇenu ˇridiˇce vozidla 52
• z´akazn´ıci si pˇrej´ı b´ yt obslouˇzeni v pˇredem dan´ ych ˇcasov´ ych intervalech (v angl. time windows) • nˇekteˇr´ı z´akazn´ıci mus´ı b´ yt obslouˇzeni dan´ ym typem vozidla Pokud nastav´ıme podm´ınky pˇr´ıliˇs omezuj´ıc´ı, pak se m˚ uˇze st´at, ˇze ˇreˇsen´ı u ´lohy ani nebude existovat, nebot’ jej i nevhodnˇe zvolen´a podm´ınka m˚ uˇze zcela vyˇsachovat ze hry. VRP b´ yvaj´ı ˇcasto velmi komplexn´ı u ´lohou, proto se u tˇechto u ´loh se jiˇz projev´ı v´ yhoda heuristik, protoˇze je lze aplikovat efektivnˇe na m´ıru dan´emu konkr´etn´ımu probl´emu a obdrˇzet tak dobr´e ˇreˇsen´ı v kr´atk´em ˇcase. Tyto metody jsou podrobnˇe a prakticky pops´any v knize [4].
53
54
7. Z´ avˇ er M´a pr´ace shrnuje z´akladn´ı problematiku modelov´an´ı dopravn´ıch u ´loh. D˚ uraz je kladen na formulaci a ˇreˇsen´ı u ´lohy obchodn´ıho cestuj´ıc´ıho, a to jak pomoc´ı celoˇc´ıseln´eho ˇreˇsen´ı, tak pˇredevˇs´ım pomoc´ı grafov´ ych algoritm˚ u a jejich modifikac´ı. Vu ´vodu se zab´ yv´am motivac´ı, aplikacemi a z´akladn´ımi pojmy z t´eto problematiky. Vzhledem k velk´e variabilitˇe pˇr´ıstup˚ u k modelov´an´ı a ˇreˇsen´ı r˚ uzn´ ych dopravn´ıch u ´loh jsem pr´aci rozdˇelila na d´ılˇc´ı celky. Nejprve se zab´ yv´am line´arn´ım programov´an´ım a jeho aplikac´ı na jednoduch´ y dopravn´ı ˇ e republice. Na tomto pˇr´ıkladu jsou demonstrov´any probl´em v r´amci z´asobov´an´ı v Cesk´ z´akladn´ı principy sestavov´an´ı modelu a z´akladn´ı uˇzit´ı programu GAMS a tabulkov´eho kalkul´atoru MS Excel. D´ale se zab´ yv´am celoˇc´ıseln´ ym programov´an´ım a ˇreˇsen´ım probl´emu obchodn´ıho cesˇ e republiky pomoc´ı protuj´ıc´ıho na vlastn´ım vytvoˇren´em modelu okresn´ıch mˇest Cesk´ gramu GAMS. V´ ysledek tˇechto metod pot´e slouˇz´ı k referenˇcn´ımu porovn´an´ı s efektivitou v´ ypoˇctu v dalˇs´ı ˇc´asti pr´ace. V druh´e ˇca´sti pr´ace se vˇenuji ˇreˇsen´ım u ´lohy obchodn´ıho cestuj´ıc´ıho pomoc´ı heuristik, tedy algoritm˚ u, kter´e spoˇc´ıtaj´ı dostateˇcnˇe dobr´e ˇreˇsen´ı, kter´e ovˇsem nemus´ı b´ yt optimem u ´lohy. Pro lepˇs´ı pochopen´ı teorie jsem zaˇradila pˇred samotn´ y v´ yklad metod kapitolu vˇenuj´ıc´ı se z´aklad˚ um teorie graf˚ u, kde jsem vysvˇetlila z´akladn´ı pojmy potˇrebn´e k pochopen´ı dalˇs´ıch algoritm˚ u. D´ale uv´ad´ım nˇekolik pˇr´ıklad˚ u heuristik a jejich aplikaci na mnou ˇ vytvoˇren´ y model okresn´ıch mˇest Cesk´e republiky. N´asleduje v´ yklad a aplikace zlepˇsuj´ıc´ıch algoritm˚ u na ˇreˇsen´ı spoˇc´ıtan´e p˚ uvodn´ımi heuristikami. Vˇsechny algoritmy jsem implementovala v r´amci jazyka Python a vˇsechna takto z´ıskan´a ˇreˇsen´ı a jejich v´ yvoj v pr˚ ubˇehu aplikace zlepˇsuj´ıc´ıch algoritm˚ u jsou zanesena do grafu 5.1. V pˇredposledn´ı kapitole porovn´av´am v´ ysledky v´ ypoˇct˚ u, jejich vlastnosti a efektivitu jednotliv´ ych metod. V posledn´ı kapitole pak nastiˇ nuji moˇznost dalˇs´ıho v´ yvoje v r´amci rozˇsiˇrov´an´ı sloˇzitosti u tˇechto u ´loh.
55
56
Literatura ˇ a republika: seˇsitov´y atlas pro z´akladn´ı ˇskoly a v´ıcelet´a gymn´azia. 1. vyd. Praha: [1] Cesk´ Kartografie Praha, 2006, 32 s. ISBN 80-701-1870-9. [2] DANTZIG, G B, FULKERSON, and JOHNSON. Solution of a Large-Scale TravelingSalesman Problem. Journal of the Operations Research Society of America, 1954, 393–410 s. [3] GAMS Model library [online]. 2012 [cit. 2012-03-25]. Dostupn´e z: http://www.gams. com/modlib/libhtml/alfindx.htm [4] GHIANI, Gianpaolo, Gilbert LAPORTE a Roberto MUSMANNO. Introduction to logistics systems planning and control. Hoboken, NJ, USA: J. Wiley, c2004, 352 s. ISBN 04-708-4917-7. [5] GEORGIA INSTITUTE OF TECHNOLOGY. The Traveling Salesman Problem Website [online]. 2012 [cit. 2012-03-25]. Dostupn´e z: http://www.tsp.gatech.edu/ ˇ Y. ´ P. Z´aklady teorie graf˚ [6] HLINEN u: pro (nejen) informatiky [online]. [cit. 2012-04-01]. Dostupn´e z: http://is.muni.cz/el/1433/podzim2011/MA010/um/Grafy-text11. pdf?lang=cs [7] CHRISTOFIDES, Nicos. Graph theory: an algorithmic approach. New York: Academic Press, 1975, 400 s. ISBN 01-217-4350-0. [8] NILSSON, C. Heuristics for the traveling salesman problem. Tech. Report, Link¨oping University, Sweden, 2003. [cit. 2012-03-09]. Dostupn´e z: http://www.ida.liu.se/ ~TDDB19/reports_2003/htsp.pdf [9] POPELA, P. Optimalizaˇcn´ı modely. (pˇredn´aˇsky) Brno: VUT, FSI, zimn´ı semestr akademick´eho roku 2010/2011. ˇ [10] SEDA, M. Teorie graf˚ u[online]. [Skripta pro 5. roˇcn´ık studia.] Brno: VUT, FSI, 2003. [cit. 2012-03-09]. Dostupn´e z: http://www.uai.fme.vutbr.cz/~mseda/TG03_ MS.pdf [11] TU Dortmund, PG 534: Vehicle Routing. In: [online]. [cit. 2012-05-20]. Dostupn´e z: http://ls11-www.cs.uni-dortmund.de/people/chimani/VehicleRouting/ [12] Wolfram MathWorld [online]. [cit. 2012-05-20]. Dostupn´e z: http://mathworld. wolfram.com/ [13] WOLSEY, Laurence A. Integer programming. New York: John Wiley, 1998, 264 s. ISBN 04-712-8366-5.
57
58
8. Pˇ r´ılohy 8.1. Minim´ aln´ı kostra grafu Kruskal˚ uv hladov´ y algoritmus funguje na jednoduch´em principu. Setˇr´ıd´ı vˇsechny hrany grafu dle velikosti a pot´e vytv´aˇr´ı podgraf grafu tak, ˇze pˇrid´a danou v poˇrad´ı nejmenˇs´ı hranu do grafu tehdy, pokud jej´ım pˇrid´an´ım nevznik´a ˇz´adn´ y cyklus v grafu. Pak pˇrejde na dalˇs´ı nejmenˇs´ı hranu v poˇrad´ı. Tento cyklus je ukonˇcen po vytvoˇren´ı kostry grafu. Tedy jak´ ymkoliv dalˇs´ım pˇrid´an´ım hrany vznikne v grafu cyklus. Kruskal˚ uv algoritmus pro nalezen´ı minim´ aln´ı kostry grafu. Vstupem je seznam mˇest mesta, hran mezi nimi cesty a matice vzd´alenost´ı dist. y obsahuje vybran´e cesty. V´ ystupem je grafov´ y strom min strom, kter´ begin min strom= [ ] for n ∈ mesta vytvor mnozinu(n) Pro kaˇzd´e mˇesto vytvoˇr´ı samostatnou mnoˇzinu. end cesty.sort(dist) Setˇr´ıd´ı cesty dle matice vzd´alenosti dist for n := 1 to length(cesty) a = cesty(n); if mnozina(a.vychozi mesto) ! = mnozina(a.koncove mesto) Pokud jsou mnoˇziny obsahuj´ıc´ı poˇc´ateˇcn´ı a koncov´e mˇesto disjunktn´ı, pak vloˇz´ı hranu do kostry grafu. min strom.pridej(a) end end end
8.2. Algoritmus pro minim´ aln´ı p´ arov´ an´ı v grafu Z d˚ uvodu velk´e sloˇzitosti pˇri hled´an´ı minim´aln´ıho p´arov´an´ı v grafu jsem navrhla vlastn´ı alespoˇ n pˇribliˇzn´e ˇreˇsen´ı tohoto p´arov´an´ı. Algoritmus pracuje na principu podobn´em, jako Kruskal˚ uv algoritmus. Hrany grafu setˇr´ıd´ıme podle velikosti. Vˇzdy vybereme nejmenˇs´ı hranu a pˇrid´ame ji do mnoˇziny hran podgrafu p´arov´an´ı. Pot´e odstran´ıme vˇsechny hrany, kter´e vych´azej´ı z mˇest, kter´e jsme v pˇredchoz´ım kroku nap´arovali a opˇet pokraˇcujeme v minim´aln´ım p´arov´an´ı, tentokr´ate s N − 2 mˇesty.
59
Algoritmus pro pseudop´ arov´ an´ı v grafu Vstupem je seznam hran mezi mˇesty cesty, seznam mˇest mesta a matice vzd´alenost´ı dist. V´ ystupem je mnoˇzina hran min match, kter´a obsahuje vybran´e cesty. begin min match= [ ] cesty.sort(dist) Setˇr´ıd´ı cesty dle matice vzd´alenosti dist for n := 1 to length(length(mesta)/2) min match.pridej(cesty(1)); Pˇrid´a danou nejkratˇs´ı cestu do podgrafu a = cesty(1) cesty.odstran(a.mesto1); cesty.odstran(a.mesto2); Pˇr´ıkaz, kter´ y odstran´ı vˇsechny hrany vych´azej´ıc´ı z mˇest dan´e pˇridan´e hrany. end end
8.3. Seznam pˇ r´ıloh na CD Data jsou rozdˇelena do ˇctyˇr adres´aˇr˚ u podle pˇr´ısluˇsn´ ych kapitol v textu. • 1. Linearni programovani – Priklad linearniho programovani.xls – ˇreˇsen´ y pˇr´ıklad v programu MS Excel y pˇr´ıklad v programu GAMS – Priklad linearniho programovani.gms – ˇreˇsen´ • 2. Celociselne programovane – 1.Vypocet optima pomoci tsp42.gms – program a data v GAMSu, kter´ y poˇc´ıt´a ˇreˇsen´ı probl´emu obchodn´ıho cestuj´ıc´ıho – 2.Prevod reseni do LaTeXu.gms – program, kter´ y zobraz´ı ˇreˇsen´ı do LATEXu • 3. Heuristiky – 1.Heuristiky pro tsp.py – vˇsechny potˇrebn´e skripty pro realizaci heuristik • 4. Data pro porovnani metod – 1.Urceni polohy mest.xls – tabulka urˇcuj´ıc´ı pˇrepoˇcet polohy mˇest pro moˇ e republiky del okresn´ıch mˇest Cesk´ – 2.Matice vzdalenosti.xls – tabulka s matic´ı vzd´alenosti mezi vˇsemi mˇesty – 3.Vysledky metod pro porovnani.xls - v´ ysledky vˇsech variant algoritm˚ ua jejich zobrazen´ı do grafu 5.1
60