• Nie Znaleziono Wyników

Miara zmienności problemu

W dokumencie POLITECHNIKA WARSZAWSKA (Stron 63-70)

Do pomiaru różnic w dynamizmie problemu, w zależności od kodowania i sposobu opty-malizacji, zaadaptowana jest miara zmienności polegająca na pomiarze różnicy pomiędzy rozwiązaniami wskazywanymi w kolejnych krokach czasowych algorytmu. Można argu-mentować, że najistotniejszą częścią rozwiązania (z operacyjnego punktu widzenia) jest przypisanie zamówienia do konkretnego pojazdu, ze względu na to, że ewentualna zmiana kolejności zamówień może być dokonana na poziomie pojedynczego kierowcy i może nie wymagać (w zależności od praktyki biznesowej) ani informowania koordynatora ani innych kierowców.

Aby uchwycić tę najistotniejszą część rozwiązania miara jest liczona na rozwiąza-niach prezentowanych w formie wektora przyporządkowań zamówień do pojazdów. W celu uproszczenia obliczeń rozwiązania izomorficzne nie są rozróżniane. Miara ρ różnicy między rozwiązaniami xj i xk jest liczona jako znormalizowana liczba zamówień (znanych zarówno w czasie tj jak i tk) przypisanych w xj i xk do różnych pojazdów. Normalizacja jest wykonywana poprzez podzielenie tej liczby różnych zamówień przez liczbę zamówień znanych zarówno w czasie tj jak i tk.

ρ(xj, xk) =

P

i6∈CU(tj)∧i6∈CU(tk)

I (xj,i6= xk,i)

|{i : i 6∈ CU(tj) ∧ i 6∈ CU(tk)}|, gdzie funkcja I oznacza indykator (5.1) Przy prezentacji wyników miara ta została zastosowana zarówno do pokazania poziomu zmian w estymowanym przez algorytm rozwiązaniu optymalnym pomiędzy dwoma ko-lejnymi stanami problemu, jak i rozwiązaniami z każdego kolejnego kroku czasowego a rozwiązaniem finalnym. Porównanie wyników dla różnych wariantów algorytmu Cont-DVRP (wykorzystującego ciągłe kodowanie WCZ) oraz własnej implementacji algorytmu GA [47] (wykorzystującej dyskretne kodowanie CIZ) znajduje się w dalszej części rozprawy na Rysunku 8.5.

44

Rozdział 6

Algorytmy metaheurystyczne i transfer rozwiązań w problemie dynamicznej marszrutyzacji

W tym rozdziale opisane są podejścia metaheurystyczne stosowane do rozwiązywania problemu DVRP oraz metody transferu rozwiązań wykorzystywane w autorskim podej-ściu ContDVRP. Podejścia literaturowe opierają się na adaptacji danej metaheurystyki do DVRP, poprzez odpowiedni dobór przestrzeni przeszukiwań oraz operatorów algo-rytmu. Zaproponowane podejście ContDVRP, wykorzystujące ciągłe kodowania, otwiera zagadnienia DVRP na stosowanie dowolnych populacyjnych metaheurystyk optymalizacji ciągłej, co jest zaprezentowane z wykorzystaniem optymalizacji rojem cząstek i ewolucji różnicowej.

6.1 Populacyjne algorytmy metaheurystyczne

Za podręcznikiem i wykładami Arabasa [5, 6], metaheurystyka jest w rozprawie rozu-miana jako pewien ramowy (niezależny od rozwiązywanego problemu) sposób przeszuki-wania przestrzeni rozwiązań. W sposobie tym należy określić (zależne już od problemu) kodowanie rozwiązania, operatory przeszukiwania tej przestrzeni oraz rozmiar pamięci algorytmu.

Ze względu na ograniczenia algorytmów heurystycznych co do charakteru znajdowa-nych rozwiązań oraz wykładniczą złożoność algorytmów dokładznajdowa-nych dla problemów typu VRP [64], alternatywną metodą jest zastosowanie podejścia metaheurystycznego. Podej-ścia te można podzielić na metody jednopunktowe (symulowane wyżarzanie, przeszuki-wanie ze zmiennym sąsiedztwem) oraz populacyjne (algorytmy ewolucyjne, algorytmy rojowe). Omówione są podejścia populacyjne, ponieważ uzyskiwane dla nich wyniki prze-wyższają te dla podejść jednopunktowych. Obserwowana w praktyce przewaga podejść

