STUDENCKA PRACOWNIA ALGORYTMÓW EWOLUCYJNYCH Tomasz Kupczyk, Tomasz Urbański Programowanie genetyczne, gra SNAKE II UWr Wrocław 2009
Spis treści 1. Wstęp 3 1.1. Ogólny opis..................................... 3 1.2. Informacje dla użytkowników........................... 3 2. Charakterystyka systemu 4 2.1. Schematy ewolucji................................. 4 2.2. Zastosowane operatory genetyczne........................ 4 2.2..1 MaxReproduction............................. 4 2.2..2 AdaptationCrossover............................ 5 2.2..3 MultipleMutation............................. 5 2.2..4 ClassicCrossover.............................. 5 2.2..5 ClassicMutation.............................. 5 2.2..6 ClassicReproduction............................ 5 3. Wyniki 5 2
1. Wstęp 1.1. Ogólny opis Projekt jest próbą wygenerowania w miarę dobrze grającego programu w popularną grę Wąż przy pomocy algorytmów ewolucyjnych. Reguły gry Wąż są bardzo proste. Sterujemy osobnikiem złożonym z wielu segmentów o tej samej wielkości połączonych razem ze sobą. W grze poruszamy się w trzech możliwych kierunkach: lewo, prawo, prosto (w zależności od orientacji głowy węża). W każdym momencie na planszy znajduje się dokładnie jeden kawałek jedzenia. Gdy wąż go zjada jego ogon wydłuża się o jeden segment, a nowy kawałek jedzenia pojawia się w innym losowym miejscu. Celem gry jest zjedzenie jak najwięcej kawałków jedzenia. Do stworzenia osobnika wykorzystujemy programowanie genetyczne. 1.2. Informacje dla użytkowników Program zrealizowany jest jako applet Java. Można w nim ustalić wielkość populacji oraz liczbę generacji, czyli dane wejściowe dla algorytmu ewolucyjnego. Interfejs graficzny zawiera cztery podstawowe przyciski: Rozpocznji ewolucje, Zakończ ewolucje, Rozpocznji symulacje, Zakoncz Symulacje. 3
2. Charakterystyka systemu 2.1. Schematy ewolucji Przez schemat ewolucji rozumiem sposób tworzenia populacji potomków z populacji rodzicielskiej. Niech P t oznacza populację rodziców w t-tej generacji. SCHEMAT PIERWSZY - pierwszy zaimplementowany schemat nie opiera się na klasycznym schemacie ewolucji w programowaniu genetycznym. Występują w nim trzy operatory, które będą opisane później. Działa on następująco: Wybierz najlepszego osobnika w populacji P t i zastąp nim pewien ustalony ułamek populacji P t (MaxReproduction). Wybierz m-krotnie po dwóch różnych osobników (metodą ruletki) z P t, skrzyżuj ich i zastąp ich wynikłymi z krzyżowania osobnikami (AdaptationCrossover). Wybierz jednego osobnika (metodą ruletki) z P t, usuń jego dowolne poddrzewo i zastąp je losowym poddrzewem. Umieść osobnika spowrotem w P t (MultipleMutation). SCHEMAT DRUGI - opiera się na klasycznym schemacie programowania genetycznego. Występują również trzy operatory, które zostaną opisane później. Z każdym operatorem związane jest prawdopodobieństwo p 1, p 2 oraz p 3. W każdej generacji każdy z operatorów jest stosowany zgodnie z jednym z powyższych prawdopodobieństw. Schemat działa następująco: Stwórz pustą populację potomków C t. Dopóki liczba osobników w C t nie jest równa liczbie osobników w P t wykonuj poniższy krok. Jeżeli udał się (z ppb. p1) ClassicCrossover, to wybierz dwa osobniki z P t metodą ruletki. Skrzyżuj je i wstaw dwóch potomków do C t. Jeżeli udał się (z ppb. p2) ClassicMutation, to wybierz osobnika z P t metodą ruletki. Zamień jest dowolne losowe poddrzewo na losowe drzewo. Wstaw tak zmutowanego osobnika do C t. Jeżeli udał się (z ppb. p3) ClassicReproduction, to wybierz osobnika z P t metodą ruletki. Wstaw tego osobnika do C t. Zastąp P t przez C t. 2.2. Zastosowane operatory genetyczne 2.2..1 MaxReproduction Operator ten pobiera trzy parametry: populację P, adaptację A oraz p [0, 1). Parametr p oznacza jaki procent populacji P należy zastąpić najlepszym osobnikiem w populacji P. Operator ten z początku znacznie polepszył wyniki, ale później okazało się, że dość szybko prowadzi on do dominacji najlepszego osobnika w populacji, a co za tym idzie do skupienia się algorytmu w obrębie tego osobnika i słabego rozproszenia poszukiwań. 2.2..2 AdaptationCrossover Operator ten pobiera trzy parametry: populację P, adaptację A oraz nieujemną liczbą całkowitą times, która oznacza ile razy mamy powtórzyć działanie operatora. Działaniem tym jest 4
wylosowanie dwóch osobników metodą ruletki i skrzyżowanie ich. Pierwotne osobniki w P są zastępowane przez swoje dzieci. Bardzo trudno jest określić czy operator ten ma pozytywny czy negatywny wpływ na działanie algorytmu. Może się zdarzyć tak, że dwa dobre programy po tej operacji będą miały mierne wyniki, ale również może zajść sytuacja zupełnie odwrotna. Napewno operator ten jest dobry pod względem rozszerzenia obszaru poszukiwań w obrębie tych najlepszych osobników. Operator ten przypomina trochę przeszukiwanie lokalne, gdyż po skrzyżowaniu najprawdopodobniej dostaniemy osobników bliskich swoim rodzicom. 2.2..3 MultipleMutation Operator ten pobiera trzy parametry: populację P, adaptację A oraz p [0, 1]. Parametr p jest szansą na zastosowanie tego operatora. Operator ten losuje osobnika metodą ruletki, następnie losuje jego losowe poddrzewo i zastępuje je losowym drzewem o losowej wielkości. Pierwotny osobnik jest zastępowany przez zmutowanego osobnika. Głównym zadaniem tego operatora jest rozproszenie przeszukiwań. 2.2..4 ClassicCrossover Działa tak samo jak AdaptationCrossover z tą różnicą, że pobiera dodatkowy parametr, którym jest nowa populacja. Skrzyżowane osobniki nie zastępują swoich rodziców w starej populacji, lecz trafiają do nowej. 2.2..5 ClassicMutation Działa tak samo jak MultipleMutation z tą różnicą, że pobiera dodatkowy parametr, którym jest nowa populacja. Zmutowany osobnik nie zastępuje swojego rodzica, lecz trafia do nowej populacji. 2.2..6 ClassicReproduction Metodą ruletki wybiera osobnika z populacji rodzicielskiej. Pobiera dodatkowy parametr, którym jest nowa populacja. Wybrany osobnik trafia do nowej populacji, populacja rodzicielska pozostaje bez zmian. 3. Wyniki Poniżej przedstawiam dwa wykresy. Obrazują one ilość zjedzonych kawałków jedzenia w zależności od prawdopodobieństwa wyboru operatorów reprodukcji oraz krzyżowania. 5
Rysunek 1: Ewolucja ze zwiększoną mutacją. Rysunek 2: Ewolucja ze zmniejszoną mutacją. 6