Algorytmy ewolucyjne `
Wstęp Czym są algorytmy ewolucyjne? Rodzaje algorytmów ewolucyjnych Algorytmy genetyczne Strategie ewolucyjne Programowanie genetyczne
Zarys historyczny Alan Turing, 1950 Nils Aall Barricelli, Pierwsza komputerowa symulacja ewolucji, 1954 Bienert, Rechenberg, Schwefel, 1960, Strategie ewolucyjne i zastosowanie w praktyce J. Holland, Książka popularyzująca algorytmy ewolucyjne,1960 r. Fogel, lata 80-te, Współczesna wersja programowania ewolucyjnego Od początku lat 90-tych algorytmy genetyczne są coraz częściej stosowane w praktyce
Podstawowe pojęcia Osobnik Populacja Fenotyp Genotyp Chromosom Kodowanie rozwiązań Funkcja przystosowania - Rozwiązanie zadania - Zbiór rozwiązań branych pod uwagę - Parametry, cechy rozwiązania - Ciąg bitów - Miejsce przechowywania rozwiązania - Sposób kodowanie (np. ciąg bitów) - Fitess, funkcja celu. Wskaźnik poprawności, stosowalności
Algorytm genetyczny - przebieg Genotypy osobników z populacji ulegają modyfikacji podczas rozmnażania. Zmiany te wynikają z: Mutacji Mieszania Oceniamy przystosowanie nowopowstałych osobników Czym lepiej przystosowany jest osobnik, tym większe ma prawdopodobieństwo na wzięcie udziało w tworzeniu następnego pokolenia. Osobniki z najmniejszym przystosowaniem giną
Algorytm genetyczny - przykład Problem: Znaleźć maksimum funkcji rzeczywistej f(x) na pewnym zboiorze X.
Algorytm genetyczny - przykład 1. Wstęp kodowanie problemu 1. Wszystkie potencjalne rozwiązania to np. binarne przedstawienie liczby long 2. f(x) w tym przypadku może być wskaźnikiem przystosowania rozwiązania 2. Ustalamy wielkość populacji N, a następnie losujemy N genotypów (osobników) 3. Ustalamy ile procent bitów ( genów ) w populacji ulega mutacji w jednym pokoleniu (najczęściej od 0.1% do 0.5%). Ustalamy też prawdopodobieństwo skrzyżowania dwóch osobników (najczęściej od 20% do 80%) 4. Sprawdzamy dostosowanie naszych osobników przy użyciu funkcji celu. Oceniamy fenotyp, czyli zinterpretowany (dla danego problemu) kod genetyczny
Algorytm genetyczny - przykład 5. Selekcja osobników na podstawie wskaźnika przystosowania. Z obecniej populacji N osobników losujemy N osobników nowej populacji stosując tzw. Roulette Selection, gdzie prawdopodobieństwo wylosowania każdego z osobników: 6. Nowa populacja staje się populacją bierzącą i wracamy do punktu 3.
Algorytm genetyczny podsumowanie Zalety Algorytm jest uniwersalny Nie musimy wiedzieć co optymalizujemy (metoda czarno skrzynkowa) Wystarczy nawet selekcja turniejowa Algorytm niedeterministyczny, więc możemy próbować optymalizować wielokrotnie Stosunkowo duża szybkość działania
Algorytm genetyczny podsumowanie Wady Uniwersalność mniejsza skuteczność niż alg. Specjalistyczne Wolniejsza od metod zachłannych Małe prawdopodobieństwo znalezienia rozwiązania optymalnego Wszystko zależy od dobranej funkcji fitness
Algorytm genetyczny przykłady Evolved antenna
Algorytm genetyczny przykłady Evolved Virtual Creatures, Karl Sims, 1994 Starfish Self Modeling Robot
Strategie ewolucyjne Zmienna długość kodu genetycznego (liczby zmiennoprzecinkowe) Opiera się na mutacji, a nie na rekombinacji Autoadaptacja możliwość zmiany parametrów w czasie W prostych strategiach: tzw. Reguła 1/5 sukcesów Rechenberga Możliwe kodowanie parametrów w osobniku
Strategie ewolucyjne problem Maksymilizacja funkjci f: R n -> R na zadanym przedziale [a 1, b 1 ] x x [a n, b n ]
Strategie ewolucyjne Algorytm ES(1 + 1) Populacja: 1 Kolejne populacje wybierane są ze zbioru rodziców (rodzica) i zbioru dzieci (dziecka) Mechanizm adaptacji: Reguła 1/5 sukcesów Rechenberga
Strategie ewolucyjne Algorytm ES(1 + 1) EVOLUTION-STRATEGY(F, σ0, θ1, θ2) 1. σ σ0; 2. x RANDOM-INDIVIDUAL(); 3. INDIVIDUAL-EVALUATION(x, F); 4. while not TERMINATION-CONDITION(σ) 5. do 6. y MUTATION(x, σ); 7. INDIVIDUAL-EVALUATION(y, F); 8. if F(x) < F(y) 9. then 10. x y; 11. SIGMA-UPDATING(σ, θ1, θ2);
Strategie ewolucyjne Algorytm ES(1 + 1) Mutacja Osobnik x = (x 1, x 2,, x d ) R d Z osobnika x tworzymy nowego osobnika y = (y 1, y 2,, y d ) R d y i = x i + ε i dla i = 1, 2,, d gdzie ε i jest liczbą rzeczywistą wygenerowaną losowo z rozkładen normalnym N(0, σ 2 ) o średniej 0 i wariacji σ 2. Parametr σ określa zasięg mutacji. Jest on modyfikowany podczas działania algorytmu (Sigma-Updating, Reguła 1/5 sukcesów Rechenberga)
Strategie ewolucyjne Algorytm ES(1 + 1) Sigma-Updating Aktualizuje σ przy użyciu reguły 1/5 sukcesów Rechenberga z parametrami θ 1 i θ 2. Parametry te można dowolnie dobrać, ale doświadczenie pokazało, że najlepsze uzyskuje się dla θ 1 = 1 0.82 1.22 i θ 2 = 0.82
Strategie ewolucyjne Algorytm ES(1 + 1) Reguła 1/5 sukcesów Rechenberga Jeżeli prez k iteracji liczba mutacji zakończonych sukcesem była większa niż 1/5 ogólnej liczby wykonanych mutacji, to zasięg mutacji jest zwiększany σ θ 1 σ dla pewnego θ 1 > 1 Jeżeli przez ostatnie k iteracji liczba mitacji zakończonych sukscesem była mniejsza niż 1/5 ogólnej liczby wykonanych mutacji, to zasięg mutacji jest zmienszany σ θ 2 σ dla pewnego θ 2 < 1 W przeciwnym wypadku, zasięg mutacji nie zmienia się
Strategie ewolucyjne Algorytm ES(1 + 1) Wrażliwość na minima lokalne funkcji Użyta metoda autoadaptacji może prowadzić do przedwczesnej zbieżności Rozszerzenie ES(μ + 1)
Strategie ewolucyjne Algorytm ES(1 + 1) Przykład zastosowania Optymlizacja dyszy dwufazowej (Hans-Paul Schwefel) Wydajność ok. 55% Wydajność ok. 80%
Strategie ewolucyjne Algorytmy ES(μ + λ) i ES(μ, λ) ES(μ + λ) Populacja μ osobników generuje λ potomków Kolejne pokolenie (populację) wybieramy z sumy zbiorów rodziców i dzieci, czyli z μ + λ osobników ES(μ, λ) Populacja μ osobników generuje λ potomków Kolejne pokolenie (populację) wybieramy ze zbioru potomków, czyli z λ osobników Mechaniz autoadaptacji oparty o kodowanie parametrów ewolucyjnych w pojedynczym osobniku Zazwyczaj μ = 20 i λ = 7μ
Strategie ewolucyjne Algorytmy ES(μ + λ) i ES(μ, λ) Obserwacja W początkowej fazie działania algorytmu pożyteczne są duże mutacje Małe mutacje są korzystniejsze w końcowej fazie algorytmu Możliwy jest przypadek, gdzie kożystna wielkość mutacji będzie się zmieniać naprzemiennie: duża, mała, duża, mała itd.
Strategie ewolucyjne Algorytmy ES(μ + λ) i ES(μ, λ) Wnioski Algorytm musi sam dostosowywać (optymalizować) wielkość mutacji potrzebnej w danym momencie na podstawie obserwacji (np. przy użyciu reguły 1/5 sukcesów) Każdy osobnik powinien przechowywać własną wielkość mutacji
Strategie ewolucyjne Algorytmy ES(μ + λ) i ES(μ, λ) Osobnik w populacji ma postać: y = [x 1, x 2,, x n, σ] gdzie x 1, x 2,, x n R n
Strategie ewolucyjne Algorytmy ES(μ + λ) i ES(μ, λ) Mutacja osobnika y tworzy nowego osobnika y y = x 1, x 2,, x n, σ y = x 1, x 2,, x n, σ Obliczenie następnej wielkości (kroku) mutacji σ σ = σ exp τ 0 N 0, 1 if σ == ε 0 σ = ε 0 Następnie dla każdego x i : x i = x i + N i (0, σ ) Parametr τ 0 to parametr szybkości uczenia τ 0 ~ 1 n (Schwefal, 1995)
Strategie ewolucyjne Algorytmy ES(μ + λ) i ES(μ, λ) Każdy gen ma swój własny krok wielkość mutacji y = x 1, x 2,, x n, σ 1, σ 2,, σ n y = x 1, x 2,, x n, σ 1, σ 2,, σ n Uaktualnienie kroku mutacji σ i = σ i exp τ 0 N 0, 1 + τ 1 N i 0,1 Proponowane paramerty: τ 0 ~ 1 2n τ 1 ~ 1 2 n Dla każdego x i : x i = x i + N i (0, σ i )
Strategie ewolucyjne Algorytmy ES(μ + λ) i ES(μ, λ) Problemy: W alkorytmie ES(μ + λ) może dojść do utworzenia niezastępowalnego osobnika ES(μ, λ) dla funkcji wielomodalnych daje zazwyczaj lepsze wyniki
Strategie ewolucyjne Algorytmy ES(μ/ρ + λ) i ES(μ/ρ, λ) Rekombinacja tworzenie dzieci 1. Wybieramy ρ osobników z μ rodziców 2. Tworzymy potomka poprzez rekombinacje chromosomów wybranych ρ rodziców 3. Poddajemu mutacji nowopowstałe dziecko i dodajemy je do populacji dzieci Takich potomków tworzymy λ. Algorytmy z rekombinacją to: ES(μ/ρ + λ) i ES(μ/ρ, λ)
Strategie ewolucyjne Algorytmy ES(μ/ρ + λ) i ES(μ/ρ, λ) Przy rekombinacji wartości genów nowego osobnika obliczamy: r j x j = x j gdzie r j jest wylosowanym numerem rodzica Wielkość mutacji obliczamy w sposób: ρ σ j = 1 ρ i=1 σ j i
Programowanie genetyczne - Wstęp Programowanie genetyczne to zautomatyzowana metoda mająca na celu tworzenie programów komputerowych w oparciu o ogólną definicję problemu. (Wikipedia)
Programowanie genetyczne - Wstęp Po raz pierwszy przedstawone w pracy Nichaela L. Cramera w 1985 r. Spopularyzowane przez Johna Kozę w 1992 r. (Genetic Programming: On the Programming of Computers by Means of Natural Selection)
Programowanie genetyczne - Wstęp Tzw. Drzewa składowe (parse tree) reprezentują program Wymaga potężnych zasobów obliczeniowych Rozmiar populacji to często miliony osobników Populacja programów Tworzenie potomków (nowe programy) Ewolucja (testowanie i selekcja)
Programowanie genetyczne Parse tree Reprezentacja wyrażenia logicznego x y x z ( z (w v)
Programowanie genetyczne Parse tree Reprezentacja kodu 1. i = 1; 2. while ( i < 20 ) 3. { 4. i = i + 1 5. } = ; while i 1 < i 20 = i + i 1