populacyjnych, uzasadniona istotnością utrzymywania różnorodnych rozwiązań w proble-mach dynamicznych, poparta jest również pracami teoretycznymi w tym obszarze [27].

W dalszej części rozdziału zaprezentowane są: algorytm mrówkowy, algorytm gene-tyczny, optymalizacja rojem cząstek oraz ewolucja różnicowa. Te algorytmy populacyjne należą do najpowszechniej wykorzystywanych w literaturze przedmiotu lub zostały wy-korzystywane w badaniach przeprowadzonych w tej rozprawie. Prezentowane dla tych algorytmów przykłady operatorów, nawiązują do wspólnego przykładu stosowanego przy prezentacji różnic w kodowaniu, przedstawionego na Rysunku 5.1 na stronie 39. Opisy algorytmów odnoszą się również do sposobu ich wykorzystania w problemach marszruty-zacji i metodach przekształcenia rozwiązań na zbiór tras (permutacji lokalimarszruty-zacji) R, który został zdefiniowany w podrozdziale 3.3.

6.1.1 Algorytm mrówkowy

Rozwiązywanie DVRP algorytmem mrówkowym (ang. Ant Colony System (ACS) / Ant Colony Optimization (ACO)), zostało oparte na algorytmie analogicznym do oryginal-nego podejścia dla TSP [39], zastosowanym do problemu marszrutyzacji z oknami czaso-wymi [40].

Oryginalny algorytm mrówkowy stanowi jedną z realizacji idei inteligencji rojowej, czyli prostych bytów (w tym wypadku zwanych mrówkami) znajdujących potencjalnie skomplikowane rozwiązania poprzez komunikację i proste reguły decyzyjne. Idea algo-rytmu mrówkowego opiera się na symultanicznym losowym przeszukiwaniu grafu wgłąb.

Wybór kolejnego nieodwiedzonego wierzchołka dokonywany jest w oparciu o największe prawdopodobieństwo uzyskania dobrego finalnego wyniku. Konstrukcja reguły wyboru i estymacji tego prawdopodobieństwa inspirowana jest sposobem funkcjonowania rzeczy-wistych kolonii mrówek, zwłaszcza metodą przekazywania informacji o źródle pokarmu.

Mrówka, która znalazła pożywienie oznacza swoją trasę feromonem, który przyciąga inne mrówki. Podobne zasady obowiązują w przypadku symulowanych mrówek. Krawędzie, które należały do krótszych znalezionych tras mają większe prawdopodobieństwo wyboru przy kolejnym cyklu przeszukiwania grafu.

Pierwotnie algorytm został zastosowany do rozwiązania TSP [39]. Wprowadzenie do-datkowej reguły związanej z koniecznością powrotu mrówki do wierzchołka wyjściowego (tj. bazy) dostosowało go do modelu VRP. Powrót do wierzchołka wyjściowego (i tym sa-mym rozpoczęcie nowej ścieżki) wymuszany jest, gdy odwiedzenie kolejnego wierzchołka (reprezentującego zamówienie) spowodowałoby przekroczenie przez sumę wag wierzchoł-ków na aktualnej ścieżce zadanego parametru (tj. pojemności pojazdu).

Każdy powrót do bazy (zarówno dokonany z wyboru mrówki jak i z konieczności) rozpoczyna trasę nowego pojazdu. Takie kodowanie problemu, zdefiniowane jako CIL, w praktyce sprowadza się do bezpośredniego operowania na zbiorach permutacji R.

46

Podejścia oparte o algorytm mrówkowy zostały dwukrotnie zaprezentowane w litera-turze przez Montemanniego i in. [75] oraz Elhassanię i in. [33]. Główna różnica pomiędzy tymi podejściami opierała się na zastosowaniu różnych pomocniczych heurystyk popra-wiających trasy. W pracy [75] było to zachłanne wstawianie, zaś w pracy [33] LNS.

(a) Wybór pojazdów, których zamówienia będą poddane zmianom

(b) Usunięcie przypisania zamówień 2,4,5 z pierwszego osobnika oraz 3,6 z drugiego osobnika

