380 likes | 605 Views
Przeszukiwanie z tabu. Autor: Przemysław Gospodarczyk. Znaczenie słowa tabu.
E N D
Przeszukiwanie z tabu Autor: Przemysław Gospodarczyk
Znaczenie słowa tabu • Tabu to w religiach pierwotnych zakaz podejmowania różnych działań w stosunku do osób, miejsc, rzeczy bądź stanów rzeczy lub też wypowiadania pewnych słów. Tabu było efektem przekonania o nieczystości pewnych zachowań. Wskutek złamania tabu następuje stan skażenia związany z odpowiednimi sankcjami, głównie ze strony sił nadprzyrodzonych. • Tabu to w szerokim sensie jakiś zakaz.
Historia • Autorem TS jest Fred Glover, a pierwsza praca pochodzi z 1986 roku (przeszukiwanie lokalne było znane), choć Glover przedstawił już pewne założenia w roku 1977: - pamięć krótkotrwała, gdzie zapisujemy ostatnie ruchy; - pamięć długotrwała, gdzie zapisujemy najbardziej atrakcyjne elementy przestrzeni przeszukiwań. • Równocześnie, w tym samym roku, niezależnie, Michael Hansen zaprezentował podobną koncepcję zwaną „steepest ascent mildestdescent heuristic”.
Przeszukiwanie z tabu jako idea • Glover od początku myślał o przeszukiwaniu z tabu jako o metaheurystyce, tzn. heurystyce nadrzędnej, która sterować będzie wykonaniem heurystyk niższego rzędu, które są odpowiednio „skrojone” na potrzeby konkretnego problemu optymalizacji. • Samo pojęcie TS to bardzo ogólny pomysł, niezależny od problemu, pomaga ułożyć konkretny algorytm ale bezpośrednio nie rozwiązuje żadnego konkretnego problemu. • Autorem pojęcia metaheurystyka jest Fred Glover (również rok 1986).
Definicja ogólna • Przeszukiwanie z tabu (TS, ang. tabu search) – metahuerystyka do rozwiązywania problemów optymalizacyjnych, oparta na iteracyjnym przeszukiwaniu przestrzeni rozwiązań, wykorzystując sąsiedztwo pewnych elementów tej przestrzeni oraz zapamiętując przy tym przeszukiwaniu ostatnie ruchy, dopóki nie spełnimy warunku końcowego. • Rozwiązanie jest zastępowane przez najlepszego sąsiada, nawet gdy prowadzi do gorszego rozwiązania. • Lista tabu (zwana czasami zbiorem) zawiera ruchy zabronione, czyli takie które zostały już ostatnio wykonane (nie same rozwiązania). • W szczególności, czasami można łamać tabu (wykonywać ruchy niedozwolone), tzw. kryterium aspiracji (ang. aspiration criterion). • Dużo aspektów można dospecyfikować samodzielnie.
Cele, czyli po co jest TS ? • Pomoc przy „wychodzeniu” z optimum lokalnego (które nie jest globalne) przy przeszukiwaniu lokalnym (osłabiamy regułę selekcji) – w szczególności TS może być LS wraz z listą tabu. • Sterowanie innymi heurystykami, gwarantując różnorodność rozwiązań (zmuszamy algorytm poprzez listę tabu do przeszukiwania niezbadanych wcześniej przestrzeni, nie „zapętlamy się”) przy wyraźnej zbieżności do rozwiązania optymalnego. • Odpowiednio dopasowany do problemu TS jako jedna z kilku samodzielnych (niezależnych) heurystyk, działająca na zbiorze rozwiązań, usprawniając je.
Bardzo ogólny schemat TS S – przestrzeń przeszukiwań T – lista tabu RT – reguła selekcji STOP – warunek końcowy N – sąsiedztwo, zależne od osobnika i listy tabu
Struktury sąsiedztwa • Należy zdefiniować relację sąsiedztwa na parach, dla danego problemu ze względu na format rozwiązań. • Relacja ma obejmować całą dziedzinę, czyli strukturę, którą przeszukujemy. • Załóżmy, że rozwiązania to permutacje zbioru n elementowego. Niech π = <π (0), π (1), π (2), π (3), π (4), π (5), ..., π (n-1)>. • Wtedy rozważamy sąsiedztwa ze względu na przejścia: - insert(1,4): π* = <π (0), π (4), π (1), π (2), π (3), π (5), …, π (n-1)>; -swap(1,4): π* = <π (0), π (4), π (2), π (3), π (1), π (5), …, π (n-1)>; - invert(1,4): π* = <π (0), π (4), π (2), π (3), π (1), π (5), …, π (n-1)>.
Atrybuty przejścia (zawartość listy tabu) • Atrybuty przejścia to jego argumenty, które to przejście określają i są zapisywane do listy tabu. • Wraz z atrybutami zapisujemy długość zakazu (liczbę iteracji w trakcie których obowiązuje zakaz), która maleje o 1 z każdą iteracją. Wartość początkową należy dobrze przemyśleć (może być z góry zadana i stała, losowa lub zmienna w zależności od jakiegoś czynnika). • Dla danych atrybutów można trzymać częstotliwość (liczba wystąpień przejścia/wszystkie przejścia) i od niej uzależnić długość pobytu na liście.
Kryterium aspiracji – łamanie tabu • Czasami zabranianie pewnych ruchów, mimo, że nie prowadzi do zapętleń, to może spowodować ogólną stagnację przy przeszukiwaniu. • Tabu bywa czasami za silne, zabrania atrakcyjnych ruchów lub w ogóle uniemożliwia ruch (wszyscy sąsiedzi są na liście tabu). • Zazwyczaj kryterium aspiracji polega na wykonywaniu zabronionego ruchu wtedy, gdy ten ruch prowadzi do rozwiązania lepszego niż globalnie najlepsze znane do tej pory lub lepszego niż bieżące. • Rzadziej stosuje się algorytmy sprawdzające, czy wykonanie ruchu może doprowadzić do powstania cyklu (efektywne implementacje z lat 1989, 1991).
Wykorzystanie pamięci długoterminowej • Pamiętamy określoną liczbę najlepszych rozwiązań znalezionych podczas przeszukiwania. • Pamiętamy o ruchach, które okazały się korzystne (tworzymy interesującą nas statystykę), co pozwala na: - intensyfikację, czyli zagęszczenie próbkowania obszaru, jeżeli w tym obszarze znajdują się dobre rozwiązania; - dywersyfikację, czyli rozproszenie przeszukiwania, aby nie pominąć wszystkich podobszarów; - funkcja kary, która zależy od częstotliwości wykonywania danego ruchu i zaburza wartości funkcji celu.
Zdarzenia krytyczne • Jeżeli zaszło określone zdarzenie krytyczne, to algorytm generuje nowe rozwiązanie startowe. • Zdarzeniem krytycznym może być: - brak poprawy wartości f. celu, po wykonaniu ustalonej liczby iteracji z rzędu lub zaledwie minimalna poprawa rozwiązania od dłuższego czasu; - zbyt długie przeglądanie podobnych rozwiązań do startowego (mimo, że nie ma cyklu); - arbitralne ustalenie, że co k iteracji generujemy nowe rozwiązanie. • Generator nowego rozwiązania startowego po zajściu zdarzenia krytycznego może wykorzystać jakieś dodatkowe informacje o problemie nabyte przed zdarzenie.
Kryterium końca przeszukiwania • Nie znamy optymalnego rozwiązania, a kiedyś trzeba skończyć przeszukiwanie… • Zazwyczaj kończymy przeszukiwanie, gdy: - wykonamy ustaloną liczbę iteracji, - po wykonaniu ustalonej liczby iteracji z rzędu bez poprawienia wartości funkcji celu (najczęściej stosowane w praktyce), - jeżeli wartość funkcji celu osiągnie z góry zadaną wartość.
Probabilistyczny TS • Zwykły TS oblicza wartość f. celu dla każdego sąsiada danego rozwiązania, co może być kosztowne przy skomplikowanej f. celu i dużej przestrzeni przeszukiwań. • Probabilistyczny TS może: - sprawdzać tylko losowy podzbiór sąsiadów (choć możemy przeoczyć dobre rozwiązanie, które jest blisko), - skracać listę tabu, (zrandomizowanie to silny mechanizm „anty-cyklowy”). • Po zakończeniu działania probabilistycznego TS, można przeprowadzić krótkie przeszukiwanie lokalne startując od najlepszego znalezionego rozwiązania. • Przeprowadzanie krótkiego przeszukiwania lokalnego co pewną liczbę zrandomizowanych kroków jest mniej efektywnym rozwiązaniem, ale daje lepsze rezultaty (Glover i Laguna, 1993).
Świadome generowanie listy kandydatów • Można stworzyć zastępczą f. celu, bardzo uproszczoną w stosunku do oryginalnej i skorelowaną jakoś z nią. • Liczymy wartość zastępczej f. celu dla wszystkich sąsiadów, a najlepszych wybieramy do listy kandydatów. Dla każdego kandydata liczymy wartość oryginalnej f. celu i wybieramy najlepszego (Crainic , 1993).
Reactive Tabu Search • Lista tabu stałej długości ma tę wadę, że ogranicza możliwości przeszukiwania, szczególnie gdy najlepsze rozwiązania są otoczone przez rozwiązania możliwe do uzyskania poprzez wykonanie zabronionych ruchów (tzn. w danym momencie przeszukiwania lista jest za długa). • Kolejna potencjalna wada: lista tabu nie chroni nas w 100 procentach przed powstaniem cyklu (tzn. w danym momencie przeszukiwania lista jest za krótka). • Reactive Tabu Search (RTS) steruje długością listy. • Pamiętamy wszystkie dotychczasowe rozwiązania wraz z numerem iteracji (haszowanie, drzewa binarne). • Po wykonaniu ruchu, możemy sprawdzić powtarzalność konfiguracji i wyznaczyć interwał między kolejnymi odwiedzinami.
Reactive Tabu Search • Gdy konfiguracje zaczynają się powtarzać, RTS zwiększa długość listy (wolniej redukuje listę) w przeciwnym przypadku listę można skrócić. • Ponadto RTS używa dywersyfikacji jako mechanizmu obronnego przed przyciąganiem ekstremów lokalnych (co da się stwierdzić na podstawie dużej liczby powtórzeń). • Czasami przestrzeń wydaje się być mocno ograniczona przez listę tabu i kierunek przeszukiwania, który obraliśmy jest kiepski (wtedy RTS proponuje inny kierunek) – dosyć skomplikowane współczynniki i warunki z nimi związane. • Wady: pamięciożerność i zwiększona złożoność. • Autorzy piszą o możliwości kompresji, do odróżnienia m rozwiązań wystarczy log(m) bitów. • Pomysł: Battiti and Tecchiolli (1994).
Tabu Cycle Method • Lista tabu jest dzielona na części zwane grupami tabu, gdzie k-ta grupa zawiera elementy z dodane w określonym przedziale iteracji. • Algorytm zezwala co jakiś czas na wykonanie ruchów z pewnych „starszych” grup tabu. • Im starsza grupa, tym częstotliwość pozwoleń jest większa i zależy od pewnego współczynnika TC(k), którego wartość mówi co ile iteracji można łamać tabu dla k-tej grupy.
Tabu Cycle Method • Wysoka częstotliwość pozwoleń na łamanie tabu nie znaczy, że będzie ono za każdym możliwym razem łamane. • CC(k) to współczynnik, zwiększany o 1, w każdej iteracji, w której nie łamiemy tabu dla k-tej grupy. CC(k) nie liczymy dla buffer group. • Dodatkowo wprowadzono 3 możliwe statusy grup: - OFF – grupie nigdy nie wolno łamać tabu, przypadek dla CC(k) < TC(K) ; - ON – grupie wolno łamać tabu co TC(K) iteracji, przypadek CC(k) >= TC(K); - FREE – na grupę nie jest nałożone żadne tabu, przypadek, gdy grupa jest ON i każda starsza od niej też jest ON.
Tabu Cycle Method • TC(n) = 2 TC(k) = TC(k-1)+1 dla k = n-1 … 1 • Na początku CC(k) = 1. • Jeżeli ruch e z grupy k-tej jest wykonany, to dla każdego h >= k: CC(h) = CC(h) – TC(h) • Jeżeli dozwolony ruch dla grupy k-tej nie jest wykonany to: CC(k) = min (CC(k)+1, aTC(k)) , gdzie a jest odpowiednio dobranym współczynnikiem, który pilnuje jak dużą wielokrotność TC można osiągnąć (czasami CC(k) staje się tak duży, że grupy są ON lub wręcz FREE zbyt długo). • Pomysł: Glover i Laguna (1997).
TS – nowsze trendy • Hybrydyzacja algorytmów heurystycznych tzn. łączenie TS z innymi podejściami np. algorytmy ewolucyjne (Crainic i Gendreau, 1999). • Techniki generujące już w pierwszych iteracjach informacje specyficzne o problemie i wykorzystujące je w praktyce (lepsze niż losowe rozwiązanie startowe, krzyżowanie fragmentów najlepszych rozwiązań znalezionych przez TS, wiedząc, że pewne pozycje w wektorze rozwiązań powinny być wypełnione w określony sposób lub zależą od siebie). • Równoległość, np. mamy całą populację rozwiązań (algorytm ewolucyjny) i rozwiązania są poprawiane przez TS równolegle (Cung, 2002).
Problem QAP – jedna z interpretacji • Dane: - zbiór n fabryk i zbiór n lokacji; - odległości dla każdej pary lokacji ze zbioru (macierz); - wagi (zależne od ilości transportowanych towarów) dla każdej pary fabryk ze zbioru (macierz). • Problem: przypisać każdą z fabryk do jednej z lokacji (każdą do innej) tak, aby zminimalizować sumę iloczynów dystansów między lokacjami i odpowiadających wag. Problem jest NP-trudny. • Formalnie: cel:
ITS - Candidate Acceptance • Dwa sposoby: - eksploatacja (może prowadzić do intensyfikacji), - eksploracja (może prowadzić do dywersyfikacji). • Eksploatacja – jeden prosty pomysł polegający na wyborze najlepszego znanego rozwiązania. • Eksploracja – wiele pomysłów, generalnie dowolne, lokalnie zoptymalizowane rozwiązanie może być wybierane. • Strategia WYA („where you are”) – każde kolejne lokalne optimum, bez względu na jakość, jest w kolejnej iteracji wybierane przez Candidate Acceptance. • Inteligentniejsze metody mogą być oparte o uczący się algorytm ewolucyjny (np. PBIL) na przechowywanych rozwiązaniach.
ITS - Reconstruction • Rekonstrukcja powinna być na tyle silna, że pozwala wyjść z ekstremum lokalnego. • Jednocześnie nowe rozwiązanie powinno dziedziczyć po starym pewne cechy charakterystyczne, tak aby algorytm nie był losowy. • Sąsiedztwo generowane jest przez jeden krok strategii swap(i,j). • Rekonstrukcja polega na wykonaniu jednego kroku „podwójnego” swap, tzn. dla i < j: double_swap(i,j) = swap(i,j) i swap(i+1,(j+1) mod n).
Nowe najlepsze rozwiązania • Nowe najlepsze wyniki dla dużych problemów QAP osiągnięto po ok. 20 godzinach działania algorytmu. • Algorytm dzięki swojej ogólności testowany był również dla problemów TSP i również dawał bardzo dobre rezultaty. • Pomysł: Misevicius, Lenkevicius, Rubliauskas (2006).
Szkielet hybrydy ewolucyjno-TS 1. Generujemy startowy zbiór rozwiązań (sprytniej niż losowo). Pewna z góry ustalona liczba mówi nam ile chcemy rozwiązań najlepszej jakości, a ile najbardziej różnorodnych (one rozszerzają nam przestrzeń poszukiwań i zmniejszają prawdopodobieństwo zbieżności do ekstremum lokalnego). 2. Stosujemy TS. 3. Używamy metod kombinacji rozwiązań, aby inteligentnie wygenerować nowy zbiór rozwiązań, wykorzystując informacje o typie problemu i informacje nabyte w trakcie działania. 4. Stosujemy TS.
Szkielet hybrydy ewolucyjno-TS 5. Otrzymane z 4. kroku rozwiązania dodajemy do głównego zbioru rozwiązań, w zależności od przynależności, do części najlepszych rozwiązań lub najbardziej różnorodnych. • Iteracja algorytmu trwa od 3. kroku do 5. • Jeżeli zbiór rozwiązań pozostaje niezmieniony po wykonaniu danej iteracji, to kolejną iterację poprzedza inicjowanie zbioru rozwiązań najbardziej różnorodnych (ten sam algorytm co w 1. kroku). • Algorytm kończy się po zadanej liczbie iteracji.
Metoda Glovera – inicjowanie populacji • Metoda gwarantuje pewien poziom zróżnicowania rozwiązań. • Jako ziarno wykorzystujemy 1 losową permutację x. • Na podstawie ziarna tworzymy nowe rozwiązania. • Dane: - b – krok, naturalne, mniejsze od n, losowe dla każdego rozwiązania; - s – pozycja startowa, na początku równa b. Algorytm: rozwiązanie x' budujemy dodając najpierw element x(s), potem kolejno x(s + b), x(s + 2b), …, x(s + rb), gdzie r jest tak dobrane, że s+rb nie przekracza n. Kiedy dojdziemy do końca ziarna, to pozycja startowa zmniejsza się o 1 i cała operacja się powtarza aż nie zapełnimy całego wektora x' (musimy odwiedzić wszystkie pozycje w x). • Algorytm generuje po 10 rozwiązań dla każdego ziarna.
Tabu Search Taillarda dla QAP • Dla „lepszej” populacji stosujemy TS Erica Taillarda dla QAP (ten krok można zrównoleglić). • Heurystyka oblicza możliwe zamiany lokacji 2 firm. • Wykorzystuje prostą listę tabu (ruchy niedozwolone). • Aby zmusić algorytm do przeszukiwania niezbadanych fragmentów przestrzeni, wymieniane są ze sobą tylko te elementy, które nie były wymieniane przez kilka ostatnich iteracji (na podstawie listy tabu). • Jeżeli jednak, zabroniona zmiana doprowadza do wyprodukowania najlepszego nieznanego do tej pory przez algorytm rozwiązania, to zamiana się dokonuje, mimo obecności na liście tabu (kryterium aspiracji).
Krzyżowanie path-relinking • Wszystkie rozwiązania ze zbioru łączymy w pary (metoda każdy z każdym). • Stosujemy metodę path-relinking (można zrównoleglić). • Wektorami wiodącymi, zostają te, które są lepsze w swojej parze (lepiej optymalizują f. celu), np.: x = (8, 3, 4, 2, 1, 7, 5, 6) x'= (5, 3, 2, 1, 8, 7, 4, 6) zakładamy, że wiodący jest x. • x(1) i x'(1) nie odpowiadają sobie. W związku z tym zamiana jaką rozważamy (5, 8). Zamiana jest dokonywana jeżeli nie pogorszy wartości f. celu. Zakładając, że nie, potomek w tym kroku wygląda następująco: c = (8, 3, 2, 1, 5, 7, 4, 6) • Pozycje x(2) i x'(2) są takie same, więc nie ma zamiany. • Pozycje x(3) i x'(3) powodują rozważenie zamiany (4, 2). Załóżmy, że pogorszy ona wartość f. celu, więc nie zostanie dokonana. • Pozycje x(4) i x'(4) różnią się ale zmiana nie jest rozważana, bo dotyczy 2, która raz była rozważana (algorytm nie robi zmian wstecz), itd… aż do końca permutacji.
Wybór rozwiązań • R1 – zbiór b1 najlepszych rozwiązań. • R2 – zbiór b2 najbardziej zróżnicowanych rozwiązań. • Nowe rozwiązanie wchodzi do R1 jeżeli jest lepsze niż najgorsze z tego zbioru i nie ma jego kopii ani w R1 ani w R2. • Nowe rozwiązanie wchodzi do R2 jeżeli jest bardziej zróżnicowane niż najmniej zróżnicowane z tego zbioru i nie ma jego kopii ani w R1 ani w R2. • Różnorodność rozwiązania x jest zdefiniowana jako dystans między tym rozwiązaniem, a wszystkimi rozwiązaniami z R1.
Wyniki dla problemów z QAPLIB • Pomysł: James, Rego, Glover (2005)
Podsumowanie • Tabu Search to proste, ale potężne i ogólne narzędzie, które można stosować do trudnych problemów kombinatorycznych. • Sama heurystyka nie spowoduje, że algorytm będzie znajdował dobre rozwiązania. Do rozwiązywania danego problemu konieczna jest wiedza specyficzna na temat zadania, wybór przestrzeni przeszukiwania, umiejętność zdefiniowania relacji sąsiedztwa i doświadczenie w projektowaniu algorytmów oraz w doborze ich parametrów. • Tabu search powoduje dosyć silną zbieżność do ekstremum (być może tylko lokalnego) już na samym początku działania algorytmu, ważna jest więc umiejętność dywersyfikacji i zmiany trajektorii przeszukiwania, by umiejętnie pokierować tym silnym narzędziem.
KONIEC Dziękuję za uwagę !