Preview only show first 10 pages with watermark. For full document please download

Algorytmy Ewolucyjne

   EMBED


Share

Transcript

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. 2. Wszystkie potencjalne rozwiązania to np. binarne przedstawienie liczby long 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: Rn -> R na zadanym przedziale [a1, b1] x … x [an, bn] 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 = (x1, x2, …, xd) ∈ Rd  Z osobnika x tworzymy nowego osobnika y = (y1, y2, …, yd) ∈ Rd yi = xi + εi dla i = 1, 2, …, d gdzie εi jest liczbą rzeczywistą wygenerowaną losowo z rozkładen normalnym 𝑁(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 1 najlepsze uzyskuje się dla 𝜃1 = ≈ 1.22 i 𝜃2 = 0.82 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ć: 𝒚 = [𝒙𝟏 , 𝒙𝟐 , … , 𝒙𝒏 , 𝝈] gdzie 𝒙𝟏 , 𝒙𝟐 , … , 𝒙𝒏 ∈ ℝ𝒏 Strategie ewolucyjne – Algorytmy ES(μ + λ) i ES(μ, λ) • Mutacja osobnika y tworzy nowego osobnika 𝑦′ 𝑦 = 𝑥1 , 𝑥2 , … , 𝑥𝑛 , 𝜎 𝑦 ′ = 𝑥 ′1 , 𝑥 ′ 2 , … , 𝑥 ′ 𝑛 , 𝜎 ′ • Obliczenie następnej „wielkości” (kroku) mutacji 𝜎′ 𝜎 ′ = 𝜎 ∗ 𝑒𝑥𝑝 𝜏0 ∗ 𝑁 0, 1 𝑖𝑓 𝜎 ′ == 𝜀0 𝜎 ′ = 𝜀0 • Następnie dla każdego 𝑥𝑖 : 𝑥′𝑖 = 𝑥𝑖 + 𝑁𝑖 (0, 𝜎′) Parametr 𝜏0 to parametr „szybkości uczenia” 1 𝑛 (Schwefal, 1995) 𝜏0 ~ Strategie ewolucyjne – Algorytmy ES(μ + λ) i ES(μ, λ)  Każdy gen ma swój własny krok „wielkość” mutacji 𝑦 = 𝑥1 , 𝑥2 , … , 𝑥𝑛 , 𝜎1 , 𝜎2 , … , 𝜎𝑛 𝑦 ′ = 𝑥 ′1 , 𝑥 ′ 2 , … , 𝑥 ′ 𝑛 , 𝜎 ′1 , 𝜎 ′ 2 , … , 𝜎′𝑛  Uaktualnienie kroku mutacji 𝜎′𝑖 = 𝜎𝑖 ∗ 𝑒𝑥𝑝 𝜏0 ∗ 𝑁 0, 1 + 𝜏1 ∗ 𝑁𝑖 0,1  Proponowane paramerty: 𝜏0 ~ 1 2𝑛 𝜏1 ~  Dla każdego 𝑥𝑖 : 𝑥′𝑖 = 𝑥𝑖 + 𝑁𝑖 (0, 𝜎′𝑖 ) 1 2 𝑛 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: 𝑟𝑗 𝑥′𝑗 = 𝑥𝑗 gdzie 𝑟𝑗 jest wylosowanym numerem rodzica  „Wielkość” mutacji obliczamy w sposób: 1 𝜎′𝑗 = 𝜌 𝜌 𝜎𝑗𝑖 𝑖=1 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 𝑥 𝑦⇒ 𝑥 𝑧 ( 𝑧 ⟺ (𝑤 𝑣) Programowanie genetyczne – Parse tree  Reprezentacja kodu 1. 2. 3. 4. 5. i = 1; while ( i < 20 ) { i = i + 1 } ; = i while 1 < i = 20 i + i 1