Niszowanie - omówienie mechanizmu oraz kilku przyk adowych

Transkrypt

Niszowanie - omówienie mechanizmu oraz kilku przyk adowych
Niszowanie
Niszowanie - omówienie mechanizmu oraz kilku
przykładowych algorytmów
Krzysztof Węzowski
Abstract. W algorytmach genetycznych często dochodzi do zbyt
wczesnego zbiegania się populacji w jednym optimum. Aby zapobiec
takiej sytuacji oraz aby znaleźć wszystkie optima funkcji stosuje się
techniki niszowania. W tej pracy przedstawiono zasadę działania kilku
podstawowych technik niszowania (w tym sharing, model ze ściskiem)
oraz ich ograniczenia.
1. Wstęp
W algorytmach genetycznych często powstaje potrzeba znalezienie wielu
alternatywnych rozwiązań danego zadania. W klasycznym algorytmie genetycznym
(tj. algorytmie, w którym nie użyto mechanizmów takich jak niszowanie) osobniki
zbyt wcześnie zbiegają się do tego
samego optimum. Dodatkowo
osobniki
s łabsze
są
dyskryminowane. W wyniku
działania klasycznego algorytmu
genetycznego otrzymujemy jedno
rozwiązanie danego problemu.
Mechanizm niszowania ma za
zadanie pomóc w odnalezieniu
większej ilości optimów. W
wyniku
działania
algorytmu
genetycznego, w którym użyto
niszowania otrzymujemy zbiór Rys. 1. W wyniku działania AG osobniki skupiły się w
rozwiązań.
jednym optimum.
2. Naturalne pochodzenie mechanizmu niszowania
Obserwując naturę można zauważyć, że w procesie selekcji nie powstał jeden
najlepiej przystosowany “super gatunek”, lecz powsta ły różnorodne gatunki. Każdy z
nich jest najlepiej dopasowany do aktualnie panujących warunków w danym
środowisku. Owe środowisko nazywane jest niszą ekologiczną. Wg encyklopedii
2
Krzysztof Węzowski
PWN nisza ekologiczna to ogół wszystkich warunków środowiskowych, w których
może potencjalnie żyć i rozwijać się populacja danego gatunku. Natura dopuszcza
przetrwanie osobników, które są s łabsze od pozostałych. Pozwala to na wprowadzenie
większej różnorodności populacji oraz lepsze przystosowanie się danej populacji do
nowych warunków. Dodatkowo zróżnicowanie osobników na danym terytorium
powoduje różne sposoby czerpania zasobów. Jednocześnie może istnieć wiele
różnych optymalnych rozwiązań.
Rys. 2. Zróżnicowanie gatunków w różnych niszach ekologicznych.
Źród ło: http://www.brooklyn.cuny.edu/bc/ahp/LAD/C21/C21_Speciation.html
3. Zastosowanie mechanizmu niszowania
Jak już zosta ło wspomniane wcześniej, mechanizm niszowania ma za zadanie
wyłonić wiele alternatywnych rozwiązań danego zadania. Algorytmy niszowania
stosuje się, gdy interesuje nas nie tylko jedno, w miarę możliwości, optymalne
rozwiązanie, lecz wtedy gdy chcemy uzyskać wiele, równoważnych rozwiązań lub po
prostu potrzebujemy uzyskać wszystkie optima. Wyniki działania algorytmu
genetycznego z niszowaniem często są w stanie dać nam rozwiązania, których
klasyczny algorytm genetyczny nigdy by nie znalazł.
Aby pokazać potrzebę stosowania mechanizmu niszowania wyobraźmy sobie
problem komiwojażera.
Komiwojażer musi odwiedzić wszystkie miasta na swojej drodze i każde miasto
powinno zostać odwiedzone tylko raz. Klasyczny algorytm genetyczny znajdzie jedną
drogę prowadząca przez wszystkie miasta. Tymczasem może istnieć wiele innych,
równie dobrych dróg. Dzięki niszowaniu otrzymamy kilka alternatywnych tras,
spośród których będziemy mogli wybrać tę, która będzie dla nas pod jakimś
względem najlepsza.
Niszowanie - omówienie mechanizmu oraz kilku przyk ładowych algorytmów
3
Rys. 3. Gatunki wytworzyły się w równoważnych optimach funkcji.
Inny przyk ład. Powiedzmy, że chcemy kupić komputer i mamy na to przeznaczoną
jakąś konkretną kwotę pieniędzy, np. 3000 zł. W takiej cenie sklepy oferują wiele
różnych konfiguracji sprzętowych. Jeden zestaw może mieć dużą ilość pamięci
operacyjnej, ale za to ma mały dysk twardy, inny zestaw ma duży dysk twardy, ale za
to wolny procesor. Spośród wszystkich oferowanych komputerów my chcemy
otrzymać te o najlepszych parametrach i spośród nich wybrać ten najbardziej nas
satysfakcjonujący. Używając klasycznego algorytmu genetycznego dostaniemy jeden
komputer. Dodając do AG mechanizm niszowania otrzymujemy w wyniku wiele
zestawów spełniających nasze kryterium .
1
4. Przykłady algorytmów niszowania
Znanych jest wiele algorytmów niszowania występujących w algorytmach
genetycznych. Dokładne i wszechstronne opracowanie różnych technik można
znaleźć w [1]. Poniżej przedstawię kilka popularnych technik, w tym np. sharing oraz
model ze ściskiem (crowding).
4.1 Metoda preselekcji
Mechanizm niszowania jako pierwszy w swoich pracach próbował zastosować
Cavicchio (1970). Obecnie algorytm ten nazywa się niszopodobnym, ponieważ nie
działa on tak jak naprawdę się to dzieje w naturze. Aby utrzymać różnorodność
populacji Cavicchio wpadł na pomysł, aby nowe osobniki zastępowały najbardziej
podobne do siebie stare osobniki. Jako podobieństwo osobników przyjął on bliskie
pokrewieństwo. Czyli potomek zastępuje bardziej podobnego do siebie rodzica,
oczywiście pod warunkiem, że potomek jest lepiej przystosowany. Taka technika
okaza ła się mało skuteczna, dla tego praktycznie się jej nie stosuje.
1
Do rozwiązywania problemów, gdzie istnieje wiele aspektów, względem których optymalizujemy
rozwiązanie, stosuje się również optymalizację wielokryterialną. W tych przykładach jednak chodzi nam
o otrzymanie zbioru rozwiązań.
4
Krzysztof Węzowski
4.2 Model ze ściskiem (crowding)
Metoda preselekcji zosta ła usprawniona przez De Jong (1975) w postaci modelu ze
ściskiem. W modelu tym stosuje się populacje mieszane, czyli takie, w których tylko
część osobników może w danym pokoleniu rozmnażać się i umiera. Podobnie jak w
podejściu Cavicchiego, każdy nowy osobnik zastępuje najbardziej podobnego do
siebie. Jest on wybierany spośród małej próbki z istniejącej populacji. Algorytm
działa w taki sposób, że spośród całej populacji wybieranych jest GG (generation
gap) osobników, z których tworzone są osobniki potomne (poprzez krzyżowanie i
mutacje). Następnie wybieranych jest GG*n osobników z istniejącej populacji do
zastąpienia przez nowych potomków. Dla każdego z nowych potomków wybierana
jest podgrupa o wielkości CF (crowding factor – wspó łczynnik ścisku). Nowy
potomek zastępuje najbardziej podobnego osobnika spośród podgrupy. De Jong w
swoich pierwszych pracach jako miary podobieństwa osobników używał odległości
Hamminga pomiędzy binarnymi reprezentacjami osobników.
4.3 Sharing
Jeszcze inne podejście do niszowania zaproponował Holland (1975) – tzw. sharing.
Aby wyjaśnić działanie swojej metody pos łużył się analogią do dwuramiennego
bandyty.
Rys. 4. Ilustracja dwuramiennego bandyty użytego do objaśnienia metody niszowania
zaproponowanej przez Hollanda.
Maszyna ma dwa ramiona. Średnia wygrana przy pociąganiu za pierwsze ramię jest
różna niż przy pociąganiu za drugie ramię. Powiedzmy, że przy pociągnięciu za
pierwsze ramie średnia wygrana jest większa niż przy drugim ramieniu. Mamy
również pewną populację osobników, które oczywiście będą chcia ły wybrać ramie,
które daje wyższą wygraną. Holland doda ł jeszcze jedno założenie. Otóż wygrana z
danego ramienia jest dzielona pośród wszystkich, którzy wybrali dane ramię. Jeśli
teraz do ramienia pierwszego (gdzie średnia wygrana jest dużo wyższa niż dla
drugiego ramienia) ustawi się dużo osobników, to każdy z nich tak naprawdę dostanie
ma łą wygraną.
Dla przykładu powiedzmy, że średnia wygrana dla pierwszego ramienia p1 = 100 zł,
natomiast średnia wygrana dla drugiego ramienia p2 = 10 zł.
Wielkość populacji n = 20. Jeśli teraz jeden z osobników wybra ł by ramię drugie,
podczas gdy pozostałe 19 osobników wybrałoby ramię pierwsze, to ten pierwszy
osobnik wygra łby 10/1 czyli 10zł, podczas gdy reszta wygrałaby 100/19 = 5.26zł.
Niszowanie - omówienie mechanizmu oraz kilku przyk ładowych algorytmów
5
Osobniki z pierwszego ramienia mają dużą motywację, aby zmienić ramię. W
ostateczności populacja dąży do równowagi, w której osobniki nie mają powodu, aby
zmieniać ramię.
Praktyczna metoda zosta ła zaproponowana przez Goldberga i Richardsona (1987).
Wprowadzili oni funkcję współudziału (sharing function), która określa sąsiedztwo i
stopień wspó łudziału dla każdego osobnika w populacji. Wartość przystosowania
danego osobnika obliczamy w następujący sposób:
sh( d ij ) = 1 −
d ij
σ
, dla
d ij < σ
(0)
share
share
sh( d ij ) = 0 w przeciwnym przypadku
Gdzie
d ij - jest miarą podobieństwa dwóch osobników,
σ
share
- jest parametrem określającym szerokość niszy.
ci =
Gdzie
m
∑
j= 1
sh(d ij )
(0)
m - jest ilością osobników w populacji.
Qi' =
Gdzie
(0)
Qi
ci
(0)
Qi' - jest zmodyfikowaną wartością funkcji przystosowania,
Qi - jest wartością funkcji przystosowania otrzymaną z pierwotnej funkcji
przystosowania.
Wracając do przykładu dwuramiennego bandyty każde z ramion stanowi pewną niszę
(optimum). Średnia wygrana jest wartością funkcji w tym optimum. Przystosowanie
osobnika jest modyfikowane w zależności od ilości wszystkich osobników w
sąsiedztwie (w niszy). Im więcej osobników znajduje się w pobliżu pewnego
optimum, tym mniejsze jest ich przystosowanie. W powyższym przyk ładzie wartość
funkcji przystosowania osobników w pierwszej niszy (przy pierwszym ramieniu)
wynosi 5.26, natomiast w drugiej niszy 10. Osobniki z pierwszej niszy mają mniejszą
szansę na dostanie się do kolejnego pokolenia, a więc będzie ich mniej, natomiast
osobników z drugiej niszy będzie więcej.
4.4 Ograniczenia technik niszowania
Powyższe techniki niszowania polegają na modyfikacji funkcji przystosowania.
Podejście takie powoduje wiele problemów. Jeśli promień dzia łania modyfikacji
6
Krzysztof Węzowski
będzie zbyt duży, może spowodować sytuację, w której niektóre optima zostaną
pominięte. Jeśli natomiast promień dzia łania modyfikacji będzie zbyt ma ły, będziemy
wielokrotnie przeszukiwać te same nisze otrzymując większą ilość optimów, niż jest
to w rzeczywistości.
Rys. 5. Ilustracja modyfikacji funkcji przystosowania.
W każdej z powyższych technik niszowania stosuje się tzw. miarę podobieństwa
osobników (odleg łość osobników, różnica między osobnikami). De Jong w swoich
pierwszych pracach stosował odleg łość Hamminga pomiędzy binarnymi
reprezentacjami osobników. Takie podejście daje dobre rezultaty w przypadku
binarnego kodowania (operuje na genotypie). Jednak często wykorzystuje się
specyficzne kodowanie zależne od problemu. Np. dla osobników kodowanych
liczbami rzeczywistymi dobrą miarą może okazać się odległość euklidesowa
określona następującym wzorem:
differenceeuc =
Gdzie
n
∑
i= 1
( pi − si ) 2
(0)
P = ( p1 ,..., pn ) oraz S = ( s1 ,..., sn ) są wektorami przedstawiającymi
osobnika.
A co w przypadku np. problemu komiwojażera? Odleg łość Hamminga raczej nie
będzie reprezentowa ła podobieństwa dwóch dróg, podobnie z odległością
euklidesową. Aby wyznaczyć miarę podobieństwa w takim problemie potrzebna jest
wiedza dziedzinowa (miara operująca na fenotypie). Można zauważyć, że dwie drogi
są do siebie podobne, jeśli prowadzą przez dużą ilość tych samych odcinków dróg
pomiędzy miastami. Tak więc uzyskujemy np. taką miarę podobieństwa:
differencetsp = 1 −
Gdzie
shareddEdges
numberOfCities
sharedEdges - jest ilością wspólnych krawędzi dla obu osobników,
numberOfCities - jest ilością miast (wierzchołków) w grafie.
(0)
Niszowanie - omówienie mechanizmu oraz kilku przyk ładowych algorytmów
7
Widać, że tak określona miara podobieństwa oddaje rzeczywiste podobieństwo
pomiędzy dwoma drogami.
Rys. 6. Porównanie metody crowding w przypadku miary podobieństwa osobników operującej
na fenotypie oraz genotypie. Źród ło: [3].
Z powyższych wykresów wynika, że w zależności od funkcji (rozpatrywanego
problemu) różne miary podobieństwa dają różne wyniki. Raz lepsza jest miara
podobieństwa operująca na genotypie, innym razem operująca na fenotypie.
Jak widać w powyższych technikach niszowania często istnieje potrzeba
wykorzystania wiedzy dziedzinowej danego problemu, aby określić parametry
algorytmu, co nie zawsze jest proste.
Istnieją również techniki, które są pozbawione powyższych minusów. Jest to np.
Przestrzenny rozproszony algorytm genetyczny (The Spacial Dispersed GA, sdGA)
szerzej opisany w [3] lub Metoda rekombinacyjnego symulowanego odprężania
(PRSA) zaproponowana przez Mahfouda i Goldberga w [1].
8
Krzysztof Węzowski
5. Podsumowanie
W wielu problemach optymalizacji potrzebujemy uzyskać zbiór rozwiązań. Często
jest to warunek poprawnego rozwiązania zadania. Algorytmy niszowania pozwalają
osiągnąć ten cel. W wyniku dzia łania algorytmu genetycznego, w którym użyto
mechanizmu niszowania otrzymujemy zbiór alternatywnych, często równoważnych
rozwiązań. Niszowanie pozwala upewnić się, że algorytm w sposób bardziej pełny
przeszukuje przestrzeń rozwiązań, a otrzymane wyniki są mocno zróżnicowane.
Również w wielu problemach, gdzie wymagane jest jedno rozwiązanie, użycie
mechanizmu niszowania pozwala osiągnąć lepsze rezultaty. Spowodowane jest to
właśnie większym zróżnicowaniem populacji i, co za tym idzie, szerszym
przeszukiwaniem przestrzeni rozwiązań.
Dla wielu technik niszowania potrzebna jest wiedza a priori o pewnych parametrach,
co utrudnia i ogranicza ich zastosowania do konkretnych problemów. W ostatnich
latach zaproponowano kilka podejść, w których wyeliminowano te problemy.
Warto wspomnieć, że niszowanie zostało zaadoptowane również w algorytmach
mrówkowych. Dotychczasowe Algorytmy mrówkowe potrafi ły znaleźć jedno
optymalne rozwiązanie (lub bliskie). Z użyciem technik niszowania, podobnie jak w
AG, algorytm mrówkowy jest w stanie znaleźć wszystkie optima. Zmodyfikowane
techniki niszowania dla algorytmów mrówkowych można znaleźć w [2].
6. Bibliografia
[1]S. W. Mahfoud: Niching methods for genetic algorithms. Phd Thesis, University of
Illinois , 1995, s. 62-87.
[2]D. Angus: Niching for ant colony optimization. Technical Report: TR006
Swinburne University of Technology, 2006, s. 5-6.
[3]G. Dick: An explicit spacial model for niching in genetic algorithms. University of
Otago, 2003, s. 1-4.
[4]Z. Kowalczuk, T. Białaszewski: Niching mechanisms in evolutionary
computations. Gdańsk University of Technology, 2006, s 65-68.

Podobne dokumenty