Upload
mkrolik
View
452
Download
0
Embed Size (px)
Citation preview
OPTYMALIZACJA W LOGISTYCE
Optymalizacja zadań bazy transportowej ( część 2 )
Opracowano na podstawie : Stanisław Krawczyk, Metody ilościowe w logistyce ( przedsiębiorstwa ),Wydawnictwo C. H. Beck, Warszawa 2001
Problem komiwojaŜera
Sformułowanie problemu
Zadanie komiwojaŜera jest znane od kiedy kupcy zaczęli dostarczać produkty klientom.
Podstawową wersję problemu komiwojaŜera moŜna przedstawić w dwóch zdaniach:
1. KomiwojaŜer pragnie odwiedzić pewną liczbę klientów w róŜnych miejscowościach i po zakończeniu odwiedzin wrócić do domu.
2. Jaką drogę powinien wybrać ( w jakiej kolejności powinien odwiedzaćklientów) aby przebyta przez niego droga była moŜliwie najkrótsza?
Pierwsze reguły wyznaczania trasy zostały opracowane na podstawie doświadczeńpraktycznych juŜ w połowie XIX wieku przez komiwojaŜerów w USA. Jednak dopiero formalne ujęcie matematyczne pozwoliło odkryć, Ŝe to niby proste zadanie obejmuje bardzo szeroką klasę przypadków, z których tylko niektóre moŜna rozwiązać dokładnie.
ZałoŜenia:1. KaŜdego klienta moŜna identyfikować przez podanie miejscowości (węzła w
grafie), w której zamieszkuje ( w jednej miejscowości znajduje się jeden klient ). 2. Między miejscowościami istnieją połączenia pozwalające na przemieszczanie w
obu kierunkach ( krawędzie grafu ).3. KaŜdej krawędzi przyporządkowana jest liczba określająca uogólnioną
odległość.4. WyróŜnione miejscowości oraz potencjalne trasy przejazdu moŜna przedstawić
za pomocą grafu G=[ V , E , c ] , nieskierowanego, spójnego, o n węzłach, w którym liczby przyporządkowane krawędziom są nieujemne – cij = cji ≥ 0
5. Dla dowolnych trzech węzłów i,j,k powinna być spełniona nierówność: cik ≤ cij + cjk
6. Dla dowolnych dwóch miejscowości nie mogą występować połączenia przez inne miejscowości.
7. WyróŜniamy jeden węzeł odpowiadający miejscu startu komiwojaŜera i przyjmujemy, Ŝe jego trasa powinna kończyć się powrotem do tego węzła.
KaŜdą trasę spełniająca te warunki nazywamy trasą okręŜną komiwojaŜera, która jest optymalna, gdy łączna jej długość jest minimalna. KaŜda z miejscowości ( z wyjątkiem startowej ) musi wystąpić na niej tylko raz. W teorii grafów trasę tego typu nazywa się cyklem Hamiltona. JeŜeli nie wymaga się odwiedzenia wszystkich miejscowości mówimy o cyklu skróconym.
11
2 3
4 5
6
Poszukiwany cykl Hamiltona oznaczymy krótko symbolem H. Aby móc zapisać, Ŝe pewna krawędź naleŜy do tego cyklu, wprowadzimy zmienne binarne xij , i,j= 1…, n.
PoniewaŜ kaŜda miejscowość moŜe tylko raz wystąpić w trasie, więc kaŜdy węzeł i moŜe tylko raz wystąpić jako węzeł początkowy krawędzi :
KaŜdy węzeł moŜe być równieŜ tylko raz węzłem końcowym krawędzi, co prowadzi do układu ograniczeń:
[ ]
∈
=przypadku przeciwnym w0,
Hcyklu ji, drogagdy ,1ijx
n.1,..., j ,11
==∑=
n
iijx
n.1,..., i ,11
==∑=
n
jijx
Minimalizacja trasy moŜe być ujęta w formie funkcji kryterium:
Wprowadzamy sztuczne załoŜenie, na mocy którego, gdy między dwoma węzłami p i r nie istnieje połączenie, to przyjmujemy, Ŝe są one oddalone nieskończenie daleko, a więc cpr = ∞ , oraz równieŜ cii = ∞
Próba tak sformułowanego zadania kończy się jednak bardzo często wskazaniem cykli skróconych, których przyjęte ograniczenia niestety nie wykluczają. Aby do tego nie dopuścić do zadania naleŜy wprowadzićdodatkowe ograniczenia , które czynią zadanie trudnym do praktycznego rozwiązania. W literaturze moŜna spotkać róŜne wersje ograniczeńuniemoŜliwiających powstawanie cykli skróconych. Często spotykaną jest następująca:
1. Rozpatrujemy wszystkie k elementowe permutacje węzłów [ i1 , i2 ,…, ik ] , przy czym
• Gdy liczba węzłów jest parzysta:k = 2,3,…,
min1 1
→∗=∑∑= =
ij
n
i
n
jij xcz
2
n
• Gdy liczba węzłów n jest nieparzysta:
k = 2,3,…,
2. Dla kaŜdego k tworzymy układ ograniczeń:
NaleŜy teraz wziąć pod uwagę, Ŝe dla kaŜdego k otrzymujemy
ograniczeń. Dla n=6 otrzymamy 55 ograniczeń, ale ich liczba
rośnie bardzo szybko dla n=14 wynosi prawie 3 miliony, co czyni zadanie niemoŜliwym do rozwiązania. Z tego względu w praktyce najczęściej wykorzystywane są algorytmy heurystyczne.
2
1−n
1...13221
−≤++ kxxx iiiiii k
( )! 1−∗
k
k
n
Algorytm droga do najbli Ŝszego s ąsiada
ZałoŜenia startoweStartujemy węźle a. Symbolem z oznaczamy długość drogi okręŜnej.Przyjmujemy: k1 := a, z := 0.IteracjeNumery iteracji będziemy kojarzyć z liczbą odwiedzanych miejscowości,
dlatego.rozpatrujemy iteracje j = 2,3,…,n.
Krok 1Wskazujemy węzeł kj , dla którego
Czyli wskazujemy węzeł, który nie jest zakwalifikowany do drogi i leŜy najbliŜejostatniego z juŜ uwzględnionych w drodze.
Krok 2Tworzymy ciąg [ k1 ,…, kj ].
{ } 11, ,..., czymprzy ,min,11 −≠=
−− jkkk kkiccijjj
Krok 3
Przyjmujemy:
Po n iteracjach do ciągu [ k1 ,…, kn-1 , kn ] dołączamy węzeł startowy k1 , tworząc drogę
okręŜną H = [ k1 ,…, kn-1 , kn , k1 ] , której długość wynosi:
jj kkczz ,1−+=
1,kczznk+=
Przykład
Postępując zgodnie z zasadami wyznaczania najbliŜszego sąsiada wyznaczamy kolejno
w wierszach zaczynając od wiersza 1:• W wierszu 1 : węzeł 3 – czas 78
• W wierszu 3 : węzeł 5 – czas 66
• W wierszu 5 : węzeł 4 – czas 288 ,nie moŜna wybrać 2 bo nie ma z niego dojazdu do 4 , ale z 4 nie moŜliwy jest takŜe dojazd do 2. NaleŜy postępowanie zacząć od początku biorąc pod uwagę, Ŝe najgorszy dojazd jest do 2 i 4
• W wierszu 1 : węzeł 3 – czas 78
• W wierszu 3 : węzeł 2 – czas 81
1 1 2 3 4 5Wrocław 1 ∞ 83 78 198 131
Wałbrzych 2 83 ∞ 81 ∞ 63
Legnica 3 78 81 ∞ 277 66
Poznań 4 198 ∞ 277 ∞ 288
Jelenia Góra
5 131 63 66 288 ∞
• W wierszu 2 : węzeł 5 – czas 63
• W wierszu 5 : węzeł 4 - czas 288• W wierszu 4 : węzeł 1 - czas 198
Łączny czas przejazdu 708
Drugi wariant drogi okręŜnej• W wierszu 1 : węzeł 3 – czas 78
• W wierszu 3 : węzeł 4 – czas 277
• W wierszu 4 : węzeł 5 - czas 288• W wierszu 5 : węzeł 2 - czas 63
• W wierszu 2 : węzeł 1 – czas 83
Łączny czas przejazdu 789Trzeci wariant drogi okręŜnej:
• W wierszu 1 : węzeł 2 – czas 83
• W wierszu 2 : węzeł 5 – czas 63• W wierszu 5 : węzeł 3 - czas 66
• W wierszu 3: węzeł 4 - czas 277
• W wierszu 4 : węzeł 1 – czas 198Łączny czas przejazdu 687
5
3
2
4
1
Poznań
Wrocław
Wałbrzych
Legnica
Jelenia Góra
Jak widać algorytmu nie da się zawsze zastosować nie odchodząc od wcześniej przedstawionych regułpostępowania. Wszystko zaleŜy od konfiguracji połączeń. Dlatego naleŜy pamiętać, Ŝe stosując algorytmy heurystyczne nie zawsze otrzymujemyrozwiązanie optymalne ale jedynie dopuszczalne.
Algorytm sukcesywne doł ączanie w ęzłów.
Dla z góry zadanego węzła startowego a naleŜy juŜ na starcie wybrać inny węzeł b i
utworzyć początkową trasę z a do b i powrotem: [a,b,a]. W trakcie postępowania
będziemy sukcesywnie modyfikować tę drogę przez dołączanie nowych węzłów.
Wybór nowego węzła nie jest jednoznacznie określony, ale korzystnie jest stosować
następująca regułę:
Najmniejsza z odległości dołączanego węzła do wcześniej określonej drogi powinna.
być moŜliwie największa. Przyjmujemy zatem:
• a – węzeł startowy,• b – węzeł najbardziej oddalony od a,
• z – określona długość okręŜnej drogi; w iteracja pośrednich – drogi częściowej,
• H – cykl węzłów tworzących drogę okręŜną; w iteracjach pośrednich jest to droga częściowa
ZałoŜenia startowePrzyjmujemy:
IteracjeNumery iteracji kojarzyć będziemy z liczbą odwiedzonych miejscowości,
dlatego.
rozpatrujemy iteracje j = 3,…,n. Przyjmijmy, Ŝe w iteracji (j-1) otrzymaliśmy częściową.
drogę okręŜną :
o długości z. Ze względu na stosowane dalej wzory ostatni z węzłów jest oznaczony przez kj
, a wrzeczywistości jest nim węzeł k1 .
[ ]1221k12121 cz , ,,kH b, , kkk ckkkak +====
[ ]jj kkkkH ,,...,, 121 −=
W kaŜdej iteracji naleŜy wskazać, który z nie uwzględnionych jeszcze węzłów powinien
być dołączony i rozstrzygnąć, między którymi węzłami istniejącej trasy powinien być
Dołączony.
Krok 1
Dla kaŜdego węzła p ≠ k1 , k2 ,…, kj-1 obliczamy :
Krok 2
Jako węzeł i , który ma być dołączony do drogi wybieramy ten, dla którego:
( )pjkpkpkp cccd
121,...,,min
−=
pp
i dd max=
Krok 3
Mając wybrany węzeł i musimy rozstrzygnąć, między które węzły drogi H wstawić ten.
węzeł. W nowej drodze pojawiają się krawędzie [kt , i] oraz [i , kt+1 ] natomiast wypada z
niej krawędź [kt , kt+1 ]
kk1 kt Kt+1 k1
i
Cikt+1Ckti
Cktkt+1
Dołączenie nowych odcinków drogi powoduje zmianę jej długości. Wielkość tej zmiany
oznaczamy symbolem st i obliczamy następująco :
Jesteśmy zainteresowani takim rozwiązaniem, które będzie powodowało najmniejszy .
przyrost długości drogi, dlatego postępujemy zgodnie z następującym kryterium:
Krok 4Tworzymy nową częściową trasę
11 ++−+=
tttt kkikikt cccs
( )111 min
1,...,1+++
−+=+=−=
tthhtt kkikikjh
ikikt cccccs
[ ]jtt kkikkH ,...,,,,..., 11 +=
Krok 5
Sprawdzamy czy zostały uwzględnione wszystkie węzły. JeŜeli nie to przechodzimy
do następnej iteracji. JeŜeli tak wyznaczanie trasy komiwojaŜera kończy się.
Otrzymujemy drogę okręŜną, która jest cyklem Hamiltona
[ ]11 ,,..., kkkH n=
Przykład
Przyjmujemy jako a węzeł 1, jako b naleŜy przyjąć węzeł 4, do którego czas przejazdu . jest najdłuŜszy i wynosi 198 min. Otrzymujemy drogę H1= [1,4,1] , z=198 + 198 = 396
Iteracja 3
Wyznaczamy węzeł, który dołączymy do drogi H1:
p=2 r21 = min { 83 , 10000 } = 83
P=3 r31 = min { 78 , 277 } = 78
1 1 2 3 4 5Wrocław 1 ∞ 83 78 198 131
Wałbrzych
2 83 ∞ 81 ∞ 63
Legnica 3 78 81 ∞ 277 66
Poznań 4 198 ∞ 277 ∞ 288
Jelenia Góra
5 131 63 66 288 ∞
P=5 r51 = min { 131, 288 } = 131
Do drogi H1 dołączamy węzeł 5. Musimy teraz rozstrzygnąć na które miejsce w ty celu.
obliczmy wskaźniki st :
s1 = c15 + c54 – c14 = 131 + 288 – 198 = 221s4 = c45 + c51 - c41 = 288 + 131 – 198 = 221
Wybór jest dowolny, załóŜmy, Ŝe wybieramy s1 co oznacza, Ŝe tworzymy nowąokręŜną.
trasę H2 = [1, 5, 4, 1 ]
Iteracja 4
P = 2 r22 = min { c21 , c25 , c24 } =min {83 , 63 , 10000 } = 63P = 3 r32 = min { c31 , c35 , c34 } = min {78 , 66 , 277 } = 66
Do drogi H2 dołączamy węzeł 3.
Musimy teraz rozstrzygnąć na które miejsce w ty celu obliczmy wskaźniki st :s1 = c13 + c35 – c15 = 78 + 66 – 131 = 13
s5 = c53 + c34 - c54 = 66 + 277 – 288 = 55
S4 = c43 + c31 – c41 = 277 + 78 – 198 = 157wybieramy s1 co oznacza, Ŝe węzeł 3 dołączamy do drogi H2 po węźle 1.
Otrzymujemytrasę H3 = [1 , 3 , 5 , 4 , 1] z = 78 + 66 + 288 + 198 = 630
Iteracja 5
P = 2 r23 = min {83 , 273 , 81 , 63 } = 63Musimy teraz rozstrzygnąć na które miejsce wprowadzimy węzeł 2 w ty celu
obliczmy.
wskaźniki st :
s1 = c12 + c23 – c13 = 83 + 81 – 78 = 86s3 = c32 + c24 - c34 = 81 + 63 – 66 = 78
S4 = c42 + c21 – c41 = 10000 + 83 – 198 = 9885
S5 = c52 + c24 - c54 = 63 + 10000 - 288 = 9777wybieramy s1 co oznacza, Ŝe węzeł 2 dołączamy do drogi H3 po węźle 1.
Otrzymujemytrasę H3 = [1 , 3 , 2 , 5 , 4 , 1] z = 78 + 81 + 63 + 288 + 198 = 708
1
4
2
5
3