Transcript ppt

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 mildest descent 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).
Ograniczenia przestrzeni przeszukiwania
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
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 – schemat ogólny algorytmu
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).
Wyniki dla problemów z QAPLIB
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.
2.
3.
4.
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).
Stosujemy TS.
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.
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ę !