VYSOK ´
E U ˇ
CEN´I TECHNICK ´
E V BRN ˇ
E
BRNO UNIVERSITY OF TECHNOLOGYFAKULTA INFORMA ˇ
CN´ICH TECHNOLOGI´I
´
USTAV INTELIGENTN´ICH SYST ´
EM ˚
U
FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INTELLIGENT SYSTEMS
OPTIMALIZA ˇ
CN´I ALGORITMY V LOGISTICK ´
YCH
KOMBINATORICK ´
YCH ´
ULOH ´
ACH
DIPLOMOV ´
A PR ´
ACE
MASTER’S THESIS
AUTOR PR ´
ACE
Bc. DANIEL BOKI ˇ
S
AUTHOR
BRNO 2015
CORE Metadata, citation and similar papers at core.ac.uk
VYSOK ´
E U ˇ
CEN´I TECHNICK ´
E V BRN ˇ
E
BRNO UNIVERSITY OF TECHNOLOGY
FAKULTA INFORMA ˇ
CN´ICH TECHNOLOGI´I
´
USTAV INTELIGENTN´ICH SYST ´
EM ˚
U
FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INTELLIGENT SYSTEMS
OPTIMALIZA ˇ
CN´I ALGORITMY V LOGISTICK ´
YCH
KOMBINATORICK ´
YCH ´
ULOH ´
ACH
ALGORITHMS FOR COMPUTERIZED OPTIMIZATION OF LOGISTIC COMBINATORIAL PROBLEMS
DIPLOMOV ´
A PR ´
ACE
MASTER’S THESIS
AUTOR PR ´
ACE
Bc. DANIEL BOKI ˇ
S
AUTHOR
VEDOUC´I PR ´
ACE
Ing. MARTIN HRUB ´
Y, Ph.D.
SUPERVISOR
Abstrakt
Tato pr´ace se zab´yv´a optimalizaˇcn´ımi probl´emy a pˇredevˇs´ım logistickou ´ulohou Vehicle Routing Problem (VRP). V prvn´ı ˇc´asti je zaveden pojem optimalizace a jsou pˇredstaveny nejd˚uleˇzitˇejˇs´ı optimalizaˇcn´ı probl´emy. D´ale jsou v pr´aci uvedeny metody, kter´ymi je moˇzn´e tyto probl´emy ˇreˇsit. N´aslednˇe jsou vybran´e metody aplikov´any na probl´em VRP a jsou uve-dena nˇekter´a jejich vylepˇsen´ı. Pr´ace tak´e pˇredstavuje metodu vyuˇz´ıv´an´ı znalost´ı pˇredchoz´ıch ˇreˇsen´ı, tedy formu uˇc´ıc´ıho algoritmu. V z´avˇeru pr´ace jsou experiment´alnˇe optimalizov´any parametry jednotliv´ych metod a ovˇeˇren pˇr´ınos pˇredstaven´ych vylepˇsen´ı.
Abstract
This thesis deals with optimization problems with main focus on logistic Vehicle Routing Problem (VRP). In the first part term optimization is established and most important op-timization problems are presented. Next section deals with methods, which are capable of solving those problems. Furthermore it is explored how to apply those methods to specific VRP, along with presenting some enhancement of those algorithms. This thesis also intro-duces learning method capable of using knowledge of previous solutions. At the end of the paper, experiments are performed to tune the parameters of used algorithms and to discuss benefit of suggested improvements.
Kl´ıˇ
cov´
a slova
VRP, logistika, distribuce, optimalizace, kombinatorick´a optimalizace, heuristika, metaheu-ristika, uˇcen´ı, uˇc´ıc´ı algoritmus
Keywords
VRP, logistic, distribution, Vehicle Routing Problem, optimization, combinatoric optimi-zation, heuristic, metaheuristic, learning, learning algorithm
Citace
Daniel Bokiˇs: Optimalizaˇcn´ı algoritmy v logistick´ych kombinatorick´ych ´uloh´ach, diplomov´a pr´ace, Brno, FIT VUT v Brnˇe, 2015
Optimalizaˇ
cn´ı algoritmy v logistick´
ych
kombinatorick´
ych ´
uloh´
ach
Prohl´
aˇ
sen´ı
Prohlaˇsuji, ˇze jsem tuto diplomovou pr´aci vypracoval samostatnˇe pod veden´ım Ing. Martina Hrub´eho. Uvedl jsem vˇsechny liter´arn´ı prameny a publikace, ze kter´ych jsem ˇcerpal.
. . . . Daniel Bokiˇs 27. kvˇetna 2015
Podˇ
ekov´
an´ı
T´ımto bych chtˇel podˇekovat vedouc´ımu pr´ace Ing. Martinu Hrub´emu, Ph.D. za jeho odborn´e rady pˇri konzultac´ıch. Tak´e bych chtˇel podˇekovat sv´e pˇr´ıtelkyni za jazykovou korekturu pr´ace a podporu.
c
Daniel Bokiˇs, 2015.
Tato pr´ace vznikla jako ˇskoln´ı d´ılo na Vysok´em uˇcen´ı technick´em v Brnˇe, Fakultˇe informa-ˇ
cn´ıch technologi´ı. Pr´ace je chr´anˇena autorsk´ym z´akonem a jej´ı uˇzit´ı bez udˇelen´ı opr´avnˇen´ı autorem je nez´akonn´e, s v´yjimkou z´akonem definovan´ych pˇr´ıpad˚u.
Obsah
´
Uvod 3
1 Kombinatorick´e optimalizaˇcn´ı ´ulohy 4
1.1 Logistick´e ´ulohy . . . 5
1.1.1 Travelling Salesman Problem . . . 5
1.1.2 Vehicle Routing Problem . . . 6
1.2 Resource-Constrained Project Scheduling Problem . . . 10
1.3 Dalˇs´ı kombinatorick´e ´ulohy . . . 11
2 Algoritmy pro ˇreˇsen´ı kombinatorick´ych ´uloh 13 2.1 Exaktn´ı algoritmy . . . 13
2.2 Heuristick´e algoritmy . . . 15
2.3 Metaheuristick´e algoritmy . . . 16
2.3.1 Genetick´e algoritmy . . . 16
2.3.2 Tabu prohled´av´an´ı . . . 17
2.3.3 Simulovan´e ˇz´ıh´an´ı . . . 17
2.3.4 Mravenˇc´ı kolonie . . . 18
3 Aplikace optimalizaˇcn´ıch algoritm˚u na VRP 20 3.1 Obecn´a tvrzen´ı o ˇreˇsen´ı . . . 20
3.2 Reprezentace ˇreˇsen´ı . . . 22
3.3 Tvorba poˇc´ateˇcn´ıho ˇreˇsen´ı . . . 23
3.4 Genetick´y algoritmus . . . 25
3.4.1 V´ybˇer rodiˇc˚u . . . 25
3.4.2 Kˇr´ıˇzen´ı . . . 27
3.4.3 Mutace . . . 28
3.4.4 Mutace ˇc´asti populace pˇred kˇr´ıˇzen´ım . . . 28
3.4.5 Zamezen´ı v´yskytu klon˚u . . . 28
3.4.6 Restart stagnuj´ıc´ı populace . . . 29
3.4.7 Fin´aln´ı genetick´y algoritmus . . . 30
3.5 Tabu prohled´av´an´ı . . . 31
3.6 Simulovan´e ˇz´ıh´an´ı . . . 31
3.7 Mravenˇc´ı kolonie . . . 32
4 Heuristika vyuˇz´ıvaj´ıc´ı charakteristiky pˇredchoz´ıch ˇreˇsen´ı 33 4.1 Charakteristiky ˇreˇsen´ı . . . 33
4.2 Runtime hypot´eza vyluˇcuj´ıc´ıch charakteristik . . . 34
4.3 Navrˇzen´e mutace . . . 36 4.3.1 RTShift . . . 36 4.3.2 RTCluster . . . 37 4.3.3 RTReshuff . . . 38 4.4 Shrnut´ı . . . 39 5 Implementace 40 5.1 Parametry a konfigurace programu . . . 40
5.2 Popis tˇr´ıd . . . 41
5.3 Optimalizace . . . 43
6 Experimenty 45 6.1 Popis probl´em˚u pro srovn´av´an´ı . . . 46
6.2 Popis experimentov´an´ı . . . 48
6.3 V´ysledky z literatury . . . 50
6.4 Genetick´e algoritmy . . . 51
6.4.1 Velikost populace . . . 51
6.4.2 Volba selekˇcn´ıho oper´atoru . . . 52
6.4.3 Poˇcet potomk˚u . . . 53
6.4.4 Pravdˇepodobnost mutace potomk˚u . . . 53
6.4.5 Poˇcet mutovan´ych jedinc˚u . . . 54
6.4.6 Parametry ˇc´asteˇcn´eho nahrazen´ı . . . 55
6.4.7 Zamezen´ı v´yskytu klon˚u . . . 55
6.5 Tabu prohled´av´an´ı . . . 57
6.5.1 Velikost tabu seznamu . . . 57
6.5.2 Poˇcet generovan´ych sousedn´ıch ˇreˇsen´ı . . . 57
6.6 Simulovan´e ˇz´ıh´an´ı . . . 59
6.6.1 Poˇc´ateˇcn´ı teplota . . . 59
6.6.2 Zmˇena teploty . . . 60
6.7 Optimalizace mravenˇc´ı koloni´ı . . . 61
6.8 Metody vyuˇz´ıvaj´ıc´ı RT tabulky . . . 62
6.8.1 V´ybˇer nejhorˇs´ı nebo nejlepˇs´ı charakteristiky . . . 62
6.8.2 Vliv vylepˇsen´ı RTShift . . . 63
6.8.3 Parametry mutace RTReshuff . . . 63
6.8.4 Vliv pouˇzit´ı metod vyuˇz´ıvaj´ıc´ıch RT tabulku . . . 64
6.8.5 Pomˇer mutac´ı RTReshuff a RTCluster . . . 66
6.8.6 Poˇc´atek zapojen´ı RT metod . . . 67
6.8.7 Vliv pouˇzit´ı vyplnˇen´e tabulky . . . 68
6.8.8 Dlouh´y bˇeh . . . 69
Z´avˇer 72
Pouˇzit´a literatura 75
´
Uvod
V dneˇsn´ı dobˇe je d˚uleˇzit´e co nejv´ıce optimalizovat vˇsechny pr˚umyslov´e ˇcinnosti, a to pˇredevˇs´ım za ´uˇcelem sn´ıˇzen´ı n´aklad˚u, pˇr´ıpadnˇe v´ysledn´e ceny produktu. M˚uˇzeme se ba-vit o optimalizaci pl´anov´an´ı v´yroby, kde je kl´ıˇcov´e rozvrˇzen´ı operac´ı tak, aby byl cel-kov´y ˇcas co nejkratˇs´ı, nebo lze napˇr´ıklad zm´ınit optimalizaci logistiky. V oblasti logistiky obvykle pl´anujeme distribuci nˇejak´eho zboˇz´ı k z´akazn´ık˚um, pˇriˇcemˇz potˇrebujeme zajistit napl´anov´an´ı takov´e trasy, kter´a bude nejkratˇs´ı jak z hlediska ujet´ych kilometr˚u, tak z hle-diska ˇcasu, nebot’ za oba tyto artikly se plat´ı. Se st´ale zvyˇsuj´ıc´ı se cenou pohonn´ych hmot a vˇetˇs´ımi n´aroky z´akazn´ık˚u na pˇresnost ˇcasu dod´an´ı, je tak nutnost optimalizace jeˇstˇe vˇetˇs´ı, neˇzli dˇr´ıve.
Pokud mus´ıme obslouˇzit v´ıce z´akazn´ık˚u, nebo napˇr´ıklad chceme aktu´alnˇe reagovat na si-tuaci na silnici (uzav´ırky apod.), jiˇz zdaleka nepostaˇc´ı ruˇcn´ı pl´anov´an´ı a je nutn´e ˇreˇsit tuto optimalizaci pomoc´ı poˇc´ıtaˇce. Dobr´ym optimalizaˇcn´ım algoritmem pak dok´aˇzeme zkr´atit celkovou cestu nˇekdy aˇz o des´ıtky procent a uˇsetˇrit tak velk´e mnoˇzstv´ı ˇcasu a prostˇredk˚u. Tato ´uloha vˇsak ani pro poˇc´ıtaˇcov´e zpracov´an´ı nen´ı jednoduch´a a pˇredevˇs´ım pro velk´e instance s velk´ym mnoˇzstv´ım z´akazn´ık˚u je rozd´ıl mezi v´ysledkem dobr´eho a ˇspatn´eho algo-ritmu relativnˇe velk´y. T´ematu optimalizovan´eho pl´anov´an´ı trasy bylo v literatuˇre vˇenov´ano pomˇernˇe velk´e mnoˇzstv´ı odborn´e literatury, coˇz dokl´ad´a napˇr´ıklad sborn´ık obsahuj´ıc´ı 500 publikac´ı, kter´y vyˇsel jiˇz v roce 1995 [21]. Od tohoto roku zajist´e vzniklo nespoˇcet dalˇs´ıch nov´ych v´yzkum˚u, coˇz dokl´ad´a smysl st´ale se tomuto probl´emu vˇenovat. Matematick´ym mo-delem samotn´ych logistick´ych ´uloh je pak napˇr´ıklad optimalizaˇcn´ı probl´em Vehicle Routing Problem (VRP), kter´emu se tato pr´ace bude vˇenovat.
Pr´ace samotn´a je rozdˇelena na ˇsest kapitol, kde v prvn´ı kapitole je zaveden pojem optimalizace a jsou pˇredstaveny z´akladn´ı optimalizaˇcn´ı probl´emy, pˇredevˇs´ım z oblasti lo-gistiky. V druh´e kapitole jsou zkoum´any r˚uzn´e moˇznosti ˇreˇsen´ı tˇechto probl´em˚u, kdy je kladen d˚uraz na pˇredstaven´ı tˇechto metaheuristick´ych metod: genetick´e algoritmy (GA), tabu prohled´av´an´ı (TABU), simulovan´e ˇz´ıh´an´ı (SA) a optimalizaci mravenˇc´ı koloni´ı (ANT). Tyto ˇctyˇri algoritmy jsou v n´asleduj´ıc´ı kapitole v uveden´em poˇrad´ı aplikov´any na konkr´etn´ı probl´em VRP a jsou prezentov´ana nˇekter´a jejich vylepˇsen´ı. ˇCtvrt´a kapitola pˇredstavuje uˇc´ıc´ı se syst´em vych´azej´ıc´ı z charakteristik pˇredchoz´ıch ˇreˇsen´ı a obsahuje n´avrh aplikace t´eto metody na zkouman´e algoritmy. Samotn´a implementace algoritm˚u a cel´eho syst´emu pro ˇreˇsen´ı VRP je pops´ana v kapitole 5. V z´avˇereˇcn´e kapitole jsou pomoc´ı ˇrady experiment˚u optimalizov´any parametry uveden´ych algoritm˚u (GA, TABU, SA a ANT) a je diskutov´an pˇr´ınos pˇredstaven´ych vylepˇsen´ı a uˇc´ıc´ıch metod.
Kapitola 1
Kombinatorick´
e optimalizaˇ
cn´ı
´
ulohy
Optimalizac´ı mysl´ıme v matematice ´ulohu, pˇri jej´ımˇz ˇreˇsen´ı odpov´ıd´ame na ot´azku ”kter´e ˇreˇsen´ı je nejlepˇs´ı“, a to pro ty probl´emy, kde je moˇzn´e kvalitu jednotliv´eho ˇreˇsen´ı ohodnotit jedn´ım ˇc´ıslem, hodnotou optimalizaˇcn´ı funkce. S tˇemito probl´emy se m˚uˇzeme setkat v mnoha oblastech, at’ uˇz matematice, chemii, stroj´ırenstv´ı, ekonomii nebo pr´avˇe v logistice. Optimalizaˇcn´ı funkc´ı se pak snaˇz´ıme ohodnotit dan´e ˇreˇsen´ı pro ´uˇcely porovn´an´ı, coˇz m˚uˇze v praxi odpov´ıdat napˇr´ıklad poˇctu operac´ı, ˇcasu sekvence v´yrobn´ıch operac´ı, nebo d´elce ujet´e trasy. N´aslednˇe hled´ame nejˇcastˇeji minimum t´eto funkce, coˇz je typick´e napˇr´ıklad pro ˇcas ˇci vzd´alenost. V aplikac´ıch, kde chceme hledat jej´ı maximum (napˇr. maximalizace plochy), pˇrev´ad´ıme maximalizaˇcn´ı probl´em na minimalizaˇcn´ı prostou negac´ı optimalizaˇcn´ı funkce.
Matematicky m˚uˇzeme obecnou optimalizaˇcn´ı ´ulohu definovat jako [6]: minimalizace f0(x)
podl´ehaj´ıc´ı fi(x) ≤ bi, i = 1, ..., m,
(1.1)
kde vektor x = (x1, ..., xn) je optimalizaˇcn´ı promˇenn´a ´ulohy, funkce f0 : Rn → R je
optimalizaˇcn´ı funkce, funkce fi : Rn → R, i = 1, ..., m jsou podm´ınkov´e funkce a
kon-stanty b1, ..., bm jsou hranice pro dan´e podm´ınky. Vektor x∗ je naz´yv´an optim´aln´ı, nebo
tak´e ˇreˇsen´ım probl´emu (1.1), jestliˇze m´a nejmenˇs´ı hodnotu optimalizaˇcn´ı funkce ze vˇsech vektor˚u vyhovuj´ıc´ıch stanoven´ym podm´ınk´am. Form´alnˇe vyj´adˇreno, pro kaˇzd´e z, kde je splnˇeno f1(z) ≤ b1, ..., fm(z) ≤ bm, plat´ı, ˇze f0(z) ≥ f0(x∗).
Jednou z nejzaj´ımavˇejˇs´ıch podtˇr´ıd optimalizaˇcn´ıch ´uloh jsou pak kombinatorick´e ´ulohy. Promˇenn´e v tˇechto ´uloh´ach jsou diskr´etn´ı a optimum hled´ame v koneˇcn´e, respektive spoˇcetn´e mnoˇzinˇe ˇreˇsen´ı [27]. Typicky velikost t´eto mnoˇziny, tedy prohled´avan´eho prostoru, roste ex-ponenci´alnˇe vzhledem k poˇctu objekt˚u, kter´e reprezentuje (uzly v grafu, v´yrobn´ı operace atd.). Proto je prohled´av´an´ı vˇsech tˇechto moˇzn´ych ˇreˇsen´ı ˇcasovˇe nepˇr´ıpustn´e a mus´ıme hle-dat jin´e, efektivnˇejˇs´ı metody. ˇReˇsen´ı, kter´a splˇnuj´ı definovan´e podm´ınky pak naz´yv´ame jako platn´a a m˚uˇzeme definovat prostor platn´ych ˇreˇsen´ı P, ve kter´em hled´ame optimum.
V t´eto kapitole budou definov´any z´akladn´ı logistick´e ´ulohy, kter´ymi se tato pr´ace d´ale zab´yv´a. Tyto ´ulohy typicky rozvrhuj´ı, jak´ym zp˚usobem navˇst´ıvit zadan´e m´ısta ˇci z´akazn´ıky, a to za splnˇen´ı urˇcit´ych kapacitn´ıch podm´ınek. N´aslednˇe bude zkoum´ana ´uloha rozvrhov´an´ı v´yrobn´ıch operac´ı, coˇz je dalˇs´ı kapacitn´ı ´uloha, kter´a bude zm´ınˇena z d˚uvod˚u inspirace nˇekter´ymi metodami jej´ıho ˇreˇsen´ı. V z´avˇeru kapitoly budou pro ´uplnost pops´any nˇekter´e dalˇs´ı nejzn´amˇejˇs´ı kombinatorick´e ´ulohy.
1.1
Logistick´
e ´
ulohy
Tato pr´ace je zamˇeˇrena na optimalizaci logistick´ych ´uloh, proto si nejprve definujeme tyto ´ulohy. V ´uvodu bude zm´ınˇena klasick´a logistick´a ´uloha obchodn´ıho cestuj´ıc´ıho, kter´a rozvrhuje poˇrad´ı navˇst´ıven´ych m´ıst bez dalˇs´ıch kapacitn´ıch podm´ınek. Na tuto ´ulohu nava-zuje Vehicle Routing Problem (VRP), kter´y pˇredstavuje kapacitn´ı podm´ınky, kter´e je nutn´e v ˇreˇsen´ı dodrˇzet. Jelikoˇz pr´avˇe VRP se tato pr´ace d´ale vˇenuje, budou u tohoto probl´emu zm´ınˇeny dalˇs´ı jeho varianty, kter´e jej d´ale rozv´ıjej´ı.
1.1.1 Travelling Salesman Problem
Travelling Salesman Problem (TSP) [17], tedy probl´em obchodn´ıho cestuj´ıc´ıho, je jedn´ım z nejzn´amˇejˇs´ıch a nejpopul´arnˇejˇs´ıch kombinatorick´ych ´uloh. Aˇckoliv se jedn´a o probl´em, kter´ym se zab´yvali matematici jiˇz v 18. stolet´ı, m´a st´ale sv´e vyuˇzit´ı (v logistice, v´yvoji elektrick´ych obvod˚u atd.) a tak´e slouˇz´ı jako pomˇeˇrovac´ı a testovac´ı probl´em souˇcasn´ych badatel˚u. V jednoduchosti lze probl´em obchodn´ıho cestuj´ıc´ıho vysvˇetlit tak, ˇze obchodn´ı cestuj´ıc´ı mus´ı pˇri sv´e cestˇe navˇst´ıvit kaˇzd´e z pˇridˇelen´ych mˇest pr´avˇe jedenkr´at a nakonec se vr´atit do v´ychoz´ıho bodu. Pˇr´ıklad zad´an´ı a ˇreˇsen´ı ´ulohy je ilustrov´an obr´azkem 1.1. C´ılem je pak optimalizovat cestovn´ı n´aklady, tedy typicky celkovou ujetou vzd´alenost, ˇcas cesty, nebo jejich kombinaci, pˇriˇcemˇz jsou definov´any n´aklady mezi vˇsemi jednotliv´ymi mˇesty.
TSP
Obr´azek 1.1: Modelov´y pˇr´ıklad ´ulohy obchodn´ıho cestuj´ıc´ıho. Vlevo vid´ıme rozm´ıstˇen´ı mˇest a vpravo pak moˇzn´e ˇreˇsen´ı probl´emu (ˇcervenˇe).
Form´alnˇe uvaˇzujme graf G = (V, E), kde V = {1, ..., n} je mnoˇzina uzl˚u (mˇest), E = {(i, j)|i, j = 1, ..., n} je mnoˇzina hran (spojnic mezi mˇesty) a cij > 0, i, j = 1, ..., n,
necht’ je konstanta urˇcuj´ıc´ı n´aklady pˇresunu z mˇesta i do mˇesta j. Potom hled´ame minimum funkce [17]: n X i=1 n X j=1 cijxij (1.2) za splnˇen´ı podm´ınek: n X i=1 xij = 1, j = 1, ..., n, n X j=1 xij = 1, i = 1, ..., n, X i∈S X j∈S xij ≤ |S| − 1 pro vˇsechny S ⊂ {1, ..., n}, S 6= ∅, xij ∈ {0, 1}, i, j = 1, ..., n. (1.3)
Odtud je zˇrejm´e, ˇze hledan´a matice X je definov´ana tak, ˇze xij = 1, pr´avˇe kdyˇz nalezen´e
ˇreˇsen´ı obsahuje pˇresun z mˇesta i do mˇesta j a xij = 0 v ostatn´ıch pˇr´ıpadech. Typicky tak´e
uvaˇzujeme takzvan´y symetrick´y probl´em obchodn´ıho cestuj´ıc´ıho, kde nav´ıc plat´ı podm´ınka: cij = cji, i, j = 1, ..., n (1.4)
Tedy vzd´alenost (resp. n´aklady) mezi mˇesty jsou stejn´e bez ohledu na smˇer cesty. ˇ
Reˇsen´ı probl´emu obchodn´ıho cestuj´ıc´ıho pak m˚uˇze zastupovat jedna permutace mnoˇziny mˇest 1 aˇz n, kter´a urˇcuje, v jak´em poˇrad´ı m´a obchodn´ı cestuj´ıc´ı trasu uskuteˇcnit. Jelikoˇz v TSP nejsou definov´any ˇz´adn´e omezuj´ıc´ı kapacitn´ı podm´ınky, kaˇzd´a tato permutace je platn´a a poˇcet platn´ych ˇreˇsen´ı by mohl b´yt |P| = n!, jelikoˇz se jedn´a o permutaci bez opakov´an´ı. Nicm´enˇe u TSP v podstatˇe nez´aleˇz´ı z jak´eho mˇesta vyj´ıˇzd´ıme a jak´ym smˇerem pojedeme, pokud spoj´ıme vˇsechny m´ısta. Re´alnˇe je tak |P| = (n − 1)!/2 [30].
1.1.2 Vehicle Routing Problem
Vehicle Routing Problem (VRP), nˇekdy pˇrekl´adan´y jako probl´em okruˇzn´ıch j´ızd, je lo-gistick´a ´uloha podobn´a TSP. V t´eto ´uloze uzly ch´apeme jako z´akazn´ıky a jeden (v nˇekter´ych variant´ach i v´ıce) uzel bereme jako sklad, tedy v´ychoz´ı a z´aroveˇn koncov´y bod. C´ılem je flotilou vozidel obslouˇzit vˇsechny z´akazn´ıky tak, aby byla minimalizov´ana celkov´a ujet´a vzd´alenost vˇsech vozidel. Vˇsechna vozidla vyj´ıˇzdˇej´ı ze skladu a na konci sv´e cesty se do nˇej mus´ı vr´atit. Nav´ıc jsou definov´any kapacitn´ı podm´ınky, kter´e urˇcuj´ı platnost ˇreˇsen´ı. Jedn´a se tak o v´yznamn´y probl´em v oblasti logistiky, dopravy a distribuce. Ilustraci tohoto probl´emu m˚uˇzeme vidˇet na obr´azku 1.2.
SKLAD ZÁKAZNÍK
SKLAD ZÁKAZNÍK
VRP
Obr´azek 1.2: Modelov´y pˇr´ıklad ´ulohy VRP. Vlevo vid´ıme rozm´ıstˇen´ı z´akazn´ık˚u a skladu (z d˚uvod˚u zjednoduˇsen´ı nebyly zakresleny vˇsechny moˇzn´e ˇsed´e spojnice), vpravo pak moˇzn´e ˇreˇsen´ı, kde tuˇcn´a ˇcern´a ˇc´ara oznaˇcuje cestu vozidla a jednotliv´e cesty jsou barevnˇe odliˇseny. Form´alnˇe podobnˇe jako u TSP uvaˇzujme ´upln´y graf G = (V, E) a n´asleduj´ıc´ı notace [41, 25]:
• V = {v0, v1, ..., vn} je mnoˇzina vrchol˚u, tedy z´akazn´ıku, kde uvaˇzujme, ˇze sklad je
um´ıstˇen ve vrcholu v0. Potom necht’ V0 = V \ {v0} reprezentuje n z´akazn´ık˚u.
• C je matice kladn´ych n´aklad˚u cij mezi z´akazn´ıky vi a vj. Uvaˇzujme cij = cjia cii= 0.
• d(vi) : i ∈ {1, ..., n} definuje kapacitn´ı poˇzadavek z´akazn´ıka i, pˇriˇcemˇz sklad m´a pˇriˇrazen fiktivn´ı poˇzadavek d(v0) = 0.
• m vyjadˇruje poˇcet vozidel, pˇriˇcemˇz jsou vˇsechny identick´e. Kaˇzd´emu vozidlu je pak pˇriˇrazena jedna cesta.
• Ri : i ∈ {1, ..., m} = (v0, vi1, ..., vik(i), v0) je trasa (cesta) vozidla i. Kaˇzd´a trasa pak
zaˇc´ın´a a konˇc´ı ve skladu a poˇcet uzl˚u trasy Ri je rovno k(i).
• Plat´ı ∀i(vi ∈ V0 ⇒ ∃j : vi ∈ Rj ∧ @k 6= j : vi ∈ Rj ∧ vi ∈ Rk), coˇz znaˇc´ı, ˇze kaˇzd´y
z´akazn´ık je navˇst´ıven pr´avˇe jednou a pr´avˇe jedn´ım vozidlem.
V nˇekter´ych pˇr´ıpadech jsou hodnoty n´aklad˚u cijch´ap´any jako vzd´alenost mezi z´akazn´ıky,
jindy jako doba j´ızdy a nebo abstraktn´ı cena pˇrepravy [20]. V kaˇzd´em pˇr´ıpadˇe je celkov´a cena kaˇzd´e trasy Ri definov´ana jako:
Cost(Ri) = k(i)
X
j=0
cij,ij+1 (1.5)
Koneˇcnˇe cena cel´eho ˇreˇsen´ı probl´emu oznaˇcen´eho S je urˇcena souˇctem cen jednotliv´ych tras jako Cost(S) =Pm
i=1Cost(Ri). C´ılem ´ulohy VRP je tuto celkovou cenu minimalizovat.
D´ale v textu se setk´ame s pojmem hodnot´ıc´ı (fitness) funkce F (S). Ve VRP je t´ımto myˇslena celkov´a cena, ˇci d´elka ˇreˇsen´ı a m˚uˇzeme prohl´asit, ˇze F (S) = Cost(S).
VRP s omezen´ım d´elky trasy
Distance-Constrained VRP (DVRP) rozˇsiˇruje z´akladn´ı ´ulohu o podm´ınku maxim´aln´ı d´elky jedn´e trasy [38]. Nˇekdy se v t´eto variantˇe mluv´ı o omezen´ı d´elky trv´an´ı jedn´e trasy, zejm´ena pokud ch´apeme n´aklady cij jako dobu j´ızdy. Typicky je v t´eto variantˇe definov´an
servisn´ı ˇcas δi, kter´y oznaˇcuje ˇcas potˇrebn´y pro vyloˇzen´ı zboˇz´ı u z´akazn´ıka i [25]. Potom je
cena (resp. d´elka trv´an´ı) kaˇzd´e trasy Ri specifikov´ana jako:
Cost(Ri) = k(i) X j=0 cij,ij+1+ k(i)−1 X j=1 δij (1.6) ˇ
Z´adn´e vozidlo ˇci trasa pak nesm´ı pˇrekroˇcit stanovenou maxim´aln´ı cenu (d´elku, nebo ˇ
cas) trasy Costmax, coˇz je definov´ano podm´ınkou:
∀i ∈ {1, ..., m} : Cost(Ri) ≤ Costmax (1.7)
VRP s kapacitou vozidla
Capacitated VRP (CVRP) je definuje kapacitu vozidel, kterou nesm´ı bˇehem sv´e cesty pˇrekroˇcit [25]. K z´akladn´ı ´uloze VRP nav´ıc definujeme kapacitu vozidla Q a kapacitn´ı podm´ınku (1.9). Nejprve vyj´adˇreme celkov´y kapacitn´ı poˇzadavek D kaˇzd´e trasy Ri jako:
D(Ri) = k(i)
X
j=1
D´ale ˇreˇsen´ı ´ulohy mus´ı splˇnovat podm´ınku, ˇze poˇzadavky z´akazn´ık˚u na kaˇzd´e trase Ri
nesm´ı pˇrekroˇcit kapacitu vozidla Q, tedy:
∀i ∈ {1, ..., m} : D(Ri) ≤ Q (1.9)
Pr´avˇe varianta CVRP b´yv´a ˇcasto kombinov´ana s DVRP jako DCVRP, kdy plat´ı obˇe v´yˇse definovan´e podm´ınky (1.7) a (1.9) [38]. Pˇresnˇe touto variantou se bude tato pr´ace d´ale zab´yvat, pˇriˇcemˇz nˇekter´e pouˇzit´e instance probl´emu maj´ı definov´anu maxim´aln´ı d´elku trasy (jsou tedy DCVRP) a jin´e jsou klasick´ym CVRP s Costmax = ∞. V literatuˇre jsem
se vˇsak t´emˇeˇr s pojmem DCVRP nesetkal a nˇekteˇr´ı autoˇri tuto variantu oznaˇcuj´ı pouze jako CVRP [22, 24], DVRP [28, 39], nebo jednoduˇse jako VRP [12]. Posledn´ı zmiˇnovan´e se zd´a jako nejm´enˇe matouc´ı, jelikoˇz se v literatuˇre t´emˇeˇr nesetk´av´ame s ˇcistou verz´ı VRP bez dalˇs´ıch podm´ınek.
Tato pr´ace se pak zab´yv´a pr´avˇe probl´emem DCVRP, oznaˇcen d´ale jednoduˇse jako VRP. Tento probl´em definuj´ı notace zaveden´e v 1.1.2 a z´aroveˇn mus´ı platit podm´ınka dodrˇzen´ı maxim´aln´ı ceny trasy (1.7) a kapacitn´ı podm´ınka (1.9).
Platn´ym ˇreˇsen´ım S ∈ P t´eto ´ulohy je pak zaˇrazen´ı z´akazn´ık˚u do jednotliv´ych tras tak, aby byli vˇsichni z´akazn´ıci obslouˇzeni a aby byly u vˇsech tras vozidel splnˇeny kapacitn´ı podm´ınky (1.7) a (1.9). S konkr´etn´ım vyˇc´ıslen´ım velikosti P jsem se v literatuˇre nesetkal, ale m˚uˇzeme pˇredpokl´adat, ˇze je prostor rozm´ıstˇen´ım do tras a zaveden´ım dalˇs´ıch podm´ınek vˇetˇs´ı, neˇz v pˇr´ıpadˇe TSP.
Dalˇs´ı varianty VRP
V pˇredchoz´ı sekci byla pˇredstavena z´akladn´ı ´ulohy VRP, kterou se budeme v pr´aci d´ale zab´yvat. V praxi existuje mnoho dalˇs´ıch variant t´eto ´ulohy, a pro ´uplnost budou zm´ınˇeny ty nejv´yznamnˇejˇs´ı z nich.
VRP s v´ıce sklady
Multiple Depot VRP (MDVRP) je varianta, jak uˇz n´azev napov´ıd´a, ve kter´e se vy-skytuje v´ıce sklad˚u. Pokud jsou z´akazn´ıci rozm´ıstˇen´ı kolem sklad˚u, m˚uˇze se probl´em ˇreˇsit jako nˇekolik samostatn´ych VRP. Pokud jsou ale prom´ıch´ani, je nutn´e ˇreˇsit MDVRP, kter´e vyˇzaduje pˇriˇrazen´ı z´akazn´ık˚u k jednotliv´ym sklad˚um. Je totiˇz nutn´e splnit podm´ınku, ˇze kaˇzd´e vozidlo m´a z´akladnu ve sv´em skladu a tak´e se tam mus´ı vr´atit, nelze tedy zaˇc´ıt v jednom skladu a vr´atit se do jin´eho. C´ılem je opˇet obslouˇzit vˇsechny z´akazn´ıky a z´aroveˇn minimalizovat celkovou ujetou vzd´alenost.
Lehce odliˇsnou variantou je VRP se satelitn´ımi sklady (VRP with Satellite Facilities), kde jsou definov´any sklady, ve kter´ych mohou vozidla doplnit z´asoby, pokraˇcovat v cestˇe a na konci dne se vr´atit do sv´eho domovsk´eho skladu. Tato varianta nalezne uplatnˇen´ı pˇredevˇs´ım v distribuci paliv ˇci maloobchodn´ım prodeji [25].
VRP s ˇcasov´ymi okny
VRP with Time Windows (VRPTW) je klasick´e VRP s pˇridanou podm´ınkou, kde ke kaˇzd´emu z´akazn´ıkovi i je pˇriˇrazen ˇcasov´y interval (okno) [ai, bi], ve kter´em mus´ı b´yt
obslouˇzen. D´ale je tak´e skladu pˇriˇrazen interval [a0, b0], ve kter´em je nutn´e se
pohybo-vat (scheduling horizon). Nav´ıc mus´ıme specifikopohybo-vat dobu trv´an´ı cesty mezi jednotliv´ymi z´akazn´ıky, jelikoˇz pracujeme s ˇcasem, a ne jen se vzd´alenost´ı. VRPTW je pak charakteri-zov´ano n´asleduj´ıc´ımi omezen´ımi [25]:
• ˇReˇsen´ı je neplatn´e, pokud je z´akazn´ık obslouˇzen po horn´ı hranici jeho ˇcasov´eho okna. • Vozidlo, kter´e doraz´ı k z´akazn´ıkovi pˇred spodn´ı hranic´ı jeho ˇcasov´eho okna, je nuceno
ˇcekat.
• Kaˇzd´a trasa mus´ı zaˇc´ıt a skonˇcit bˇehem ˇcasov´eho intervalu urˇcen´eho skladem. • V pˇr´ıpadˇe voln´ych (soft ) ˇcasov´ych oken, je moˇzn´e obslouˇzit z´akazn´ıka pozdˇeji, ale
k optimalizaˇcn´ı funkci je v takov´em pˇr´ıpadˇe pˇriˇctena penalizace.
C´ılem optimalizace je minimalizovat poˇcet vozidel a souˇcet cestovn´ıho a ˇcekac´ıho ˇcasu potˇrebn´eho pro obslouˇzen´ı vˇsech z´akazn´ık˚u v dan´ych ˇcasov´ych intervalech. Vyuˇzit´ı t´eto varianty m˚uˇzeme nal´ezt u kur´yrn´ıch spoleˇcnost´ı ˇci klasick´em z´asobov´an´ı s definovan´ymi ˇ
casy dod´avky.
VRP s vyzvednut´ım a dod´avkou
VRP with Pick-Up and Delivering (VRPPD) definuje ´ulohu, kde kaˇzd´emu z´akazn´ıkovi i je pˇriˇrazeno mnoˇzstv´ı di a pi, reprezentuj´ıc´ı poˇzadavek na dod´an´ı, respektive vyzvednut´ı
dan´e komodity. Je tedy nutn´e zajistit, aby se po celou cestu do vozidla zboˇz´ı veˇslo, coˇz ty-picky ˇcin´ı pl´anov´an´ı komplikovanˇejˇs´ı a je nutn´e zv´yˇsit poˇcet vozidel, ˇci prodlouˇzit d´elku trasy. Typicky uvaˇzujeme zjednoduˇsenou situaci, kdy vˇsechno zboˇz´ı urˇcen´e na dod´an´ı vych´az´ı ze skladu a vˇsechno zboˇz´ı vyzvednut´e tak´e konˇc´ı ve skladu. Nen´ı tedy umoˇznˇena v´ymˇena zboˇz´ı pˇr´ımo mezi z´akazn´ıky [25]. ˇReˇsen´ı je pak platn´e, pokud bˇehem cel´e cesty nen´ı pˇrekroˇcena kapacita vozidla Q.
M´ırnˇe odliˇsnou variantou je VRP s nakl´ad´an´ım zezadu (VRP with Backhauls), kde jsou pouˇzita n´akladn´ı auta, kter´a se nakl´adaj´ı zezadu, a tak nen´ı ˇz´adouc´ı, aby se nakl´adala dˇr´ıve, neˇz budou plnˇe vyloˇzeny. V t´eto variantˇe je tedy prezentov´ana podm´ınka, ˇze vˇsechny dod´avky mus´ı b´yt uskuteˇcnˇeny pˇred t´ım, neˇz m˚uˇze b´yt vyzvednuto jak´ekoliv zboˇz´ı [25].
VRP s rozdˇelen´ım dod´avky
Posledn´ı zaj´ımavou variantou je tzv. Split Delivery VRP (SDVRP), kter´a umoˇzˇnuje, aby byl z´akazn´ık obslouˇzen v´ıce vozidly, pokud to sn´ıˇz´ı celkovou cenu. Toto je velmi d˚uleˇzit´e, pˇredevˇs´ım pokud se popt´avky z´akazn´ık˚u svou velikost´ı bl´ıˇz´ı kapacitˇe vozidel. Typicky je ˇreˇsen´ı moˇzn´e dos´ahnout rozdˇelen´ım popt´avek na menˇs´ı, d´ale nedˇeliteln´e ˇc´asti, kter´e jsou pak postupnˇe vozidly odeb´ır´any [25].
Formulace ´ulohy pouˇzit´e v t´eto pr´aci
Na z´avˇer pˇripomeˇnme definici ´ulohy prob´ıran´e d´ale v t´eto pr´aci jako VRP. Necht’ plat´ı notace definovan´e v ´uvodu 1.1.2, tedy V je mnoˇzina z´akazn´ık˚u, cij cena pˇresunu mezi
z´akazn´ıkem i a j, d(vk) oznaˇcuje kapacitn´ı poˇzadavek klienta k a Ri znaˇc´ı trasu provedenou
jedn´ım vozidlem, pˇriˇcemˇz poˇcet tras (ˇci vozidel) je m. D´ale necht’ δioznaˇcuje d´elku obsluhy
z´akazn´ıka i a Costmax definuje maxim´aln´ı cenu trasy. Potom je d´elka trasy Cost(Ri)
defi-nov´ana jako souˇcet vˇsech cen cest mezi z´akazn´ıky a d´elek obsluhy, viz (1.6). D´ale definujme kapacitu vozidla Q a souˇcet kapacitn´ıch poˇzadavk˚u na trase Ri znaˇcen´y D(Ri), viz (1.8).
Celkovˇe mus´ı u ˇreˇsen´ı S sloˇzen´eho z jednotliv´ych tras Ri platit, ˇze kaˇzd´y z´akazn´ık je
navˇst´ıven pr´avˇe jednou, d´elka trasy vozidla nesm´ı pˇrekroˇcit stanoven´y maxim´aln´ı limit a poˇzadavky trasy nesm´ı pˇrekroˇcit kapacitu vozidla, tedy:
∀i ∈ {1, ..., m} : Cost(Ri) ≤ Costmax, (1.10)
∀i ∈ {1, ..., m} : D(Ri) ≤ Q. (1.11)
Pak je celkov´a cena ˇreˇsen´ı S (v´ysledek hodnot´ıc´ı funkce F (S)) d´ana vztahem Cost(S) = F (S) =Pm
i=1Cost(Ri).
1.2
Resource-Constrained Project Scheduling Problem
Resource-Constrained Project Scheduling Problem (RCPSP), tedy probl´em rozvrhov´an´ı v´yrobn´ıch operac´ı, nˇekdy tak´e oznaˇcov´an jako Job Shop Scheduling. V t´eto ´uloze pˇriˇrazujeme definovan´e operace jednotliv´ym zdroj˚um tak, aby celkov´a doba trv´an´ı projektu byla co nej-kratˇs´ı. Uplatnˇen´ı ´ulohy je tak pˇredevˇs´ım v pl´anov´an´ı pr˚umyslov´e v´yroby.
Nˇekter´e principy pouˇzit´e pˇri ˇreˇsen´ı t´eto ´ulohy je moˇzn´e pˇrevz´ıt i pro VRP, ˇc´ımˇz se zab´yv´a kapitola 4. Z tohoto d˚uvodu je zde ´uloha detailnˇe pops´ana a jsou uvedeny vˇsechny potˇrebn´e notace.
STROJ ČAS 1 2 3 1 2 3 4 5 6 OPERACE
Obr´azek 1.3: Modelov´y pˇr´ıklad ´ulohy Job Shop Scheduling.
Form´alnˇe je ´uloha s N operacemi j1, ..., jNdefinov´ana jako struktura G = (J, P, R, c, d, r)
kde [16]:
• J = {j0, j1, ..., jN, jN +1} je mnoˇzina nepˇreruˇsiteln´ych operac´ı, kde j0 oznaˇcuje
starto-vac´ı a jN +1 pak ukonˇcovac´ı operaci.
• P ⊆ J × J je relace pˇredch´azen´ı operac´ı. Pi = {j ∈ J |(j, i) ∈ P } necht’ je mnoˇzina
operac´ı, kter´e mus´ı b´yt dokonˇceny pˇred t´ım, neˇz m˚uˇze zaˇc´ıt operace i. • R = {r1, ..., rK} je mnoˇzina K zdroj˚u.
• c : R → N ud´av´a kapacitu jednotliv´ych zdroj˚u.
• d : J → N pˇriˇrazuje kladnou dobu trv´an´ı jednotliv´e operace, kde d(j0) = d(jN +1) = 0.
D´ale uvaˇzujme, ˇze vˇsechny operace j ∈ {j1, ..., jN} jsou n´asledn´ıky operace j0 a z´aroveˇn
pˇredch´azej´ı jN +1. Potom ˇreˇsen´ım instance probl´emu G z´ısk´ame v´ysledek ve formˇe rozvrhu
S, kter´y je definov´an vektorem s(S) = (sj)j∈J, reprezentuj´ıc´ım kladn´e startovac´ı ˇcasy sj(S)
operace j ∈ J . D´ale necht’ f (S) je vektor ˇcasu ukonˇcen´ı operace, kde fj(S) = sj(S)+d(j) pro
vˇsechny j ∈ J . Rozvrh S je pak oznaˇcen za validn´ı, pokud splˇnuje podm´ınky pˇredch´azen´ı (1.12) a kapacity (1.13).
∀j ∈ J, ∀i ∈ Pj : sj ≥ si+ d(i) (1.12)
∀k ∈ R, ∀t ∈ h0, fN +1i : X
j∈J :t∈hsj,fji
r(j, k) ≤ c(k) (1.13)
Necht’ M (S) = fjN +1(S) − sj0(S) oznaˇcuje dobu trv´an´ı projektu (makespan). Potom je
obvykle c´ılem optimalizace minimalizovat M (S) dan´eho G.
Na obr´azku 1.3 m˚uˇzeme vidˇet ilustraci probl´emu, kde si m˚uˇzeme vˇsimnout, ˇze nˇekter´e operace musej´ı ˇcekat, neˇz jin´e operace na jin´em zaˇr´ızen´ı skonˇc´ı. Pro jednoduchost je zdroj ilustrov´an jako pr˚umyslov´y stroj, kter´y m´a v´yrobn´ı kapacitu jednu operaci.
1.3
Dalˇ
s´ı kombinatorick´
e ´
ulohy
Vedle ´uloh TSP, VRP a RCPSP je moˇzn´e v literatuˇre nal´ezt mnoh´e dalˇs´ı, v´ıce ˇci m´enˇe zkouman´e ´ulohy. V t´eto ˇc´asti si nˇekter´e z nich struˇcnˇe pˇribl´ıˇz´ıme, abychom dostali ucelen´y obraz, ˇc´ım se kombinatorick´a optimalizace m˚uˇze zab´yvat.
´
Ulohy s omezen´ımi
Tato sada probl´em˚u, v literatuˇre naz´yvan´a Constraint satisfaction problem [33], se vy-znaˇcuje t´ım, ˇze m´ame definov´anu mnoˇzinu promˇenn´ych X = {Xi, ..., Xn} a mnoˇzinu dom´en
D = {Di, ..., Dn}, kde pro kaˇzdou promˇennou definujeme jednu dom´enu hodnot, kter´ych
m˚uˇze promˇenn´a nab´yvat. Nakonec definujeme mnoˇzinu podm´ınek C, kter´e specifikuj´ı povo-len´e kombinace hodnot v dan´ych promˇenn´ych. ˇReˇsen´ım je pak pˇriˇrazen´ı hodnot promˇenn´ym tak, aby nebyla poruˇsena ˇz´adn´a ze specifikovan´ych podm´ınek.
Jako pˇr´ıklad si m˚uˇzeme uv´est probl´em barven´ı map [33], kde uvaˇzujeme mnoˇzinu promˇenn´ych jako mnoˇzinu st´at˚u X = {CZ, SK, DE...} a dom´enu pro vˇsechny promˇenn´e stejnou Di = {ˇcerven´a, zelen´a, modr´a, ˇzlut´a}. Podm´ınky pak specifikuj´ı, ˇze ˇz´adn´e dva
sou-sedn´ı st´aty nemohou m´ıt stejnou barvu, form´alnˇe bychom tedy museli vypsat vˇsechny dvo-jice sousedn´ıch st´at˚u, tedy napˇr´ıklad C = {CZ 6= SK, CZ 6= DE...}.
Dalˇs´ım pˇr´ıkladem m˚uˇze b´yt tak´e velmi zn´am´y probl´em n-dam, kde mus´ıme rozm´ıstit n dam na hrac´ı pole o velikosti n ∗ n tak, aby se ˇz´adnˇe dvˇe d´amy navz´ajem neohroˇzovaly, tedy do pozice, kde ˇz´adn´e dvˇe d´amy nesd´ıl´ı stejn´y ˇr´adek, sloupec, ani diagon´alu.
Probl´em batohu
Tento probl´em, v literatuˇre naz´yvan´y Knapsack problem je specifikov´an ´uloˇziˇstˇem (ba-tohem) dan´e kapacity C a mnoˇzinou n objekt˚u, kter´e jsou definov´any dvojic´ı (wi, vi), jeˇz
urˇcuje v´ahu, respektive cenu dan´eho objektu. Probl´em je potom um´ıstit do batohu objekty tak, aby mˇely dohromady co nejvˇetˇs´ı cenu, ale z´aroveˇn aby jejich celkov´a v´aha nepˇrekroˇcila kapacitu batohu. Form´alnˇe je probl´em pops´an rovnicemi (1.14) [34].
maximalizace n X i=1 vixi aby platilo n X i=1 wixi≤ C, (1.14)
kde xi ∈ {0, 1} urˇcuje, zda dan´y objekt bude vloˇzen do batohu ˇci nikoliv. Kromˇe
v´yukov´ych aplikac´ı, jako je napˇr´ıklad poˇc´ıt´an´ı snˇeden´eho j´ıdla s maxim´aln´ı energi´ı, m˚uˇze m´ıt tento probl´em re´aln´e vyuˇzit´ı napˇr´ıklad tak´e v ekonomii nebo kryptografii [32].
Pl´anov´an´ı sluˇzeb zdravotn´ıch sester
V tomto probl´emu, v literatuˇre naz´yvan´em Nurse Scheduling Problem nebo tak´e Nurse Rostering Problem, se zab´yv´ame optim´aln´ım pl´anov´an´ım smˇen zdravotn´ıch sester [36]. Tento probl´em mus´ı splˇnovat velk´e mnoˇzstv´ı podm´ınek a je ovlivˇnov´an mnoha parame-try.
V z´asadˇe m´ame definov´any zdravotn´ı sestry a smˇeny, kter´ych m˚uˇze b´yt v´ıce typ˚u, napˇr´ıklad denn´ı a noˇcn´ı. D´ale jsou v syst´emu definov´any nutn´e (hard ) a voln´e (soft ) podm´ınky. ˇReˇsen´ı je pak validn´ı jen a pouze, pokud nen´ı poruˇsena ˇz´adn´a nutn´a podm´ınka a splnˇen´ı voln´ych podm´ınek jen d´ale zvyˇsuj´ı kvalitu dan´eho ˇreˇsen´ı. C´ılem je nal´ezt ˇreˇsen´ı, kter´e splˇnuje vˇsechny nutn´e a maximum voln´ych podm´ınek. Nutn´e a voln´e podm´ınky pak velmi z´aleˇz´ı na konkr´etn´ı aplikaci a napˇr´ıklad i z´akonech a pravidlech dan´e zemˇe a instituce. Pro pˇredstavu se ale m˚uˇze jednat o n´asleduj´ıc´ı:
• Nutn´e podm´ınky:
– Poˇzadovan´y poˇcet osob na smˇenˇe mus´ı b´yt naplnˇen.
– ˇZ´adn´a sestra nesm´ı m´ıt v´ıce smˇen bˇehem jednoho dne (napˇr´ıklad i noˇcn´ı smˇenu jeden den a dalˇs´ı den denn´ı).
– Zamˇestnanec nesm´ı m´ıt napl´anov´anu sluˇzbu, pokud m´a na tento den odsouhla-senou dovolenou.
• Voln´e podm´ınky:
– Vˇsichni zamˇestnanci by mˇeli m´ıt vyrovnan´y poˇcet v´ıkendov´ych sluˇzeb v mˇes´ıci. – Nemˇelo by b´yt napl´anov´ano nˇekolik sluˇzeb v po sobˇe n´asleduj´ıc´ıch dnech,
ob-zvl´aˇstˇe pokud se jedn´a o dvan´acti hodinov´e smˇeny.
Shrnut´ı
V t´eto kapitole byly pˇredstaveny z´akladn´ı kombinatorick´e ´ulohy, pˇriˇcemˇz d˚uraz byl kladen na definici ´ulohy VRP, kter´a bude v pr´aci d´ale zkoum´ana. Definice je uvedena v z´avˇeru 1.1.2. D´ale byla pˇredstavena ´uloha RCPSP, a to pˇredevˇs´ım pro zaveden´ı notac´ı a ´uvod do probl´emu, kter´ym budou d´ale inspirov´any nˇekter´e metody. V z´avˇeru byly kr´atce pˇribl´ıˇzeny jeˇstˇe nˇekter´e velmi ˇcasto ˇreˇsen´e probl´emy, pˇredevˇs´ım jako n´ahled na rozmanitost tˇechto kombinatorick´ych ´uloh.
Kapitola 2
Algoritmy pro ˇ
reˇ
sen´ı
kombinatorick´
ych ´
uloh
V t´eto kapitole bude uvedeno nˇekolik moˇzn´ych algoritm˚u, kter´e mohou ˇreˇsit kombi-natorick´e optimalizaˇcn´ı probl´emy. Aˇckoliv jsou algoritmy obvykle pouˇziteln´e na jak´ykoli probl´em, potˇrebn´e vysvˇetlen´ı dan´eho algoritmu budeme v nˇekter´ych pˇr´ıpadech vztahovat ke konkr´etn´ı ilustruj´ıc´ı ´uloze. Algoritmy pro ˇreˇsen´ı optimalizaˇcn´ıch ´uloh mohou b´yt v z´asadˇe rozdˇeleny na tˇri kategorie: exaktn´ı (nˇekdy tak´e naz´yvan´e optimalizaˇcn´ı), heuristick´e (neboli aproximaˇcn´ı) a metaheuristick´e. Protoˇze algoritm˚u pro ˇreˇsen´ı tˇechto ´uloh existuje opravdu velk´e mnoˇzstv´ı, uvedeme si zde jen nˇekter´e z´astupce dan´ych kategori´ı a v´ıce se zamˇeˇr´ıme na metaheuristick´e metody, kter´e jsou v pr´aci d´ale rozv´ıjeny.
Na ´uvod je tˇreba zm´ınit pojem suboptim´aln´ı ˇreˇsen´ı, se kter´ym se setk´av´ame u metod heuristick´ych a metaheuristick´ych. Jedn´a se o nejlepˇs´ı nalezen´e ˇreˇsen´ı, u kter´eho nejsme schopni dok´azat, zda je opravdu optim´aln´ı, jelikoˇz zat´ım nebyl prozkoum´an cel´y stavov´y prostor. Navzdory tomu, ˇze se v nˇekter´ych pˇr´ıpadech opravdu m˚uˇze jednat o optimum, prohl´asit ˇreˇsen´ı za optim´aln´ı jsme schopni pouze u exaktn´ıch metod.
2.1
Exaktn´ı algoritmy
Tyto algoritmy jsou typicky matematick´e metody zkoumaj´ıc´ı cel´y stavov´y prostor za ´
uˇcelem nalezen´ı glob´aln´ıho optima. Jelikoˇz se zvˇetˇsuj´ıc´ım se probl´emem (napˇr. v´ıce z´akazn´ık˚u u VRP) roste stavov´y prostor typicky exponenci´alnˇe, m˚uˇze b´yt tento ´ukol velmi ˇcasovˇe n´aroˇcn´y, aˇz neprovediteln´y (v rozumn´em ˇcase). Nicm´enˇe u menˇs´ıch instanc´ı probl´emu je moˇzn´e tyto metody zd´arnˇe pouˇz´ıt a budeme m´ıt jistotu, ˇze jsme naˇsli skuteˇcn´e optimum.
Line´arn´ı programov´an´ı je nejv´ıce pouˇz´ıvan´a skupina exaktn´ıch metod pro ˇreˇsen´ı op-timalizaˇcn´ıch probl´em˚u. Probl´em ˇreˇsiteln´y line´arn´ım programov´an´ım je typicky definov´an line´arn´ı cenovou (optimalizaˇcn´ı) funkc´ı, kterou chceme minimalizovat a mnoˇzinou ome-zuj´ıc´ıch podm´ınek (constraint ). Tyto podm´ınky jsou pak line´arn´ımi omezen´ımi promˇenn´ych pouˇzit´ych v cenov´e optimalizaˇcn´ı funkci. Line´arn´ı programov´an´ı se podob´a line´arn´ı algebˇre, s t´ım rozd´ılem, ˇze zde ˇcasto vyuˇz´ıv´ame nerovnost´ı m´ısto rovnost´ı [35]. Pro ˇreˇsen´ı probl´em˚u line´arn´ıho programov´an´ı se ˇcasto pouˇz´ıv´a simplexov´a metoda, kter´a typicky dok´aˇze nal´ezt ˇreˇsen´ı v polynomi´aln´ım ˇcase. Variantou line´arn´ıho programov´an´ı, kde mohou promˇenn´e nab´yvat pouze diskr´etn´ıch hodnot, se pak naz´yv´a celoˇc´ıseln´e programov´an´ı (integer pro-gramming). Takto definovan´e probl´emy se pak nejˇcastˇeji ˇreˇs´ı pomoc´ı metody vˇetv´ı a mez´ı (branch and bound ), nebo metodou ˇrezn´ych nadrovin (cutting plane).
Probl´em CVRP je v celoˇc´ıseln´em programov´an´ı formulov´an jako [38]: minimalizace X i∈V X j∈V cijxij (2.1) za podm´ınek xij ∈ {0, 1} ∀i, j ∈ V, (2.2) X i∈V xij = 1 ∀j ∈ V \ {0}, (2.3) X j∈V xij = 1 ∀i ∈ V \ {0}, (2.4) X i∈V xi0+ X j∈V x0j = 2K, (2.5) X i /∈S X j∈S xij ≥ r(S) ∀S ⊆ V \ {0}, S 6= ∅. (2.6)
Podm´ınky (2.3) a (2.4) zaruˇcuj´ı, ˇze vˇzdy jen jedna hrana vede k i od kaˇzd´eho z´akazn´ıka. Podobnˇe podm´ınka (2.5) urˇcuje kolik hran vede do a od skladu, kde K oznaˇcuje poˇcet tras v ˇreˇsen´ı, respektive poˇcet vozidel. Podm´ınky (2.6), naz´yvan´e capacity-cut constraints, zaruˇcuj´ı dodrˇzen´ı kapacitn´ıho omezen´ı vozidla. Urˇcuj´ı, ˇze kaˇzd´y ˇrez (V \ S, S) definov´an mnoˇzinou z´akazn´ık˚u S, je protnut minim´alnˇe r(S) hranami, kde r(S) je minim´aln´ı poˇcet vozidel potˇrebn´ych k obslouˇzen´ı vˇsech z´akazn´ık˚u v S [38]. Tato hodnota z´aleˇz´ı na pouˇzit´e variantˇe VRP, konkr´etnˇe u CVRP se d´a vyj´adˇrit jako [20]:
r(S) = P
i∈Sdi
Q (2.7)
Branch and bound
Metoda vˇetv´ı a mez´ı patˇr´ı mezi z´akladn´ı exaktn´ı metody pro ˇreˇsen´ı optimalizaˇcn´ıch probl´em˚u. Vyhled´avac´ı strom je v t´eto metodˇe tvoˇren dynamicky a ze zaˇc´atku je tvoˇren pouze koˇrenov´ym uzlem. D´ale m´ame urˇcenu hranici (bound ), kter´a reprezentuje hodnotu zat´ım nejlepˇs´ıho nalezen´eho ˇreˇsen´ı. V poˇc´atku algoritmu je tato hodnota v mnoha pˇr´ıpadech z´ısk´ana pouˇzit´ım nˇejak´e jin´e heuristiky [10]. V kaˇzd´e iteraci algoritmu je pak pro dalˇs´ı prohled´av´an´ı vybr´an uzel, kter´y reprezentuje neprozkoumanou ˇc´ast stavov´eho prostoru platn´ych ˇreˇsen´ı. Tento uzel je pak rozvˇetven (branch), ˇc´ımˇz je tento podprostor d´ale rozdˇelen na menˇs´ı podprostory. N´aslednˇe jsou tyto vygenerovan´e uzly ohodnoceny a pokud je jejich hodnota lepˇs´ı, neˇz je aktu´aln´ı hranice, je toto ˇreˇsen´ı zapamatov´ano a hodnota hranice (bound ) je nahrazena hodnotou takov´eho uzlu. Pokud je hodnota naopak niˇzˇs´ı neˇz aktu´aln´ı hranice, je cel´y tento uzel zahozen, a to s t´ım pˇredpokladem, ˇze ˇz´adn´e ˇreˇsen´ı z jeho pod-prostoru nebude lepˇs´ı neˇz ohodnocen´ı jeho sam´eho. V t´eto redukci stavov´eho prostoru pak spoˇc´ıv´a optimalizace tohoto algoritmu. Algoritmus je ukonˇcen pokud jiˇz nejsou ˇz´adn´e uzly k prohled´av´an´ı a jako optim´aln´ı ˇreˇsen´ı je prohl´aˇseno to, kter´e m´a v tuto chv´ıli nejlepˇs´ı ohodnocen´ı.
Kombinac´ı t´eto metody a metod seˇcn´ych nadrovin (cutting plane) z´ısk´ame algoritmus branch and cut, kter´y se tak´e pouˇz´ıv´a pro ˇreˇsen´ı optimalizaˇcn´ıch ´uloh. Zde je metoda seˇcn´ych nadrovin pouˇzita pro z´uˇzen´ı prohled´avan´eho prostoru pro metodu vˇetv´ı a mez´ı.
2.2
Heuristick´
e algoritmy
Heuristick´e (nˇekdy tak´e aproximaˇcn´ı) algoritmy vyuˇz´ıv´ame, pokud jsou klasick´e exaktn´ı metody moc pomal´e, nebo nejsou schopny nal´ezt ˇreˇsen´ı v˚ubec. Heuristiky naproti tomu prohled´avaj´ı jen malou ˇc´ast stavov´eho prostoru, ˇc´ımˇz sice mohou minout optim´aln´ı ˇreˇsen´ı, ale rapidnˇe je zv´yˇsena rychlost. Tyto metody tak obecnˇe poskytuj´ı pouze suboptim´aln´ı ˇreˇsen´ı, avˇsak i to m˚uˇze b´yt pˇr´ınosn´e a hlavnˇe jej dostaneme v rozumn´em ˇcase. Heuristiky mohou b´yt pouˇzity samostatnˇe, ale velmi ˇcasto nach´azej´ı uplatnˇen´ı napˇr´ıklad v kombinaci s n´ıˇze popsan´ymi metaheuristick´ymi algoritmy pro zv´yˇsen´ı jejich efektivnosti. Heuristiky jsou ˇcasto specificky navrˇzen´e pro konkr´etn´ı probl´emy, pˇr´ıpadnˇe tˇr´ıdy probl´em˚u, proto si zde uvedeme jen z´akladn´ı postupy pouˇziteln´e pro grafov´e ´ulohy jako je TSP nebo VRP. Ty pak m˚uˇzeme rozdˇelit na dva z´akladn´ı typy, a to konstruktivn´ı (tour construction), kter´e vytv´aˇrej´ı nov´e ˇreˇsen´ı postupn´ym pˇrid´av´an´ım uzl˚u, a vylepˇsuj´ıc´ı (tour improvement ), kter´e jsou schopny vylepˇsit st´avaj´ıc´ı platn´e ˇreˇsen´ı [19].
Konstruktivn´ı algoritmy
Algoritmus nejbliˇzˇs´ıho souseda
V t´eto metodˇe, v origin´ale nearest-neighbour algorithm, je platn´e ˇreˇsen´ı postupnˇe tvoˇreno tak, ˇze se v kaˇzd´em kroku rozhodneme pro aktu´alnˇe nejv´yhodnˇejˇs´ı variantu pokraˇcov´an´ı. Napˇr´ıklad v TSP zvol´ıme n´ahodnˇe prvn´ı mˇesto a pot´e zkoum´ame vˇsechny zb´yvaj´ıc´ı mˇesta a vybereme vˇzdy to, kter´e je k tomu aktu´aln´ımu nejbl´ıˇze. Toto opakujeme pokaˇzd´e s po-sledn´ım vloˇzen´ym mˇestem a nakonec se vr´at´ıme na zaˇc´atek. Takov´e uvaˇzov´an´ı nemus´ı b´yt z dlouhodob´eho hlediska nejv´yhodnˇejˇs´ı, nicm´enˇe algoritmus je takto velmi jednoduch´y, rychl´y a produkuje platn´a ˇreˇsen´ı. V pˇr´ıpadˇe VRP by byl princip podobn´y, jen bychom museli br´at v potaz i skuteˇcnost, zda dalˇs´ı nejbliˇzˇs´ı z´akazn´ık nepˇrekroˇc´ı kapacitu vozidla nebo maxim´aln´ı d´elku trasy.
Algoritmy vkl´ad´an´ı
Tato kategorie popisuje velk´e mnoˇzstv´ı algoritm˚u, kter´e funguj´ı n´asleduj´ıc´ım zp˚usobem. Nejprve je vytvoˇrena cesta jen ze dvou vrchol˚u. V dalˇs´ım kroku jsou pak vˇzdy uvaˇzov´any jeˇstˇe nepouˇzit´e vrcholy, kter´e jsou postupnˇe vkl´ad´any s ohledem na specifikovan´e krit´erium. Toto m˚uˇze b´yt napˇr´ıklad vrchol s nejkratˇs´ı vzd´alenost´ı od prozat´ımn´ı cesty, vrchol, kter´y je nejd´ale, vrchol kter´y sv´ır´a nejvˇetˇs´ı ´uhel s danou cestou a podobn´e [19].
Vylepˇsuj´ıc´ı algoritmy
k-opt algoritmus
Tento jednoduch´y algoritmus je urˇcen k vylepˇsov´an´ı jiˇz existuj´ıc´ıho, platn´eho ˇreˇsen´ı, a to v n´asleduj´ıc´ıch dvou kroc´ıch [19]:
1. Mˇejme vstupn´ı platn´e ˇreˇsen´ı.
2. Odstraˇn k hran z ˇreˇsen´ı a vyzkouˇsej spojit k vznikl´ych cest vˇsemi moˇzn´ymi zp˚usoby. Pokud nˇekterou z kombinac´ı vznikne ˇreˇsen´ı, kter´e je lepˇs´ı neˇz to vstupn´ı, uvaˇzuj toto ˇreˇsen´ı jako vstupn´ı a opakuj Krok 2. Ukonˇci pokud jiˇz nedoˇslo k ˇz´adn´emu zlepˇsen´ı.
Velmi zn´amou a ˇcasto pouˇz´ıvanou variantou tohoto algoritmu je 2-opt a 3-opt, d´ıky kter´ym je moˇzn´e se zbavit r˚uzn´ych kˇr´ıˇzen´ı v trase, a t´ım ji vylepˇsit. Tyto algoritmy jsou vˇsak pomˇernˇe v´ypoˇcetnˇe n´aroˇcn´e, kde jejich sloˇzitost roste s poˇctem vrchol˚u n a odstraˇnovan´ych hran k. ˇCasov´a sloˇzitost je konkr´etnˇe O(nk).
2.3
Metaheuristick´
e algoritmy
Tyto algoritmy m˚uˇzeme ch´apat jako jak´esi zastˇreˇsuj´ıc´ı algoritmy, kter´e uvnitˇr sv´eho fungov´an´ı mohou pouˇz´ıvat v´ıce r˚uzn´ych princip˚u a heuristik. Metody jsou ˇcasto inspirovan´e pˇr´ırodou a i kdyˇz jejich fungov´an´ı nen´ı v mnoha pˇr´ıpadech matematicky dok´az´ano a z´avis´ı ve velk´e m´ıˇre na n´ahodˇe, v posledn´ıch des´ıtk´ach let se ukazuje, ˇze poskytuj´ı slibn´e v´ysledky a alternativu ke klasick´ym, exaktn´ım pˇr´ıstup˚um. Oproti samostatn´ym heuristik´am jsou schopny prohledat vˇetˇs´ı ˇc´ast stavov´eho prostoru, avˇsak jsou tak´e v´ıce v´ypoˇcetnˇe n´aroˇcn´e.
2.3.1 Genetick´e algoritmy
Genetick´e algoritmy (GA) pˇredstaven´e Hollandem v ˇcl´anku Genetic algorithms [15] se zakl´adaj´ı na darwinovsk´em principu evoluce, hled´an´ı optim´aln´ıho ˇreˇsen´ı tedy prob´ıh´a for-mou soutˇeˇze mezi jedinci v r´amci populace. Aby bylo moˇzn´e posoudit kvalitu jednotliv´ych jedinc˚u, porovn´av´ame je podle v´ysledku hodnot´ıc´ı (fitness) funkce. Nov´a generace individu´ı pak vznik´a pomoc´ı reprodukce a kˇr´ıˇzen´ı, jedinci v nov´e populaci tak maj´ı vlastnosti ˇc´asteˇcnˇe zdˇedˇen´e po sv´ych rodiˇc´ıch a ˇc´asteˇcnˇe ovlivnˇen´e n´ahodn´ymi mutacemi. Mnohon´asobn´ym opakov´an´ım tohoto procesu jsme schopni z´ıskat populaci ˇreˇsen´ı, kter´e jsou dostateˇcnˇe kva-litn´ı.
Vytvoření počáteční populace a její ohodnocení
Výběr dvojic rodičů v aktuální populaci
Křížení rodičů a tvorba potomků
Mutace potomků
Ohodnocení potomků
Vytvoření nové populace
Pokud není splněna ukončující podmínka
Obr´azek 2.1: Sch´ema genetick´eho algoritmu.
Obecn´e sch´ema algoritmu je zobrazeno na obr´azku 2.1. Nejprve je vytvoˇrena nov´a popu-lace, kde je vygenerovan´e ˇreˇsen´ı zak´odov´ano v genech dan´eho jedince. N´aslednˇe jsou jedinci ohodnoceni z hlediska kvality jejich ˇreˇsen´ı, a to hodnot´ıc´ı funkc´ı. Tato hodnota je d´ale pouˇzita ve f´azi v´ybˇeru rodiˇc˚u, kde obecnˇe plat´ı, ˇze rodiˇc s kvalitnˇejˇs´ım ˇreˇsen´ım m´a vˇetˇs´ı pravdˇepodobnost b´yt vybr´an. Tito zvolen´ı rodiˇce jsou zkˇr´ıˇzeni (rekombinac´ı jejich gen˚u),
a t´ım vzniknou nov´ı potomci. S malou pravdˇepodobnost´ı se pak provede u nˇekter´ych po-tomk˚u mutace, tedy n´ahodn´a zmˇena jejich gen˚u. Typicky nejlepˇs´ı nov´ı jedinci nahrad´ı ˇc´ast star´e populace a cel´y tento proces se opakuje.
S ohledem na skuteˇcnost, ˇze je pr˚ubˇeh algoritmu znaˇcnˇe stochastick´y, doch´az´ı k tomu, ˇ
ze kaˇzd´y bˇeh ˇreˇsen´ı je odliˇsn´y a nˇekdy se m˚uˇze st´at, ˇze cel´a populace uv´azne v lok´aln´ım mi-nimu a v´ysledek je tak velmi neuspokojiv´y. Proto se chov´an´ı genetick´ych algoritm˚u obvykle popisuje statisticky z nˇekolika opakovan´ych bˇeh˚u [17].
2.3.2 Tabu prohled´av´an´ı
Tabu Search je metoda, kde v kaˇzd´e iteraci nalezneme k souˇcasn´emu ˇreˇsen´ı x nˇekolik sou-sedn´ıch pomoc´ı lok´aln´ıho vyhled´av´an´ı. Pot´e je x nahrazeno vˇzdy t´ım nejlepˇs´ım sousedn´ım ˇreˇsen´ım. To znamen´a, ˇze i kdyˇz je nov´e ˇreˇsen´ı horˇs´ı neˇz souˇcasn´e, stejnˇe je provedeno nahra-zen´ı, ˇc´ımˇz se opˇet dost´av´ame z lok´aln´ıho minima. Aby bylo zabr´anˇeno cyklen´ı, jsou vˇsechna ned´avno prozkouman´a ˇreˇsen´ı vloˇzena do zak´azan´eho seznamu (tabu), a to na urˇcitou dobu (resp. poˇcet iterac´ı). Abychom nezatˇeˇzovali pamˇet’ ukl´ad´an´ım dlouh´eho seznamu cel´ych ˇreˇsen´ı, typicky jsou ukl´ad´any jen nˇekter´e jejich atributy tak, aby se daly ˇreˇsen´ı porovnat [38]. Tento z´akladn´ı algoritmus lze d´ale vylepˇsovat mnoˇzstv´ım dalˇs´ıch funkc´ı a kombinovat s r˚uzn´ymi heuristikami, typicky specifick´ymi pro danou ´ulohu, ˇc´ımˇz m˚uˇzeme z´ıskat pomˇernˇe silnou optimalizaˇcn´ı metodu. Algoritmus je ale vˇzdy v z´asadˇe ˇr´ızen tˇemito z´akladn´ımi kroky [19]:
1. Mˇejme poˇc´ateˇcn´ı ˇreˇsen´ı x a nastavme seznam tabu T := ∅.
2. Necht’ N (x) je vygenerovan´a mnoˇzina sousedn´ıch ˇreˇsen´ı x. Pokud N (x) \ T = ∅, pokraˇcuj na Krok 3. Jinak vyber nejlepˇs´ıˇreˇsen´ı y z N (x)\T a nastav x = y. Aktualizuj seznam tabu T a nejlepˇs´ı zn´am´e ˇreˇsen´ı.
3. Pokud byly splnˇeny podm´ınky ukonˇcen´ı (napˇr. poˇcet iterac´ı), vrat’ nejlepˇs´ı nalezen´e ˇreˇsen´ı. Jinak pokraˇcuj na Krok 2.
2.3.3 Simulovan´e ˇz´ıh´an´ı
Simulovan´e ˇz´ıh´an´ı je zaloˇzeno na modelu pˇredstaven´em Metropolisem v roce 1953, kter´y vych´az´ı ze simulace metalurgick´eho postupu ˇz´ıh´an´ı, skl´adaj´ıc´ı se ze zahˇr´at´ı materi´alu a jeho postupn´eho, pomal´eho zchladnut´ı. V t´eto metodˇe se snaˇz´ıme vyhnout uv´aznut´ı v lok´aln´ım minimu pˇrij´ım´an´ım i horˇs´ıho ˇreˇsen´ı, a to pˇredevˇs´ım pˇri vysok´e teplotˇe.
V kaˇzd´e iteraci nalezneme pomoc´ı lok´aln´ıho vyhled´av´an´ı sousedn´ıˇreˇsen´ı y k souˇcasn´emu ˇreˇsen´ı x. Pokud je nov´e ˇreˇsen´ı y lepˇs´ı neˇz ˇreˇsen´ı x, je nov´e ˇreˇsen´ı pˇrijato, tedy x je nahrazeno y. Naproti tomu, pokud je ˇreˇsen´ı y horˇs´ı neˇz x, nov´e ˇreˇsen´ı je akceptov´ano s urˇcitou pravdˇepodobnost´ı, kter´a z´avis´ı jak na rozd´ılu hodnot x a y, tak na aktu´aln´ı tep-lotˇe. Pravdˇepodobnost pˇrijet´ı je vyj´adˇrena rovnic´ı (2.8) [5].
p(x, y) = exp(F (x) − F (y)
T ), (2.8)
kde F je optimalizaˇcn´ı funkce urˇcuj´ıc´ı v´ykonnost dan´eho ˇreˇsen´ı a T aktu´aln´ı teplota. Cel´y princip pak m˚uˇzeme ilustrovat algoritmem 1 [5].
Algoritmus 1 Princip simulovan´eho ˇz´ıh´an´ı Vstup: Instance probl´emu VRP
V´ystup: Nejlepˇs´ı nalezen´e ˇreˇsen´ı xbest
Inicializuj ˇreˇsen´ı x, teplotu T0 a iteraci iter = 0
while iter ≤ maximum iterac´ı do vyber n´ahodn´e sousedn´ı ˇreˇsen´ı y if F (y) ≤ F (x) then
x := y
else if p(x, y) ≤ random(0,1) then x := y end if if F (x) < F (xbest) then xbest:= x end if aktualizuj teplotu Tk na Tk+1 iter = iter + 1 end while 2.3.4 Mravenˇc´ı kolonie
Optimalizace mravenˇc´ı koloni´ı (Ant Colony Optimization) je dalˇs´ı z ´uspˇeˇsn´ych me-taheuristik inspirovan´ych pˇr´ırodou. Tato metoda je zaloˇzena na pozorov´an´ı re´aln´ych mra-venˇc´ıch koloni´ı hledaj´ıc´ıch potravu. Pˇri hled´an´ı potravy mravenci znaˇc´ı cestu, po kter´e jdou, vyluˇcov´an´ım aromatick´e l´atky zvan´e feromon. Mnoˇzstv´ı poloˇzen´eho feromonu z´avis´ı na d´elce dan´e trasy a kvalitˇe zdroje potravy. Tyto feromony pot´e poskytuj´ı informaci ostatn´ım mra-venc˚um, jelikoˇz ti maj´ı tendenci sledovat trasy s nejvˇetˇs´ı koncentrac´ı feromon˚u. ˇCasem se trasy, kter´e jsou kratˇs´ı a vedou k lepˇs´ımu v´ysledku (zdroji potravy), st´avaj´ı ˇc´ım d´al v´ıce frekventovan´e, a t´ım p´adem se na t´eto trase zaˇcnou rychleji akumulovat feromony, coˇz pˇritahuje v´ıce mravenc˚u. Fakt, ˇze mravenci jsou ˇcasem schopni nal´ezt kvalitnˇejˇs´ı trasy ke sv´e potravˇe, m˚uˇzeme vyuˇz´ıt pr´avˇe k optimalizaci [5]. Princip t´eto metody je ilustrov´an na obr´azku 2.2, kde vid´ıme postupn´e zesilov´an´ı feromonov´e stopy na kratˇs´ı trase a pˇritahov´an´ı v´ıce a v´ıce mravenc˚u na tuto trasu.
1 2 3
HNÍZDO HNÍZDO HNÍZDO
POTRAVA POTRAVA POTRAVA
V samotn´em ˇreˇsen´ı pak umˇel´ı mravenci zkoumaj´ı stavov´y prostor, kde optimalizaˇcn´ı funkce zastupuje kvalitu zdroje potravy a adaptivn´ı pamˇet’ reprezentuje feromonov´e stopy [38]. Umˇel´y mravenec tak´e typicky nen´ı naprosto slep´y a dok´aˇze ˇr´ıct, kter´y z n´asleduj´ıc´ıch krok˚u je ten nejlepˇs´ı, s ohledem na d´elky cest atd. Typicky je tak´e provedena diskreti-zace ˇcasu, kdy vˇzdy v ˇcase t jsou vysl´ani vˇsichni mravenci, ti naleznou ˇreˇsen´ı, aktualizuj´ı feromony a pot´e je tento cyklus opakov´an v ˇcase t + 1.
Algoritmus je pˇredevˇs´ım vhodn´y pro grafov´e ´ulohy (TSP, VRP) [5], kter´e nejv´ıce napo-dobuj´ı realitu. Princip metody m˚uˇzeme naznaˇcit na probl´emu TSP, pro kter´y byla metoda p˚uvodnˇe navrˇzena. Zde je kaˇzd´y umˇel´y mravenec jednoduch´y agent s n´asleduj´ıc´ım chov´an´ım [11]:
• Dalˇs´ı mˇesto, jenˇz navˇst´ıv´ı vol´ı s pravdˇepodobnost´ı, kter´a je funkc´ı vzd´alenosti mezi tˇemito mˇesty a mnoˇzstv´ım feromonu na jejich spojnici.
• Aby byly uskuteˇcnˇeny pouze validn´ı trasy, jsou jiˇz navˇst´ıven´a mˇesta zak´az´ana, tedy vkl´ad´ana do tabu seznamu.
• Po dokonˇcen´ı trasy (navˇst´ıven´ı vˇsech mˇest), poloˇz´ı mravenec odpov´ıdaj´ıc´ı mnoˇzstv´ı feromonu na kaˇzdou hranu sv´e trasy.
Pravdˇepodobnost, ˇze bude mravenec k pokraˇcovat z mˇesta i do mˇesta j je pak d´ana rovnic´ı [11]: pkij = (τij)α(ηij)β P
h∈allowedk(τih)α(ηih)β pokud j ∈ allowedk
0 v ostatn´ıch pˇr´ıpadech,
(2.9)
kde τij znaˇc´ı feromonovou stopu na hranˇe (i, j) a ηij tzv. viditelnost, kterou vyj´adˇr´ıme
jako 1/cij, kde cij je vzd´alenost mezi mˇesty. Seznam allowed je v tomto pˇr´ıpadˇe seznam jeˇstˇe
nenavˇst´ıven´ych mˇest, tedy opak tabu seznamu. Pomoc´ı parametr˚u α a β pak nastavujeme v´ahu d˚uleˇzitosti feromon˚u a vzd´alenost´ı pˇri v´ybˇeru.
Aktualizace feromon˚u cel´e populace mravenc˚u o velikosti m je pak vyj´adˇrena rovnic´ı (2.10) [11]. τij(t + 1) = ρ ∗ τij(t) + m X k=1 ∆τijk kde ∆τijk = ( 1
Lk pokud mravenec pouˇzil hranu (i, j) ve sv´e trase
0 v ostatn´ıch pˇr´ıpadech,
(2.10)
kde ρ je koeficient vypaˇrov´an´ı feromon˚u, kter´y je nutn´y pro vyhnut´ı se lok´aln´ım mi-nim˚um a Lk je d´elka trasy mravence k.
Kapitola 3
Aplikace optimalizaˇ
cn´ıch algoritm˚
u
na VRP
V pˇredchoz´ı kapitole byla naznaˇcena moˇzn´a ˇreˇsen´ı kombinatorick´ych optimalizaˇcn´ıch probl´em˚u a nyn´ı bude navrˇzen zp˚usob, jak nˇekter´e tyto metody aplikovat na probl´em, kter´ym se tato pr´ace zab´yv´a, tedy probl´em VRP. Jelikoˇz je tento probl´em tzv. NP-hard, bylo by exaktn´ı ˇreˇsen´ı tohoto probl´emu ˇcasovˇe nepˇrijateln´e, pˇredevˇs´ım pokud se bav´ıme o re´aln´ych syst´emech, kde m˚uˇze b´yt poˇcet z´akazn´ık˚u velmi velk´y. Obecnˇe n´am bude l´epe vyhovovat suboptim´aln´ı ˇreˇsen´ı z´ıskan´e v rozumn´em ˇcase kombinac´ı heuristik a metaheuris-tik.
V t´eto pr´aci budou zkoum´any a n´aslednˇe implementov´any ˇctyˇri metaheuristick´e al-goritmy. Jedn´a se o genetick´e algoritmy (GA), tabu prohled´av´an´ı (TABU), simulovan´e ˇ
z´ıh´an´ı (SA) a optimalizaci mravenˇc´ı koloni´ı (ANT). V t´eto kapitole budou nejprve uvedeny n´asleduj´ıc´ı obecn´e principy pouˇziteln´e ve vˇsech tˇechto algoritmech:
• Obecn´a tvrzen´ı potˇrebn´a d´ale v textu. • Reprezentace, neboli k´odov´an´ı ˇreˇsen´ı. • Tvorba poˇc´ateˇcn´ıho ˇreˇsen´ı.
D´ale budou v kapitole postupnˇe rozebr´any algoritmy GA, TABU, SA a ANT a u kaˇzd´eho bude diskutov´ana aplikace na VRP. Pˇredevˇs´ım u komplexn´ıho genetick´eho algoritmu budou tak´e navrˇzena moˇzn´a vylepˇsen´ı a doplˇnuj´ıc´ı techniky. Pˇredstaven´e metody byly v t´eto pr´aci d´ale implementov´any a v z´avˇeru bude zkoum´an jejich pˇr´ınos pomoc´ı ˇrady experiment˚u.
3.1
Obecn´
a tvrzen´ı o ˇ
reˇ
sen´ı
Pro dalˇs´ı pouˇzit´ı v pr´aci budou definov´ana n´asleduj´ıc´ı obecn´a tvrzen´ı platn´a pro probl´em VRP. Na tato tvrzen´ı bude odkazov´ano d´ale pˇri vysvˇetlov´an´ı pˇredstaven´ych metod. Lemma 1. Mˇejme ˇreˇsen´ı S1 s trasami R1 a S2 s trasami R2, pˇriˇcemˇz plat´ı S16= S2. Potom
Cost(S1) = Cost(S2), pr´avˇe pokud plat´ı:
∀R1
i ∃R2j : R1i = Rj2∨ R1i = rev(R2j) i ∈ {1, ..., m1}, j ∈ {1, ..., m2}, (3.1)
kde operace rev(Ri) oznaˇcuje obr´acen´ı poˇrad´ı z´akazn´ık˚u v trase Ri.
Tato lemma ˇr´ık´a, ˇze cena dvou r˚uzn´ych ˇreˇsen´ı je shodn´a, pr´avˇe pokud obsahuj´ı stejn´e trasy v jin´em poˇrad´ı, nebo jsou nˇekter´e trasy projet´e obr´acenˇe.
D˚ukaz. Jestliˇze je cena hrany symetrick´a a tedy cij = cji, plat´ı Cost(Ri) = Cost(rev(Ri)),
kde Ri = {x, y, z} a rev(Ri) = {z, y, x}, jelikoˇz c0,x+ cxy+ cyz+ cz0 = c0z + czy+ cyx+
cx0. Stejnˇe tak nez´aleˇz´ı na poˇrad´ı projet´ych tras, jelikoˇz celkov´a cena je definov´ana jako
Cost(S) = Pm
i=1Cost(Ri) a sˇc´ıt´an´ı je operac´ı komutativn´ı. Tato tvrzen´ı jsou tak´e
ilu-strov´ana na obr´azku 3.1, kde vid´ıme vizualizaci trasy odpov´ıdaj´ıc´ı uveden´emu k´odov´an´ı. Je vidˇet, ˇze trasy jsou i pˇres zmˇeny k´odov´an´ı naprosto stejn´e, a tak mus´ı b´yt stejn´a i jejich celkov´a cena. ZÁKAZNÍK SKLAD 1 2 10 9 8 7 6 5 4 3 13 12 11 5 6 7 1 2 3 4 8 9 10 11 12 13 1 2 10 9 8 7 6 5 4 3 13 12 11 5 6 7 4 3 2 1 9 8 10 11 12 13 R1 R2 R3 R4 R1 R2 R3 R4
Obr´azek 3.1: Ilustrace platnosti Lemmatu 1. Vlevo cesty ˇreˇsen´ı S1 a jejich vizualizace.
Vpravo jsou trasy v S2 jin´e, ale vizualizace z˚ust´av´a stejn´a.
Lemma 2. Mˇejme ˇreˇsen´ı S. Necht’ S0 znaˇc´ı ˇreˇsen´ı vznikl´e zmˇenou poˇrad´ı z´akazn´ık˚u v li-bovoln´e trase Ri ˇreˇsen´ı S. Potom m˚uˇze doj´ıt ke tˇrem situac´ım: Cost(S) 6= Cost(S0);
Cost(S) = Cost(S0), pokud je trasa Ri nahrazena za rev(Ri), coˇz dokazuje Lemma 1;
a Cost(S) = Cost(S0), pokud jsou prohozen´e vrcholy stejnˇe vzd´aleny od sousedn´ıch vrchol˚u na trase (viz obr´azek 3.2).
1 2 4 3 1 2 3 4 1 2 4 3 1 3 2 4
Obr´azek 3.2: Ilustrace tˇret´ı moˇznosti zm´ınˇen´e v Lemmatu 2. Pˇrestoˇze byly na trase proho-zeni dva z´akazn´ıci, d´elka trasy z˚ust´av´a stejn´a.
D˚ukaz. Zamˇeˇrme se na dok´az´an´ı prvn´ı moˇznosti, tedy Cost(S) 6= Cost(S0). Pˇredpokl´adejme, ˇ
ze kaˇzd´y z´akazn´ık i ∈ V m´a jin´e souˇradnice v prostoru. Pomineme-li v´yjimku uvedenou v tˇret´ı moˇznosti Lemmatu 2, m˚uˇzeme prohl´asit, ˇze plat´ı:
∀i ∈ V, ∀j ∈ V \ {i}, ∀h ∈ V \ {i, j} : cij 6= cih, (3.2)
tedy ˇze vzd´alenost z vrcholu i do jin´eho vrcholu je vˇzdy jedineˇcn´a. Potom pokud v trase R1 = {a, b, c, d} vymˇen´ıme pozice vrchol˚u b, c a dostaneme R2 = {a, c, b, d}, m˚uˇzeme
prohl´asit, ˇze Cost(R1) 6= Cost(R2), jelikoˇz cac6= caba ccd 6= cbd. Tato skuteˇcnost je n´azornˇe
ilustrov´ana na obr´azku 3.3.
1 2 10 9 8 7 6 5 4 3 13 12 11 5 6 7 1 2 3 4 8 9 10 11 12 13 1 2 10 9 8 7 6 5 4 3 13 12 11 5 6 7 1 3 2 4 8 9 10 11 13 12 R1 R2 R3 R4 R1 R2 R3 R4
Obr´azek 3.3: Ilustrace platnosti Lemmatu 2. Vlevo cesty ˇreˇsen´ı S a jejich vizualizace. Vpravo byly trasy pozmˇenˇeny prohozen´ım z´akazn´ık˚u, konkr´etnˇe tˇech oznaˇcen´ych ˇcervenˇe. V od-pov´ıdaj´ıc´ı ilustraci je moˇzn´e sledovat zmˇenu d´elky trasy.
Tato Lemma tedy ˇr´ık´a, ˇze pokud zmˇen´ıme poˇrad´ı z´akazn´ık˚u, zmˇen´ı se tak´e celkov´a cena ˇreˇsen´ı. V´yjimkou jsou uveden´e dvˇe situace, kdy cena m˚uˇze z˚ustat stejn´a.
3.2
Reprezentace ˇ
reˇ
sen´ı
Typicky napˇr´ıklad u GA v z´akladn´ım pod´an´ı m´ame ˇreˇsen´ı reprezentov´ano (zak´odov´ano) jako bin´arn´ı ˇretˇezec, nad kter´ym jsou n´aslednˇe prov´adˇeny kˇr´ıˇz´ıc´ı a mutaˇcn´ı oper´atory. Toto m˚uˇze b´yt vhodn´e u numerick´e optimalizace, ale obvykle nen´ı moˇzn´e tento pˇr´ıstup apliko-vat na kombinatorick´e probl´emy. U probl´emu TSP se obvykle setk´av´ame s permutaˇcn´ım k´odov´an´ım, kde postupn´a ˇc´ısla mˇest urˇcuj´ı poˇrad´ı jejich pr˚uchodu. Nad t´ımto k´odov´an´ı pak mus´ıme pouˇz´ıt specializovan´e oper´atory, kter´e vˇzdy zachovaj´ı permutaci a nevyr´ab´ı neplatn´e ˇreˇsen´ı.
U probl´emu VRP nav´ıc mus´ıme zak´odovat tak´e informaci o nˇekolika cest´ach, tedy o tom kdy se vozidlo vrac´ı do skladu. Jednou z navrhovan´ych moˇznost´ı je pouˇz´ıt kla-sick´e permutaˇcn´ı zak´odov´an´ı, kde jednoduˇse zap´ıˇseme postupnˇe navˇst´ıven´e z´akazn´ıky. Pˇri dek´odov´an´ı pak postupnˇe pˇriˇrazujeme z´akazn´ıky do cesty, a to aˇz do chv´ıle, kdy nen´ı vyˇcerp´ana kapacita vozidla nebo pˇrekroˇcena maxim´aln´ı d´elka trasy. Po vyˇcerp´an´ı kapa-city jednoduˇse zaˇcneme novou trasu. T´ımto zp˚usobem vˇzdy efektivnˇe zapln´ıme kapacitu
vozidla a zajist´ıme platnost ˇreˇsen´ı. V´yhodou tohoto pˇr´ıstupu m˚uˇze b´yt pouˇzit´ı klasick´ych permutaˇcn´ıch oper´ator˚u. Bylo vˇsak prok´az´ano, ˇze v nˇekter´ych pˇr´ıpadech nen´ı moˇzn´e t´ımto zp˚usobem nal´ezt optim´aln´ı ˇreˇsen´ı probl´emu [41].
Napˇr´ıklad si pˇredstavme situaci, kde je velmi bl´ızko skladu z´akazn´ık, kter´y poˇzaduje z´asilku zab´ıraj´ıc´ı polovinu kapacity vozidla. V klasick´em permutaˇcn´ım k´odov´an´ı by vˇzdy bylo nalezeno ˇreˇsen´ı, kdy je navˇst´ıven tento z´akazn´ık a potom jeˇstˇe nˇekteˇr´ı dalˇs´ı, kteˇr´ı dopln´ı kapacitu vozidla. Je ale moˇzn´e, ˇze je v´yhodnˇejˇs´ı nejprve polopr´azdn´ym vozidlem obslouˇzit tohoto z´akazn´ıka a pak se vydat pr´azdn´ym vozidlem obslouˇzit ty vzd´alenˇejˇs´ı. Ilustraci t´eto situace m˚uˇzeme pozorovat na obr´azku 3.4, kde je u jednotliv´ych z´akazn´ık˚u uveden jejich poˇzadavek a celkov´a kapacita vozidla je Q = 40. Je jasnˇe vidˇet, ˇze se vyplat´ı zajet k prostˇredn´ımu z´akazn´ıkovi s poˇzadavkem 25 zvl´aˇst’, coˇz je uvedeno v druh´e moˇznosti.
d = 8 d = 12 d = 13 d = 6 d = 20 d = 18 Kapacita vozidla Q = 40 d = 25 d = 9 d = 6 d = 12 d = 13 d = 8 d = 12 d = 13 d = 6 d = 20 d = 18 d = 25 d = 9 d = 6 d = 12 d = 13
Obr´azek 3.4: Modelov´y pˇr´ıklad ilustruj´ıc´ı r˚uzn´e k´odov´an´ı. Vlevo permutaˇcn´ı a vpravo k´odov´an´ı se sklady.
Tohoto m˚uˇzeme dos´ahnout jin´ym zp˚usobem k´odov´an´ı, ve kter´em se explicitnˇe vysky-tuj´ı z´aznamy o navˇst´ıven´ı skladu, tedy na rozd´ıl od permutaˇcn´ıho zp˚usobu pˇresnˇe popisuj´ı jednotliv´e trasy ˇreˇsen´ı. Zde vˇzdy na zaˇc´atek jednotliv´e cesty vloˇz´ıme speci´aln´ı uzel (napˇr. 0), kter´y indikuje navr´acen´ı do skladu a pot´e vkl´ad´ame postupnˇe z´akazn´ıky t´eto trasy. Tento zp˚usob tak umoˇzˇnuje uskuteˇcnit i cesty, kter´e sice nenapln´ı kapacitu vozidla, ale je celkovˇe v´yhodn´e je prov´est zvl´aˇst’. Nev´yhodou tohoto k´odov´an´ı je nutnost pouˇzit´ı speci-alizovan´ych oper´ator˚u, jelikoˇz ty permutaˇcn´ı by posunem speci´aln´ıch uzl˚u sklad˚u mohly vytv´aˇret neplatn´a ˇreˇsen´ı.
3.3
Tvorba poˇ
c´
ateˇ
cn´ıho ˇ
reˇ
sen´ı
At’ uˇz se budeme bavit o kter´ekoli metaheuristice, vˇzdy je jej´ım prvn´ım krokem tvorba poˇc´ateˇcn´ıho ˇreˇsen´ı, od kter´eho se d´ale pokraˇcuje. Aˇckoliv se obvykle v p˚uvodn´ım n´avrhu algoritm˚u uv´ad´ı vygenerov´an´ı poˇc´ateˇcn´ıho ˇreˇsen´ı n´ahodnˇe [17], ˇcasto se ukazuje, ˇze z´ısk´an´ı dobr´eho ˇreˇsen´ı hned ze startu, m˚uˇze zkvalitnit a hlavnˇe urychlit konvergenci cel´eho algo-ritmu [29]. Nav´ıc toto ˇreˇsen´ı generujeme pouze jednou (pˇr´ıpadnˇe celou populaci u GA), tedy n´as nemus´ı pˇr´ıliˇs tr´apit pˇr´ıpadn´a ˇcasov´a z´atˇeˇz. Kombinace s n´ahodnost´ı je vˇsak tak´e potˇreba, a to pˇredevˇs´ım u GA, kde je diverzita populace z´asadn´ı. Nen´ı tedy ˇz´adouc´ı ge-nerovat sice kvalitn´ı, ale podobn´a ˇreˇsen´ı. V tomto je probl´em napˇr´ıklad pˇri generov´an´ı poˇc´ateˇcn´ıho ˇreˇsen´ı nˇejakou heuristikou, kter´a produkuje vˇzdy stejn´y v´ysledek.
Nejprve si uved’me, jak by bylo moˇzn´e vytvoˇrit velmi trivi´aln´ı, n´ahodn´e ˇreˇsen´ı probl´emu VRP. Jedn´ım z moˇzn´ych pˇr´ıstup˚u by bylo zaˇc´ıt ˇreˇsen´ı z uzlu skladu v0 a vˇzdy n´ahodnˇe
vybrat zat´ım nenavˇst´ıven´eho z´akazn´ıka vi. Pokud poˇzadavek d(vi) v souˇctu s poˇzadavky
na t´eto trase nepˇrekraˇcuje kapacitu vozidla, pˇrid´ame jej do aktu´aln´ı cesty. Pokud by t´ımto z´akazn´ıkem doˇslo k pˇrekroˇcen´ı kapacity, je aktu´aln´ı cesta uzavˇrena a z´akazn´ık je um´ıstˇen do nov´e trasy. Pokud je limitov´ana d´elka trasy, mus´ıme podobnˇe kontrolovat i tuto podm´ınku. Je zˇrejm´e, ˇze tento pˇr´ıstup nebude v˚ubec optimalizovan´y a bude produkovat velmi nekva-litn´ı, nicm´enˇe platn´e ˇreˇsen´ı.
V t´eto pr´aci jsem navrhl jin´y, l´epe informovan´y zp˚usob, kter´y je inspirov´an oper´atorem kˇr´ıˇzen´ı Best Cost Route Crossover [26] prezentovan´ym d´ale v sekci 3.4.2. Na z´akladˇe tohoto oper´atoru je navrˇzen algoritmus Best Cost Route Insertion (BCRI), kter´y d´av´a z´aklad dalˇs´ım prezentovan´ym metod´am. Funkˇcnost tohoto algoritmu je pops´ana pseudok´odem 2.
Algoritmus 2 Metoda Best Cost Route Insertion (BCRI)
Vstup: Nekompletn´ı ˇreˇsen´ı S a seznam z´akazn´ık˚u unvisited, kter´e chceme do S zaˇradit V´ystup: Kompletn´ı ˇreˇsen´ı S0
Seˇrad’ n´ahodnˇe z´akazn´ıky v unvisited for all c in unvisited do
for all Ri in S do
// kontrola kapacity trasy if D(Ri) + d(c) <= Q then
// zkouˇsen´ı kaˇzd´e pozice v trase for p := 1 to k(i) do
Vypoˇc´ıtej pˇr´ır˚ustek ∆p d´elky trasy pˇri vloˇzen´ı c na pozici p v trase Ri
// kontrola maxim´aln´ı d´elky trasy if Cost(Ri) + ∆p > Costmax then
Neber pozici p v potaz end if
end for end if end for
Vypoˇc´ıtej pˇr´ır˚ustek ∆0 kdy bude z´akazn´ık c um´ıstˇen s´am do nov´e trasy
if ∆0< nejmenˇs´ı ∆p then
Pˇridej do S novou trasu obsahuj´ıc´ı pouze z´akazn´ıka c else
Vloˇz z´akazn´ıka c na pozici p v trase Ri, kde byl pˇr´ır˚ustek ∆p nejmenˇs´ı
end if end for
V algoritmu tak pro kaˇzd´eho z´akazn´ıka vyzkouˇs´ıme vˇsechny platn´e pozice a vloˇz´ıme jej na tu nejlepˇs´ı. Aby nebyli z´akazn´ıci zaˇrazov´ani vˇzdy ve stejn´em poˇrad´ı, je na zaˇc´atku seznam n´ahodnˇe prom´ıch´an, coˇz vn´aˇs´ı do algoritmu potˇrebnou m´ıru nahodilosti. U kaˇzd´eho z´akazn´ıka je tak´e vyzkouˇsena moˇznost vytvoˇren´ı nov´e trasy obsahuj´ıc´ı pouze jeho, ˇc´ımˇz jsme schopni vytv´aˇret i nov´e trasy za bˇehu.
Pro vytv´aˇren´ı nov´ych ˇreˇsen´ı d´ame na vstup algoritmu pr´azdn´e ˇreˇsen´ı S a seznam vˇsech z´akazn´ık˚u. Algoritmus bude postupnˇe vytv´aˇret jednotliv´e trasy aˇz zaˇrad´ı vˇsechny z´akazn´ıky. V´ysledn´e ˇreˇsen´ı je vˇzdy platn´e, je pˇrimˇeˇrenˇe kvalitn´ı a pouˇzit´ım n´ahodn´eho prom´ıch´an´ı je s velkou pravdˇepodobnost´ı pokaˇzd´e odliˇsn´e. Toto jsou pˇresnˇe vlastnosti, kter´e vyˇzadujeme.