Algorytm memetyczny dla rzeczywistego problemu planowania tras pojazdów Andrzej Jaszkiewicz, Przemysław Wesołek 3 grudnia 2013
Kontekst problemu
Firma dystrybucyjna
Kilka statystyk (wiedza z danych miesięcznych) Magazyny centralne 2 POI źródłowe zleceń 10 (magazyny regionalne) POI dostawy 3804 Liczba zleceń 8262 Liczba różnych par POI-POI 3319 Liczba zleceń dziennie (pn-pt) 315-485 Masa towaru dziennie (pn-pt) ~100 ton
Dane wejściowe Aktualnie w zasadzie w formie kiedy-ile-skąd-dokąd
Zdefiniowanie problemu W zasadzie zbiór problemów CVRP, ale...
Dodatkowe, realne aspekty niejednorodna flota okna czasowe cross-docki ograniczenia czasowe, np. czas pracy kierowców czasy załadunku i rozładunku zależne od ilości towaru ograniczona liczba bram w magazynach podział floty na własną i wynajmowaną pakowanie towaru na paletę ładowanie pojazdu: 3D packing...
Cross-docki
Pierwsi proponujemy algorytm memetyczny?
Algorytm optymalizacji
Rozwój algorytmu
Zarys algorytmu memetyczngo wygeneruj populację dobrych rozwiązań początkowych metoda konstrukcyjna + lokalne przeszukiwanie powtarzaj { wybierz dwa rozwiązania do rekombinacji wygeneruj potomka posiadającego ich wspólne, dobre cechy wykonaj lokalne przeszukiwanie od utworzonego potomka dodaj uzyskane rozwiązanie do populacji, usuń z niej najsłabsze } dopóki jest czas, a jakość populacji niezadowalająca
Gdzie jesteśmy? Dobre rozwiązania początkowe metoda konstrukcyjna Przeglądanie sąsiednich rozwiązań operator przesunięcia zlecenia/poi do innej trasy Przyspieszanie obliczeń cache owanie ruchów Model: odejście od dostaw z magazynów regionalnych, zlecenia z magazynów centralnych przez cross-docki (~magazyny regionalne) Systematycznie zaprojektowany operator rekombinacji
Metoda konstrukcyjna utwórz puste rozwiązanie dopóki są nieprzypisane zlecenia { } wybierz jedno zlecenie znajdź najlepsze (najtańsze) miejsce wstawienia do istniejących tras lub do nowej dodaj zlecenie
Wiele rozwiązań początkowych losowy wybór zlecenia ryzyko kiepskiej jakości rozwiązania sterowana losowość metoda GRASP(N, K) (greedy randomized adaptive search procedure) wybierz losowo N zleceń, posortuj od najtańszego do najdroższego, wybierz do wstawienia losowo jednego z K najtańszych.
Lokalne przeszukiwanie wejście: rozwiązanie początkowe bieżące rozwiązanie = rozwiązanie początkowe powtarzaj { wygeneruj zbiór rozwiązań sąsiednich do bieżącego w oparciu o operator sąsiedztwa powtarzaj { oceń kolejnego sąsiada } dopóki nie znaleziono zadowalającego sąsiada lub skończyli się sąsiedzi jeżeli znaleziono zadowalającego sąsiada { } bieżące rozwiązanie = sąsiad } dopóki znaleziono zadowalającego sąsiada
Ruch lokalnego przeszukiwania: POI-move 1. Wybierz jedno ze zleceń. 2. Usuń z trasy, na której się znajduje. 3. Dodaj w najlepsze (najtańsze) miejsce, w dowolnym cross-docku, na dowolnej trasie.
POI-move: przykład
Kryterium akceptacji sąsiada greedy: dowolny lepszy od bieżącego rozwiązania steepest: najlepszy z sąsiadów lepszy od bieżącego rozwiązania
Jakość a czas
Cache ruchów operatora sąsiedztwa obserwacja: większość tras w kolejnym kroku lokalnego przeszukiwania będzie taka sama jak w poprzednim optymalizacja: zapamiętanie, ile kosztowała próba wstawienia każdego zlecenia do niezmienionych tras i użycie tych wyników w kolejnych krokach
Operator rekombinacji
Fitness-distance correlation Rozwiązania lepsze są do siebie bardziej podobne. Użycie operatora rekombinacji zachowującego podobieństwo daje duże szanse na zbieżność algorytmu memetycznego do dobrych rozwiązań. Jak mierzyć podobieństwo?
Podobieństwo przypisania zleceń do cross-docków Liczba zleceń obsługiwanych z tego samego cross-docka w obu rozwiązaniach
Podobieństwo łuków Liczba wspólnych łuków w obu rozwiązaniach Rozwiązanie zawiera łuk (a, b), gdy zlecenie a jest na tej samej trasie co zlecenie b, i to bezpośrednio przed nim.
Analiza korelacji 5 różnych instancji próba 5000 losowo wygnerowanych rozwiązań początkowych (GRASP + LS) wyznaczone dwoma metodami podobieństwo rozwiązań do najlepszego z próby
Podobieństwo łuków Podobieństwo cross-docków instancja R 20-0.33 21-0.37 22-0.46 23-0.39 24-0.30 instancja R 20-0.45 21-0.58 22-0.78 23-0.62 24-0.66
Rekombinacja zachowująca łuki 1. Znajdź wspólne łuki dla obu rozwiązań 2. Ze wspólnych łuków utwórz najdłuższe możliwe fragmenty Np. łuki (a, b), (b, c), (d, e) dają fragmenty (a, b, c) i (d, e). 3. Z powstałych fragmentów oraz pozostałych zleceń (tj. poza łukami) skonstruuj rozwiązanie wariantem GRASP (tj. wstawiając najtańszy fragment/zlecenie do tworzonego rozwiązania).
Rekombinacja zachowująca przypisanie do cross-docków 1. Skonstruuj rozwiązanie zmodyfikowanym GRASP, wstawiając każde zlecenie tylko do trasy przypisanego cross-docka (jeżeli to możliwe).
Rekombinacja zachowująca łuki oraz przypisanie do cross-docków 1. Znajdź wspólne łuki dla obu rozwiązań 2. Ze wspólnych łuków utwórz najdłuższe możliwe fragmenty Np. łuki (a, b), (b, c), (d, e) dają fragmenty (a, b, c) i (d, e). 3. Z powstałych fragmentów oraz pozostałych zleceń (tj. poza łukami) skonstruuj rozwiązanie zmodyfikowanym wariantem GRASP, tj. wstawiając najtańszy fragment/zlecenie do tworzonego rozwiązania, do trasy z przypisanego cross-docka (jeżeli to możliwe).
Eksperyment obliczeniowy
Warunki heurystyka konstrukcyjna: mocno ulosowiony GRASP cztery metody szukania rozwiązania: algorytm memetyczny z jednym z trzech operatorów rekombinacji (zachowanie łuków (A), zachowanie przypisania do cross-docków (C), zachowanie obu cech (AC))) multiple start local search local search w wariancie greedy 5 instancji 10 uruchomień 15 minut
Wyniki zbiorcze
Zbieżność algorytmu w czasie
Przykład instancja M23, 403 zlecenia algorytmy: losowy, heurystyka początkowa, lokalne przeszukiwanie greedy oraz steepest, memetyczny
Koszt RND 47 468 GRASP 32 748 LS-GREEDY 27 844 LS-STEEPEST 27 173 MEMETIC 23 370
RND
GRASP
LS-GREEDY
LS-STEEPEST
MEMETIC
Do zrobienia Przeszukiwanie lokalne ruchy kandydackie Wyspowy model populacji Urealnianie modelu