(c) Przypisanie zamówień 2,4,5 oraz 3,6 w sposób zachłanny

Rysunek 6.1: Operacja krzyżowania w GA dla DVRP z pracy [47]. Szarym kolorem ozna-czone są zamówienia, których przypisanie jest zmieniane przez operację krzyżowania.

6.1.2 Algorytm genetyczny

Innym możliwym podejściem do bezpośredniego przeszukiwania przestrzeni możliwych zbiorów permutacji R jest zastosowanie algorytmu genetycznego (ang. Genetic Algori-thm (GA)). Algorytm genetyczny inspirowany jest teorią ewolucji, traktując rozwiązanie jak pewien zestaw genów, który jest testowany w środowisku problemu (optymalizowana funkcja jakości określana jest tutaj jako funkcja przystosowania). Dla generowania nowych rozwiązań wykorzystywane są operatory krzyżowania i mutacji. Operator krzyżowania ma za zadanie łączyć fragmenty rozwiązań z kilku różnych propozycji, podczas gdy operator mutacji dokonuje mniejszych zmian w pojedynczym rozwiązaniu.

Algorytm genetyczny dla DVRP, zaproponowany w pracy Hanshara i Ombuki–Ber–

man [47], wykorzystuje dyskretne kodowanie CIZ. Operator krzyżowania w tym algo-rytmie generuje dwójkę osobników potomnych X10 i X20, na podstawie dwójki osobników rodzicielskich X1 i X2. Każdy z osobników potomnych Xi0 jest tworzony z osobnika ro-dzicielskiego Xi poprzez ponowne zachłanne wstawianie tych podzbioru zamówień, które w drugim osobniku rodzicielskim X3−i są przypisane do jednego (losowo wybieranego) pojazdu. Rysunek 6.1 przedstawia przykład realizacji tego operatora krzyżowania. Ope-rator mutacji polega na inwersji fragmentu genotypu pomiędzy dwoma losowo wybranymi punktami.

Natomiast w pracy Elhassanii i in. [34] wykorzystywane jest dyskretne kodowanie CIL oraz odmienne operatory krzyżowania i mutacji. Krzyżowanie polega na wybraniu frag-mentu trasy w każdym z osobników rodzicielskich, a następnie ponownym wstawieniu zamówień z obu tych fragmentów w obu osobnikach, tworząc również dwa osobniki po-tomne. Natomiast operator mutacji zamienia miejscami dwa zamówienia przypisane do tego samego pojazdu.

6.1.3 Optymalizacja rojem cząstek

Algorytm optymalizacji rojem cząstek (ang. Particle Swarm Optimization (PSO)), po-dobnie do algorytmu mrówkowego, opiera się na koncepcji inteligencji rojowej. Algorytm PSO został zaproponowany w 1995 roku przez Eberharta i Kennedy’ego [53]. W PSO proste byty, których zbiorem steruje algorytm, nazywane są cząstkami. Cząstki tworzą rój, w którym wymieniają informacje ze swoimi sąsiadami o wartościach rozwiązania w różnych punktach przestrzeni przeszukiwań. Sąsiedztwo danej cząstki należy rozumieć jako arbitralnie ustalany zbiór cząstek, którym przekazuje ona informacje o spróbkowa-nych wartościach rozwiązań. Każda cząstka składa się z czterech wektorów wielkości prze-strzeni przeszukiwania, zawierających następujące informacje: aktualną lokalizację cząstki xi, aktualną prędkość cząstki vi, lokalizację najlepszego rozwiązania sprawdzonego przez cząstkę x(BEST )i i lokalizację najlepszego rozwiązania sprawdzonego przez sąsiadów cząstki x(BEST )N .

48

(a) Zmiana centroidów klastrów zamówień. Ko-lejność zamówień na trasach jest zdetermino-wana przez kolejność obowiązującą w poprzed-nim przypisaniu zamówień. Linie szarego ko-loru prezentują sposób pierwotnego podział za-mówień pomiędzy pojazdy

(b) Optymalizacja trasy jednego z pojazdów wykonywana algorytmem 2–OPT przed oceną aktualnego podziału zamówień.

Rysunek 6.2: Operacja zmiany centroidów klastrów oraz późniejszej optymalizacji tras dla ciągłego kodowania WCZ.

