Techniki optymalizacji algorytmy metaheurystyczne
Zakres przedmiotu część AJ Wprowadzenie Dokładne i heurystyczne algorytmy optymalizacji Przeszukiwanie lokalne Metaheurystyki oparte na lokalnym przeszukiwaniu Symulowane wyżarzanie Przeszukiwanie tabu Iteracyjne przeszukiwanie lokalne
Zakres przedmiotu część AJ Algorytmy populacyjne Algorytmy kolonii mrówek Algorytmy ewolucyjne Hybrydowe algorytmy ewolucyjne Ograniczenia w algorytmach metaheurysycznych Konstrukcja algorytmów metaheurystycznych Wielokryterialne algorytmy metaheurystyczne
Jak ocenić wpływ decyzji na cele? Sformułowanie problemu optymalizacji myślenie w kategoriach celów Myślenie regułowe Optymalizacja Co zrobić aby...? Co zrobić jeżeli...? Jakie są moje cele? Co chcę osiągnąć? Jakie decyzje mogę podjąć? Jakie ograniczenia muszę uwzględnić?
Przykład ustalanie lokalizacji towarów w zautomatyzowanym magazynie Myślenie regułowe Co zrobić aby...? Co zrobić jeżeli...? Jeżeli towar jest często zamawiany, to należy go umieścić blisko obszaru kompletowania
Przykład ustalanie lokalizacji towarów w zautomatyzowanym magazynie Jakie są moje cele? Co chcę osiągnąć? Jakie decyzje mogę podjąć? Jakie ograniczenia muszę uwzględnić? Jak ocenić wpływ decyzji na cele? Średnia długość drogi podczas kompletowania zlecenia powinna być jak najkrótsza. Przydział towarów do lokalizacji w magazynie Przydział każdego produktu. Ograniczenia technologiczne Funkcja nieliniowa służąca do obliczania średniej długości drogi
Elementy zagadnienia optymalizacji Jakie są moje cele? Co chcę osiągnąć? Jakie decyzje mogę podjąć? Jakie ograniczenia muszę uwzględnić? Jak ocenić wpływ decyzji na cele? Kryteria. Funkcje celu Zmienne decyzyjne Ograniczenia. Przestrzeń rozwiązań dopuszczalnych Sposób obliczania funkcji celu: Analityczny Symulacyjny
Przykład ustalanie lokalizacji towarów w zautomatyzowanym magazynie Kryteria. Funkcje celu Zmienne decyzyjne Ograniczenia. Przestrzeń rozwiązań dopuszczalnych Sposób obliczania funkcji celu: Analityczny Symulacyjny Średnia długość drogi podczas kompletowania zlecenia. Przydział towarów do lokalizacji w magazynie Przydział każdego produktu. Ograniczenia technologiczne Funkcja nieliniowa
Współczesna optymalizacja a badania operacyjne Ogromny rozwój metod i narzędzi optymalizacji. Znacznie szerszy zakres zastosowania. Badania operacyjne koncentrowały się na ciągłych problemach liniowych Integracja z rozwiązaniami informatycznymi, np. wykorzystanie danych Różnorodne związki ze sztuczną inteligencją
Problem optymalizacji minimalizuj/maksymalizuj z = f(x) przy ograniczeniach (p.o) x S
Problem optymalizacji minimalizuj z = f(x) = maksymalizuj z = -f(x)
Problem programowania matematycznego Jeżeli rozwiązanie jest zdefiniowane jako wektor zmiennych: x R n, t.j. x = {x 1,, x n } a ograniczenia jako zbiór równości/nierówności: x S g l (x) / / = 0, j=1,,l mamy do czynienia z problemem programowania matematycznego
Rodzaje problemów programowania matematycznego Jeżeli funkcja celu i ograniczenia są liniowe liniowy problem programowania matematycznego Jeżeli funkcja celu lub co najmniej jedno ograniczenie są nieliniowe nieliniowy problem programowania matematycznego
Rodzaje problemów programowania matematycznego Jeżeli zmienne są ciągłe ciągły problem programowania matematycznego Jeżeli zmienne są dyskretne dyskretny problem programowania matematycznego Jeżeli zmienne są mieszane ciągłe i dyskretne mieszany problem programowania matematycznego
Rodzaje problemów programowania matematycznego Jeżeli zmienne są całkowitoliczbowe całkowitoliczbowy problem programowania matematycznego Jeżeli zmienne są binarne binarny problem programowania matematycznego
Problem optymalizacji kombinatorycznej Dyskretny i skończony zbiór rozwiązań Struktura kombinatoryczna? Zawsze da się zdefiniować jako binarny/dyskretny problem programowania matematycznego ale nie zawsze warto
Problem optymalizacji kombinatorycznej Problem optymalizacji kombinatorycznej jest problemem minimalizacji bądź maksymalizacji i charakteryzuje się zbiorem instancji Instancja jest parą (S, f) S oznacza skończony zbiór wszystkich możliwych rozwiązań f jest odwzorowaniem definiowanym jako f : S R
Rozwiązanie (globalnie) optymalne W przypadku minimalizacji rozwiązanie x opt S które spełnia f (x opt ) f(x) dla wszystkich x S W przypadku maksymalizacji rozwiązanie x opt S które spełnia f (x opt ) f(x) dla wszystkich x S
Klasyfikacja algorytmów optymalizacji algorytmy dokładne przeszukiwanie wyczerpujące (exhaustive), podziału i ograniczeń (B&B), programowanie dynamiczne algorytmy heurystyczne specjalizowane metaheurystyczne: losowego przeszukiwania (random search) lokalnego przeszukiwania i odmiany symulowane wyżarzanie przeszukiwanie tabu genetyczne/ewolucyjne mrówkowe, świetlikowe hybrydy
Klasyfikacja algorytmów (2) Ponadto w obu klasach można wyróżnić algorytmy ogólne (general algorithms) niezależne od rozwiązywanego problemu (np. B&B, metaheurystyki) oraz algorytmy dopasowywane (tailored algorithms) wykorzystujące specyficzną wiedzę o problemie (np. heurystyki priorytetowe w szeregowaniu)
Dlaczego problemy mogą być trudne do rozwiązania Duża liczba możliwych rozwiązań przeszukanie całej przestrzeni rozwiązań dopuszczalnych w celu znalezienia najlepszego jest nierealne Problem jest złożony (złożoność obliczeniowa), użycie modeli uproszczonych i rezultaty są bezużyteczne Funkcja oceny jest obarczona niepewnością Potencjalne rozwiązania mocno ograniczone znalezienie jednego dopuszczalnego jest problemem
Dlaczego problemy mogą być trudne do rozwiązania Duża liczba możliwych rozwiązań przeszukanie całej przestrzeni rozwiązań dopuszczalnych w celu znalezienia najlepszego jest nierealne Problem jest b. złożony, użycie modeli uproszczonych i rezultaty są bezużyteczne Funkcja oceny jest obarczona niepewnością Potencjalne rozwiązania mocno ograniczone znalezienie jednego dopuszczalnego jest problemem
Duża liczba rozwiązań Problem spełnienia wyrażenia logicznego (SAT) np. problem 100 zmiennych F( x) ( x x23 x ) ( x13 x x34) 13 34 23... TRUE S 100 30 2 10 (dwie możliwości dla zmiennej, 100 zmiennych)
Duża liczba rozwiązań Problem komiwojażera (TSP travelling salesperson problem) Liczba rozwiązań (n-1)! / 2 Liczba wierzchołków Liczba rozwiązań 5 12 10 181440 20 6,08E+16 50 3,04E+62 100 4,67E+155
Dlaczego problemy mogą być trudne do rozwiązania Duża liczba możliwych rozwiązań przeszukanie całej przestrzeni rozwiązań dopuszczalnych w celu znalezienia najlepszego jest nierealne Problem jest b. złożony, użycie modeli uproszczonych i rezultaty są bezużyteczne Funkcja oceny jest obarczona niepewnością Potencjalne rozwiązania mocno ograniczone znalezienie jednego dopuszczalnego jest problemem
Modelowanie problemu PROBLEM MODEL ROZWIĄZANIE Model - przybliżenie rzeczywistości Rozwiązanie problem Np. Problem transportowy z nieliniową i nieciągłą funkcją celu Dwa sposoby rozwiązania uprościć model, żeby pasował do tradycyjnego modelu i metody rozwiązania wykorzystać nietradycyjne podejście
Dlaczego problemy mogą być trudne do rozwiązania Duża liczba możliwych rozwiązań przeszukanie całej przestrzeni rozwiązań dopuszczalnych w celu znalezienia najlepszego jest nierealne Problem jest b. złożony, użycie modeli uproszczonych i rezultaty są bezużyteczne Funkcja oceny jest obarczona niepewnością Potencjalne rozwiązania mocno ograniczone znalezienie jednego dopuszczalnego jest problemem
Dlaczego problemy mogą być trudne do rozwiązania Duża liczba możliwych rozwiązań przeszukanie całej przestrzeni rozwiązań dopuszczalnych w celu znalezienia najlepszego jest nierealne Problem jest b. złożony, użycie modeli uproszczonych i rezultaty są bezużyteczne Funkcja oceny jest obarczona niepewnością Potencjalne rozwiązania mocno ograniczone
Przykłady problemów kombinatorycznych
Problem komiwojażera (TSP)
Problem komiwojażera (TSP)
Problem komiwojażera (TSP)
Problem kwadratowego przydziału (QAP) Dane Odległości pomiędzy możliwymi lokalizacjami Przepływy pomiędzy czynnościami Przykład lokalizacja personelu medycznego
Problem kwadratowego przydziału (QAP) 1 b 13 b 23 3 2 b 12
Problem podziału grafu (GPP) Dane: Graf G(V, E) składający się z n wierzchołków V = { v1, v2,... vn} oraz zbiór niezorientowanych łuków E łączących pary wierzchołków.
Problem podziału grafu (GPP) Eij macierz połączeń Eij = 1 jeśli vi jest połączony z vj 0 w przeciwnym wypadku Eij = Eji
Problem podziału grafu (GPP) Należy dokonać podziału grafu G na dwa rozłączne podzbiory V1 i V2, takie, że V1 V2 = V Liczba połączeń pomiędzy zbiorami wynosi C[ V, V ] 1 2 i V 1, j V 2 E ij
Problem podziału grafu (GPP)
Problem marszrutyzacji pojazdów (VRP) Należy odwiedzić wszystkie wierzchołki korzystając ze zbioru pojazdów
Co jest potrzebne do zaprojektowania algorytmu Reprezentacja rozwiązania Cel Funkcja oceny
Reprezentacja rozwiązania Ciąg binarny Reprezentacja zmiennoprzecinkowa, np. programowanie nieliniowe Permutacja, np. TSP, QAP Macierz Drzewo
Exhaustive search Wymaga wygenerowania i sprawdzenia każdego rozwiązania dopuszczalnego wady oczywiste Zaleta proste Jedyne wymaganie systematyczny sposób przeszukiwania S Jak to zrobić, zależy od reprezentacji
Exhaustive search 0000 0 0001 1 0010 2 0011 3... Ale można inaczej dzieląc S. Jak?
Exhaustive search (2) Wielokrotny podział na dwie przestrzenie, x 1 = T, x 1 = F,... x 1 =T x 1 =F x 2 =T x 2 =F x 2 =T x 2 =F
Exhaustive search - TSP Permutacja dopuszczalna, np. nie 1-2-3-1-4 Liczba permutacji n! Rekurencyjne generowanie permutacji ustalenie pierwszej pozycji generowanie (n-1)! permutacji dla ustalonej pierwszej pozycji...
Branch & Bound
Przeszukiwanie losowe Powtarzaj Wygeneruj losowe rozwiązanie x Do spełnienia warunków stopu Zwróć najlepsze znalezione rozwiązanie
Heurystyki zachłanne (greedy) Konstrukcja rozwiązania poprzez dodawania kolejnych elementów np. wierzchołków (łuków) W każdym kroku dodawany jest jeden, najlepszy element
Heurystyki zachłanne (greedy) Utwórz rozwiązanie początkowe, np. x := Ø powtarzaj dodaj do x lokalnie najlepszy element nie wchodzący jeszcze w skład rozwiązania dopóki nie utworzono pełnego rozwiązania
Przykłady heurystyk zachłannych NN (Nearest Neighbor) Iteracyjne dodawanie do trasy najbliżej leżącego miasta. Greedy cycle Trasa jest budowana tak, że zawsze tworzy cykl Hamiltona. W każdej iteracji dodawany jest jeden najkrótszy łuk z pozostałych dostępnych. Clarke-Wright (dla VRP) Na początku każde miasto połączone z bazą, potem iteracyjna eliminacja takiego połączenia z bazą (przejazd bezpośrednio do miasta), która da największe oszczędności
NN przykład
NN przykład
NN przykład
NN przykład
NN przykład
NN przykład
NN przykład
NN przykład
NN przykład
Greedy cycle przykład
Greedy cycle przykład
Greedy cycle przykład
Greedy cycle przykład
Greedy cycle przykład
Greedy cycle przykład
Greedy cycle przykład
NN przykład
GRASP Greedy Randomized Adaptive Search Procedure T.A. Feo, M.G.C. Resende, Greedy Randomized Adaptive Search Procedures, Journal of Global Optimization 6, 109-133, 1995. http://www.research.att.com/~mgcr/papers.html Wadą heurystyk zachłannych jest ich determinizm, wystartowane z tego samego punktu (np. NN z tego samego wierzchołka), tworzą to samo rozwiązanie GRASP łączy zachłanność z losowością
GRASP Konstrukcja dobrego rozwiązania Dokładanie pojedynczych elementów do rozwiązania Uporządkowana ograniczona lista kandydatów według tzw. funkcji zachłannej, która bierze pod uwagę elementy znajdujące się już w rozwiązaniu Wybór losowy jednego z najlepszych kandydatów z listy (zwykle nie jest to ten najlepszy)
Zachłanna procedura z elementem losowym Utwórz rozwiązanie początkowe, np. x := Ø powtarzaj zbuduj ograniczoną listę kandydatów RCL (restricted candidate list) najlepszych elementów nie wchodzących jeszcze w skład rozwiązania dodaj do x losowo wybrany element z RCL dopóki nie utworzono pełnego rozwiązania
Konstrukcja ograniczonej listy kandydatów RCL Pierwsza faza c(e) koszt przyrostu f. celu związany z włączeniem elementu e E do rozwiązania c min, c max najmniejszy i największy koszt przyrostu RCL jest budowana z elementów o najmniejszym przyroście Ograniczenie ze względu na ilość (p elementów) ze względu na jakość ( ) c(e) [c min, c min + (c max - c min )] = 0? = 1?
Regret heuristics Rozważmy wszystkie możliwe uporządkowane rosnąco koszty wstawienia dwóch elementów: A: 10, 11, 12, 13, 13, 14 B: 20, 40, 45, 50, 50, 50 Który element należałoby wybrać? Zgodnie z zasadą zachłanną A ale wtedy może się okazać, że stracimy opcję wstawienia B z kosztem 20 i zostanie nam tylko koszt 40 lub więcej
Regret heuristics k-żal (k-regret) to suma różnic pomiędzy najlepszym, a k kolejnymi opcjami wstawienia Wybieramy element o największym żalu Wstawiamy go w najlepsze miejsce
Regret heuristics B A
Techniki optymalizacji Przeszukiwanie lokalne
Idea sąsiedztwa S x N(x)
Definicja sąsiedztwa x S zbiór N(x) S rozwiązań, które leżą blisko rozwiązania x funkcja odległości dist: S S R sąsiedztwo N(x) = {y S : dist(x, y) } każde rozwiązanie y N(x) jest nazywane rozwiązaniem sąsiednim lub po prostu sąsiadem x
Definicja sąsiedztwa (2) zakładamy, że y N(x) x N(y) N(x) można uzyskać z x wykonując jeden ruch (modyfikację) m z pewnego zbioru możliwych ruchów M(x) ruch m jest pewną transformacją, która zastosowana do rozwiązania x daje rozwiązanie y Sąsiedztwo można więc zdefiniować następująco: N(x) = {y m M(x) y = m(x)}
Cechy sąsiedztwa ograniczenie na rozmiar dla każdego x jego N(x) zawiera co najmniej jedno rozwiązanie y rożne od x nie może obejmować całej przestrzeni rozwiązań dopuszczalnych (nie może być dokładna) podobieństwo sąsiadów y N(x) niewiele różni się od x, tak by przejście (elementarny ruch) od x do y nie wymagało za każdym razem konstruowania nowego rozwiązania od podstaw równouprawnienie niezależnie od wyboru rozwiązania początkowego powinno być osiągalne każde rozwiązanie należące do S
Przykład sąsiedztwa - TSP k-zamiana (ang. k-swap, k-opt) N(x) zbiór rozwiązań powstałych przez usunięcie k miast i wstawienie ich w innej kolejności 2-zamiana 1 2 3 4 5 6 7 8 9 1 2 8 4 5 6 7 3 9 N(x) = n(n-1)/2
Sąsiedztwo TSP wymiana miast 1 2 3 4 5 6 7 8 9 N 2 (3, 8) 1 2 8 4 5 6 7 3 9
Sąsiedztwo TSP wymiana łuków N 2 (3, 8) 1 2 3 4 5 6 7 8 9 1 2 8 7 6 5 4 3 9
2-opt i 3-opt
Sąsiedztwo QAP zamiana lokalizacji 1-2-3 1-3-2 b 2 3 b 1 3 1 3 2 b 12 1 b a 13 12 2 a 13 a 23 b 2 3 3 b 12
Sąsiedztwo GPP Podejście alternatywne - generowanie rozwiązań niedopuszczalnych V 1 V 2. V1, j V F(V 1, V 2 ) = + ( V 1 - V 2 ) 2 i 2 E ij - dodatnia stała (kara za niedopuszczalny podział). Sąsiedztwo wszystkie takie podziały (V 1, V 2 ), że V 1 = V 1 {x} i V 2 = V 2 \{x} lub V 1 = V 1 \{y} i V 2 = V 2 {y}, x V 2, y V 1.
Przeszukiwanie lokalne Eksploracja sąsiedztwa x 1. Wybierz rozwiązanie w S i oceń je, zdefiniuj jako rozwiązanie bieżące 2. Dokonaj generacji nowego rozwiązania z rozwiązania bieżącego i oceń je 3. Jeśli nowe rozwiązanie jest lepsze zdefiniuj jako rozwiązanie bieżące, w przeciwnym wypadku odrzuć 4. Powtarzaj kroki 2 i 3 dopóki można uzyskać poprawę
Lokalne optimum x min jest lokalnym minimum jeśli f(x min ) f(y), dla wszystkich y N(x min ) x max jest lokalnym maksimum jeśli f(x max ) f(y), dla wszystkich y N(x max )
Lokalne przeszukiwanie Wersja zachłanna Wygeneruj rozwiązanie x powtarzaj dla każdego y N(x) w losowej kolejności jeżeli f(y) > f(x) to x := y dopóki nie znaleziono lepszego rozwiązania Wersja stroma Wygeneruj rozwiązanie x powtarzaj znajdź najlepsze rozwiązanie y N(x) jeżeli f(y) > f(x) to x := y dopóki nie znaleziono lepszego rozwiązania
Efektywność lokalnego przeszukiwania więcej rozwiązań jest ocenianych niż akceptowanych wersja stroma wersja zachłanna ocena rozwiązań sąsiednich jest operacją krytyczną z punktu widzenia efektywności algorytmu
Efektywność lokalnego przeszukiwania Bezpośrednia implementacja algorytmów LS okazuje się dla wielu typowych problemów bardzo nieefektywna Rozwiązania należące do sąsiedztwa są jawnie konstruowane przed ich oceną kosztowna operacja Większość ocenionych rozwiązań nie zostaje akceptowana - nie warto ich jawnie konstruować, wystarczy znać ich wartość f. celu
Efektywność lokalnego przeszukiwania Czy można obliczyć wartość f. celu bez konstrukcji rozwiązania? f m (x)
Efektywne przeglądanie sąsiedztwa (delta) Wersja stroma Wygeneruj rozwiązanie x powtarzaj znajdź najlepszy ruch m M(x) to jeżeli f(m(x)) > f(x) x := m(x) dopóki nie znaleziono lepszego rozwiązania Ocenia się ruchy (zmianę f. celu), nie rozwiązania! Rozwiązania sąsiednie nie muszą być jawnie konstruowane! Dopiero tu modyfikowane jest rozwiązanie
Ocena ruchów problem komiwojażera (TSP) Ocena ruchu: Różnica kosztów dwóch dodawanych i dwóch usuwanych łuków
Problem marszrutyzacji pojazdów (vehicle routing problem VRP) Należy odwiedzić wszystkie wierzchołki korzystając ze zbioru pojazdów
Rozwiązanie i lokalny ruch/modyfikacja rozwiązania Ruch to przesunięcie wierzchołka pomiędzy trasami Ruch modyfikuje zawsze tylko dwie trasy
Koncepcja sąsiedztwa Sąsiedztwo N(x) zbiór rozwiązań, które można uzyskać lokalnie modyfikując x Ruch m lokalna modyfikacja x do y, y = m(x) M(x) zbiór ruchów, które można zastosować do x N(x) = {y m M(x) y = m(x)} Ruchy powinny modyfikować rozwiązania lokalnie w przestrzeni rozwiązań i funkcji celu Rozmiar M(x) (N(x)) powinien być dużo mniejszy od całej przestrzeni rozwiązań
Lokalne przeszukiwanie w wersji stromej Wygeneruj rozwiązanie x powtarzaj znajdź najlepsze rozwiązanie y N(x) jeżeli f(y) > f(x) to x := y (zaakceptuj y) dopóki nie znaleziono lepszego rozwiązania po przejrzeniu całego sąsiedztwa
Zakładamy, że utworzenie trasy od podstaw jest tak samo czasochłonne jak jej modyfikacja traktowane jako operacja elementarna jednostka czasu Złożoność jednej iteracji lokalnego przeszukiwania przy najprostszej implementacji W liczba wierzchołków T liczba pojazdów/tras Liczba ruchów M(x) = W(T-1) Nakład na stworzenie rozwiązania sąsiedniego T- tyle tras jest tworzonych w rozwiązaniu sąsiednim Złożoność jednej iteracji T W(T-1)
Efektywne ocenianie ruchów (delta) Większość ruchów jest tylko oceniana, a nie wykonywana Ocena ruchu wymaga zmodyfikowania dwóch tras Nakład na ocenienie ruchu 2 (modyfikowane są dwie trasy) Złożoność jednej iteracji 2 W(T-1)
Wykorzystanie ocen ruchów z poprzednich iteracji Dla y N(x) z reguły N(x) N(y)= lub N(x) N(y) << N(x) Ale M(x) M(y) może być liczny tzn. wiele ruchów pozostaje taka sama po wykonaniu ruchu
Wykorzystanie ocen ruchów, z poprzednich iteracji A B Ruch zaakceptowany w poprzedniej iteracji Ruch oceniony w poprzedniej iteracji Oceny wszystkich ruchów nie dotyczących tras A i B pozostają te same
Każdy ruch modyfikuje tylko dwie trasy Wszystkie ruchy pomiędzy niezmodyfikowanymi trasami pozostają takie same W zmodyfikowanych trasach znajduje się średnio 2W /T wierzchołków. Każdy z nich możemy przesunąć do jednej zt 1 tras W pozostałych trasach znajduje się średnio W - 2W / T wierzchołków. Każdy z nich możemy przesunąć do jednej z dwóch zmienionych tras (pozostałe ruchy już oceniliśmy) Po zaakceptowaniu nowego rozwiązania, należy więc ocenić średnio tylko (2W/T )(T-1) +2(W - 2W / T) 4W ruchów Złożoność jednej iteracji 8 W (zmienionych tras) Wykorzystanie ocen ruchów z poprzednich iteracji dla VRP
Efekt Poprawa efektywności (z wyjątkiem pierwszej iteracji) w stosunku do wersji podstawowej T W(T-1) / 8 W = T (T-1) / 8
Pomijanie złych ruchów na podstawie reguł heurystycznych Technika znana także pod nazwą candidate moves ruchy kandydackie W sąsiedztwie ocenia się ruchy kandydackie Pozostałe ruchy pomija się lub ocenia się z niewielkim prawdopodobieństwem
Pomijanie złych ruchów na podstawie reguł heurystycznych TSP dla każdego wierzchołka tworzymy listę N << N najbliższych wierzchołków Ruchy kandydackie wprowadzają tylko łuki prowadzące do najbliższych wierzchołków
Standardowe przeglądanie sąsiedztwa TSP wymiana dwóch łuków Wersja steepest Dla każdego wierzchołka n1 od 0 do N-1 Dla każdego wierzchołka n2 od n1+1 do N-1 jeżeli łuki n1-następnik(n1) i n2-następnik(n2) nie są sąsiednie Sprawdź czy ruch (n1, n2) przynosi poprawę i jest najlepszym dotąd znalezionym
Przeglądanie sąsiedztwa TSP z ruchami kandydackimi wymiana dwóch łuków Wersja steepest Dla każdego wierzchołka n1 od 0 do N-1 Dla każdego łuku kandydackiego n1-n2 sprawdź wszystkie ruchy polegające do dodaniu łuku n1-n2 i usunięciu jednego z obecnych łuków łączących n1
Ruchy kandydackie w TSP n1 n2
Pomijanie złych ruchów na podstawie reguł heurystycznych W VRP można rozważać tylko ruchy pomiędzy blisko położonymi trasami 700 600 500 400 300 200 Base Dumping sites Route of vehicle 1 Route of vehicle 2 Route of vehicle 3 100 0 0 100 200 300 400 500 600
Ruchy kandydackie w TSP na podstawie znanych rozwiązań Generujemy pewną liczbę rozwiązań stosują heurystykę lub lokalne przeszukiwanie bez ruchów kandydackich Każdy łuk, który wystąpi choć raz w jednym z tych rozwiązań staje się łukiem kandydackim
Pomijanie złych ruchów na podstawie reguł heurystycznych Ruchy złe i kandydackie mogą być identyfikowane na podstawie działania metody wyższego rzędu Pamięć długoterminowa w Lista dobrych łuków w TSP Lista łuków występujących w ruchach przynoszących poprawę Wykorzystanie informacji z operatorów rekombinacji Np. do ruchów kandydackich zalicza się ruchy wprowadzające łuki występujące o dowolnego z rodziców (nawet jeżeli nie znalazły się one w potomku)
Techniki zaawansowane Np. przeglądanie sąsiedztwa o rozmiarze wykładniczym w czasie wielomianowym Wygeneruj rozwiązanie x powtarzaj znajdź najlepszy ruch m M(x) jeżeli f(m(x)) > f(x) to x := m(x) dopóki nie znaleziono lepszego rozwiązania Problem optymalizacji
Wady lokalnego przeszukiwania kończą działanie w optimum lokalnym (poza przypadkiem dokładnej struktury sąsiedztwa) dokładne sąsiedztwa są w większości przypadków nie praktyczne ponieważ sprowadzają się do kompletnego przeszukania przestrzeni rozwiązań dopuszczalnych, jakość rozwiązań w dużej mierze zależy od wyboru rozwiązania startowego dla większości problemów nie ma żadnych wskazań do tego jak odpowiednio wybrać rozwiązanie startowe
Zalety lokalnego przeszukiwania są elastyczne można stosować dla każdego problemu optymalizacji kombinatorycznej
Unikanie wad algorytmów lokalnego przeszukiwania wprowadzenie bardziej złożonej definicji sąsiedztwa w celu możliwości przeszukania większej części przestrzeni rozwiązań dopuszczalnych ograniczone akceptowanie pogorszeń funkcji celu wykonanie algorytmu lokalnego przeszukiwania dla dużej liczby rozwiązań startowych dobre rozwiązania startowe
Multiple start local search Lokalne przeszukiwanie z różnych punktów startowych Powtarzaj Wygeneruj zrandomizowane rozwiązanie startowe x Lokalne przeszukiwanie (x) Do spełnienia warunków stopu Zwróć najlepsze znalezione rozwiązanie
Variable neighborhood Local Search - Lokalne przeszukiwanie ze zmiennym sąsiedztwem Obserwacje: Lokalne optimum dla pewnego typu sąsiedztwa nie musi być lokalnym optimum dla innego typu sąsiedztwa Globalne optimum jest lokalnym optimum dla wszystkich możliwych sąsiedztw
Variable neighborhood Local Search - Lokalne przeszukiwanie ze zmiennym sąsiedztwem Wejście lista sąsiedztw (N 1,N 2, ) Wygeneruj rozwiązanie początkowe x Dla wszystkich sąsiedztw N=(N 1,N 2, ) x := Lokalne przeszukiwanie (x, N)
Iterated local search - Iteracyjne przeszukiwanie lokalne Wygeneruj rozwiązanie początkowe x x := Lokalne przeszukiwanie (x) Powtarzaj Perturbacja (x) y := Lokalne przeszukiwanie (x) Jeżeli f(y) > f(x) to x := y Do spełnienia warunków stopu
Perturbacja Zrandomizowana modyfikacja wykraczająca poza bieżące sąsiedztwo nieosiągalna w jednym ruchu, np.: Złożenie kilku ruchów Większy ruch (np. wymania większej liczby łuków dla TS)
Iterated local search - Iteracyjne przeszukiwanie lokalne Perturbacja Lokalne przeszukiwanie Rozwiązanie początkowe
Adaptive multistart local search Po każdym uruchomieniu przeszukiwania lokalnego aktualizowana jest tablica częstości występowania poszczególnych łuków w lokalnych optimach Nowe rozwiązania startowe są tworzone przy wykorzystaniu tych danych większe prawdopodobieństwo wybrania częstych łuków
Large-scale neighborhood search Ruch polega na złożeniu dwóch metod: Destroy Repair W ogólności mogą one powodować duże zmiany rozwiązania
Large-scale neighborhood search Destroy niszczy część rozwiązania Np. usuwa część wierzchołków z tras problemu VRP Często łączenie losowości z wyborem heurystycznym staramy się usuwać wierzchołki (fragmenty tras), które mogą być źle przydzielone Repair ukierunkowana (funkcją celu) naprawa rozwiązania Może to być heurystyka lub nawet metoda dokładna
Adaptive (Large-scale neighborhood) local search Możemy wykonywać wiele różnych typów ruchów (operatorów) Ich prawdopodobieństwo jest automatycznie modyfikowane na podstawie efektów stosowania poszczególnych operatorów (np. prawdopodobieństwa uzyskania nowego lepszego rozwiązania)
Kryteria stopu Liczba iteracji / czas obliczeń Kryterium dynamiczne brak poprawy w zadanej liczbie iteracji / zadanym czasie obliczeń
Techniki optymalizacji Symulowane wyżarzanie
Wyżarzanie wzrost temperatury gorącej kąpieli do takiej wartości, w której ciało stałe topnieje powolne zmniejszanie temperatury do chwili, w której cząsteczki ułożą się wzajemnie i osiągną (ang. ground state) temperaturę zerową
Algorytm Metropolis Metropolis i in. (1953) - algorytm statystycznego symulowania (Monte Carlo) zmian ciała stałego w gorącej kąpieli aż do stanu termicznej równowagi Losowa generacja sekwencji stanów ciała stałego: stan i ciała stałego i jego energia Ei, perturbacja (małe zniekształcenie) następny stan. Energia następnego stanu wynosi Ej. jeśli Ej - Ei 0, stan j jest akceptowany jako stan bieżący w przeciwnym wypadku, stan j jest akceptowany z pewnym prawdopodobieństwem: Ei E exp kbt j T temperatura kąpieli k B stała Boltzmanna
Analogie do optymalizacji System fizyczny stan energia stan stały temperatura szybkie schładzanie powolne schładzanie Problem optymalizacji rozwiązanie koszt optimum parametr kontrolny T lokalna optymalizacja symulowanie wyżarzanie
Symulowane wyżarzanie Simulated annealing, Monte Carlo annealing, probabilistic hill climbing, stochastic relaxation Zastosowanie algorytmu Metropolis do optymalizacji kombinatorycznej.
Lokalne przeszukiwanie wersja zachłanna Wygeneruj rozwiązanie x powtarzaj dla każdego y N(x) w losowej kolejności jeżeli f(y) > f(x) to x := y dopóki nie znaleziono lepszego rozwiązania
Kryterium akceptacji (maksymalizacja) x, y rozwiązania kryterium akceptacji określa czy y uzyskane x i jest akceptowane P c {accept y} 1 exp f ( y) T f ( x) jesli jesli f( y) f( y) f( x) f( x)
Wpływ temperatury Wysoka temperatura, p 1, random walk błądzenie przypadkowe Niska temperatura, p 0 dla gorszych rozwiązań, lokalne przeszukiwanie (z akceptacją ruchów nie zmieniających funkcji celu)
Procedura SW wygeneruj rozwiązanie x T := T 0 powtarzaj powtarzaj L razy Wygeneruj losowe y N(x) obniż T jeżeli f(y) > f(x) to x := y w przeciwnym wypadku jeżeli exp ((f(y) - f(x)) / T) > random [0,1) x := y dopóki T <= T K Zwróć najlepsze wygenerowane rozwiązanie
Zbieżność algorytmu SW Można uzyskać takie L i T k, które zapewniają zbieżność SW do opt. Dobre przybliżenie SW generowanie homogenicznych łańcuchów Markowa skończonej długości dla skończonej sekwencji malejących wartości parametru kontrolnego
Łańcuch Markowa Łańcuch Markowa jest sekwencją prób (rozwiązań), w której prawdopodobieństwo wyniku danej próby zależy od wyniku poprzedniej próby. Łańcuch Markowa jest niehomogeniczny jeśli prawdopodobieństwo przejścia zależy od numeru próby k. Jeśli nie zależy łańcuch Markowa jest homogeniczny.
Sposób chłodzenia określa skończona sekwencja wartości parametru kontrolnego, tj. początkowa wartość parametru kontrolnego T 0 funkcja dekrementacji parametru kontrolnego końcowa wartość parametru kontrolnego skończona liczba przejść dla każdej wartości parametru kontrolnego, tj. skończona długość każdego homogenicznego łańcucha Markowa
Sposób chłodzenia Kirkpatricka, Gelatta i Vecchi ego Wartość początkowa parametru kontrolnego Wartość c 0 powinna być odpowiednio wysoka by zapewnić akceptację wszystkich przejść (początkowy współczynnik akceptacji jest bliski 1). Zależy od problemu (patrz formuła: f, T 0 ) Np. f = 1000, p 0,98 dla T 0 = 250 Podgrzewanie Zmniejszanie wartości parametru kontrolnego T k+1 = T k, k = 1, 2,... T k+1 = k T 0 jest stałą mniejszą ale bliską 1. (0.8 0.99)
Sposób chłodzenia L k = L
Długość łańcucha Markowa Powinna być odpowiednia, tak by algorytm mógł odwiedzić wszystkich swoich sąsiadów przynajmniej raz (osiągnąć stan równowagi termicznej na każdym poziomie temperatury). Związek ze średnim rozmiarem sąsiedztwa. Ponieważ prawdopodobieństwo akceptacji zmniejsza się w czasie, można by się spodziewać, że L k dla T k 0. Dlatego istnieje pewne ograniczenie na długość łańcucha Markowa dla małych T k.
Wartość końcowa parametru kontrolnego Algorytm kończy działanie, gdy wartość funkcji celu otrzymanego rozwiązania w ostatniej próbie łańcucha Markowa nie uległa zmianie dla kilku kolejnych łańcuchów
Algorytm Great Deluge Wielka powódź wygeneruj rozwiązanie x Poziom wody P := P 0 powtarzaj powtarzaj L razy Wygeneruj losowe y N(x) jeżeli f(y) > P to x := y podwyższ P dopóki P <= P K Zwróć najlepsze wygenerowane rozwiązanie
Great Deluge
Techniki optymalizacji Przeszukiwanie tabu
Obserwacje Lokalne optima nie muszą być dobrymi rozwiązaniami Lokalne optima mogą się grupować, leżeć blisko siebie
Lokalne przeszukiwanie wersja stroma Wersja stroma wygeneruj rozwiązanie x powtarzaj znajdź najlepszy ruch m M(x) jeżeli f(m(x)) > f(x) to x := m(x) Czy można z tego zrezygnować? dopóki nie znaleziono lepszego rozwiązania
Przeszukiwanie tabu Główna idea wykorzystanie pamięci Zapamiętywanie rozwiązań czy ruchów
Najprostszy sposób unikania cykli Zapamiętuj wszystkie odwiedzone dotąd rozwiązania Rozwiązania te stają się zakazane Tabu Dla poprawy efektywności można zachowywać wartości haszowe i wyszukiwanie przez połowienie Może prowadzić do krążenia wokół bardzo podobnych rozwiązań
Lista Tabu Lista K ostatnich ruchów (elementów ruchów), które są zakazane
Algorytm przeszukiwania Tabu Tabu search wygeneruj rozwiązanie x lista Tabu T:=Ø powtarzaj znajdź najlepszy ruch m M(x) m T x := m(x) uaktualnij listę Tabu (T, m) dopóki warunek stopu Zwróć najlepsze wygenerowane rozwiązanie
Lista Tabu kolejka FiFo (a,b) (c,d) (a,b) (e,f) (g,h) (c,d) (a,b) (e,bf (c,d) (a,b) (i,j) (g,h) (e,f) (c,d) (a,b) (k,l) (i,j) (g,h) (e,f) (c,d)
Stopnie swobody Co przechowywać na liście Tabu? Ruchy Składowe ruchów Jak blokować ruchy? Dokładne dopasowanie Ruchy odwrotne Ruchy częściowo się pokrywające Długość listy Tabu
Ruchy na liście Tabu Wymiana dwóch łuków Pary łuków Wymiana dwóch wierzchołków Pary wierzchołków
Składowe ruchów na liście Tabu Wymiana dwóch łuków Poszczególne łuki Wymiana dwóch wierzchołków Poszczególne wierzchołki
Blokowanie ruchów dokładne dopasowanie Zakazane są tylko ruchy znajdujące się na liście Tabu, lub odwrotne Stosunkowy mały zakres ograniczeń Wymaga dłuższej listy Tabu
Blokowanie ruchów - ruchy częściowo się pokrywające Np. ruch (a,b), blokuje wszystkie ruchy, w których występuje a lub b Naturalne przy przechowywaniu składowych ruchów Stosunkowy duży zakres ograniczeń Wymaga krótszej listy Tabu
Długość listy Tabu Krótka lista Bardziej agresywny algorytm Ryzyko wpadnięcia w cykl Długa lista Ryzyko pomijania zbyt wielu ruchów Może nawet uniemożliwiać dojście do lokalnego optimum
Reactive Tabu Search automatyczne modyfikowanie długości listy Tabu Stałe, powolne zmniejszanie długości listy Co L iteracji zmniejszana jest długość listy Tabu Zwiększanie długości listy w przypadku wpadnięcia w cykl Wymaga zachowywania odwiedzonych rozwiązań
Kryteria aspiracji Lista Tabu może blokować zbyt wiele ruchów/rozwiązań Ruchy/rozwiązania Tabu, które są bardzo dobre spełniają kryteria aspiracji mogą zostać zaakceptowane Najprostsze kryterium aspiracji akceptuj rozwiązania lepsze od najlepszego znalezionego dotąd, nawet jeżeli są Tabu Takie rozwiązania na pewno nie zostały dotąd odwiedzone
Naturalny sposób powstania algorytmu Algorytm największego spadku Lista tabu Przeszukiwanie tabu niezdolność wyjścia z lok. opt. cykle za dużo zakazanych ruchów Ulepszony alg. największego spadku Poziom aspiracji akceptacja ruchów niepolepszających, wybór najlepszego rozwiązania z V* akceptacja atrakcyjnych ruchów zakazanych
Przykład zapamiętywania ruchów tabu
Pamięć długoterminowa long term memory Np.: Tablica częstości występowania poszczególnych łuków w odwiedzanych rozwiązaniach Tablica częstości ruchów przynoszących poprawę
Zastosowania pamięci długoterminowej Restarty tworzenie nowych rozwiązań: Dywersyfikacja rozwiązania startowe odległe od dotychczas odwiedzanych Intensyfikacja rozwiązania startowe podobne do najlepszych dotąd odwiedzanych Definiowanie ruchów kandydackich