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.