Poza sposobem konstrukcji sąsiedztwa cząstki, dynamiką roju sterują trzy parametry:

bezwładność cząstki ω, współczynnik c1 maksymalnej wartości przyciągania do lokaliza-cji x(BEST )i i współczynnik c2 maksymalnej wartości przyciągania do lokalizacji x(BEST )N . Reguły zmiany położenia i prędkości i-tej cząstki w iteracji t opisują poniższe formuły (u1,u2 to zmienne z wielowymiarowego rozkładu jednostajnego na przedziale [0; 1]):

xi,t = xi,t−1+ vi,t−1 (6.1)

vi,t = ωvi,t−1+ u1c1(x(BEST )i − xi,t) + u2c2(x(BEST )N − xi,t) (6.2) Algorytm PSO jest wykorzystywany do rozwiązywania DVRP w różny sposób, w zależ-ności od przyjętego sposobu kodowania. Pierwszy został zaproponowany przez Khouadjię i in. [54–58] i polega na dyskretyzacji lokalizacji cząstek oraz ograniczeniu operacji doda-wania prędkości do przestrzeni Znˆ. W ten sposób każda lokalizacja cząstki stanowi pewne przypisanie zamówień do pojazdów, zgodnie z dyskretnym kodowaniem WPP. Drugi spo-sób, wykorzystywany w [45], wiąże się z odmienną metodą dyskretyzacji operatorów PSO, związaną z reprezentacją rozwiązania w postaci ciągu zamówień. Sposób zaproponowany w tej rozprawie, pod nazwą ContDVRP [83, 84] (wykorzystywany również w [69]), polega na rozwiązaniu DVRP w dwóch sekwencyjnych fazach optymalizacji. W pierwszej fazie wykorzystane jest ciągłe kodowanie WCZ do optymalizacji przypisania zamówień, jako problemu grupowania z ograniczeniami (CCP). W drugiej fazie, korzystającej z ciągłego

kodowania WRZ, rozwiązywane są zadania TSP, dla każdego z pojazdów osobno. Rysu-nek 6.2 pokazuje przykład operacji zmiany przypisania zamówień (względem rozwiązania bazowego z Rysunku 5.1) wraz ze wstępną optymalizacją tras. Wstępne rozwiązanie TSP w ramach pierwszej fazy procesu optymalizacji ma na celu estymację jakości przypisania pod kątem rozwiązywania kompletnego problemu VRP.

6.1.4 Ewolucja różnicowa

Algorytm ewolucji różnicowej (ang. Differential Evolution (DE)) został zaproponowany przez Storna i Price’a [117]. Główną ideą tego algorytmu, różniącą go od standardowego algorytmu ewolucyjnego, jest operator mutacji, który jest sterowany rozkładem osobników w przestrzeni przeszukiwania.

W podejściu ContDVRP, jako alternatywny wobec PSO algorytm optymalizacyjny, wykorzystywana jest standardowa metoda DE (oznaczana w literaturze jako konfiguracja DE/rand/1/bin). W tej konfiguracji DE, w każdej iteracji t, każdy z osobników xit jest krzyżowany z osobnikiem yt(3), powstałym w wyniku mutacji różnicowej osobnika x(3)t . Mutacja różnicowa polega na dodaniu do x(3)t przeskalowanego przez F ∈ R wektora różnicy między dwoma innymi, również losowo wybranymi, osobnikami x(1) x(2):

yt(3) = x(3)t + F × (x(2)t − x(1)t ) (6.3) Każdy z losowych osobników x(1)t , x(2)t , x(3)t jest inny i różny od rozpatrywanego xit.

Następnie zmutowany osobnik yt(3) zostaje skrzyżowany xit przez rekombinację binarną z prawdopodobieństwem p:

yit= Binp(xit, yt(3)) (6.4) W ostatnim kroku nowa lokalizacja yti zastępuje pierwotną xit wtedy i tylko wtedy, gdy zapewnia lepsze rozwiązania funkcji dopasowania f :

xit+1 =

( yti f (yit) < f (xit)

xit ∼ (6.5)

W dokumencie POLITECHNIKA WARSZAWSKA (Stron 63-70)

Powiązane dokumenty