Programowanie genetyczne (ang. genetic programming)



Podobne dokumenty
Programowanie genetyczne

Algorytmy genetyczne

ALGORYTMY GENETYCZNE ćwiczenia

Algorytmy ewolucyjne `

Algorytmy ewolucyjne NAZEWNICTWO

Dobór parametrów algorytmu ewolucyjnego

WAE Jarosław Arabas Pełny schemat algorytmu ewolucyjnego

Strategie ewolucyjne (ang. evolu4on strategies)

Programowanie Genetyczne

Algorytmy ewolucyjne - algorytmy genetyczne. I. Karcz-Dulęba

Aproksymacja funkcji a regresja symboliczna

Algorytmy ewolucyjne 1

Odkrywanie algorytmów kwantowych za pomocą programowania genetycznego

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2014/2015. Drzewa BST c.d., równoważenie drzew, kopce.

Katedra Informatyki Stosowanej. Algorytmy ewolucyjne. Inteligencja obliczeniowa

Strategie ewolucyjne (ang. evolution strategies)

Programowanie genetyczne, gra SNAKE

Algorytmy stochastyczne, wykład 02 Algorytmy genetyczne

Standardowy algorytm genetyczny

Modyfikacje i ulepszenia standardowego algorytmu genetycznego

Algorytm Genetyczny. zastosowanie do procesów rozmieszczenia stacji raportujących w sieciach komórkowych

Programowanie genetyczne - gra SNAKE

LABORATORIUM 3: Wpływ operatorów krzyżowania na skuteczność poszukiwań AE

Problemy z ograniczeniami

SCHEMAT ROZWIĄZANIA ZADANIA OPTYMALIZACJI PRZY POMOCY ALGORYTMU GENETYCZNEGO

LABORATORIUM 4: Algorytmy ewolucyjne cz. 2 wpływ operatorów krzyżowania i mutacji na skuteczność poszukiwań AE

ALHE Z11 Jarosław Arabas wykład 11

Algorytmy genetyczne. Paweł Cieśla. 8 stycznia 2009

Wstęp do programowania

Algorytm genetyczny (genetic algorithm)-

Teoria algorytmów ewolucyjnych

Podstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno

Obliczenia inspirowane Naturą

w analizie wyników badań eksperymentalnych, w problemach modelowania zjawisk fizycznych, w analizie obserwacji statystycznych.

Algorytmy ewolucyjne

Zadanie 5 - Algorytmy genetyczne (optymalizacja)

Podstawy Informatyki. Metody dostępu do danych

Poprawność semantyczna

METODY SZTUCZNEJ INTELIGENCJI algorytmy ewolucyjne

PLAN WYKŁADU OPTYMALIZACJA GLOBALNA OPERATOR KRZYŻOWANIA ETAPY KRZYŻOWANIA

Algorytmy memetyczne (hybrydowe algorytmy ewolucyjne)

5. Algorytm genetyczny przykład zastosowania

Algorytmy ewolucyjne (3)

Kompresja danych Streszczenie Studia Dzienne Wykład 10,

ALGORYTMY I STRUKTURY DANYCH

Obliczenia ewolucyjne - plan wykładu

Technologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15

Algorytmy i struktury danych. Drzewa: BST, kopce. Letnie Warsztaty Matematyczno-Informatyczne

Strefa pokrycia radiowego wokół stacji bazowych. Zasięg stacji bazowych Zazębianie się komórek

Teoretyczne podstawy informatyki

Wstęp do Sztucznej Inteligencji

Uniwersytet Zielonogórski Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Sterowania i Systemów Informatycznych

ALGORYTMY I STRUKTURY DANYCH

< K (2) = ( Adams, John ), P (2) = adres bloku 2 > < K (1) = ( Aaron, Ed ), P (1) = adres bloku 1 >

Algorytmy genetyczne (AG)

Algorytmy genetyczne. Materiały do laboratorium PSI. Studia niestacjonarne

Strategie ewolucyjne. Gnypowicz Damian Staniszczak Łukasz Woźniak Marek

Metody Kompilacji Wykład 3

Algorytmy metaheurystyczne Wykład 11. Piotr Syga

Algorytmy stochastyczne, wykład 01 Podstawowy algorytm genetyczny

REKURENCJA W JĘZYKU HASKELL. Autor: Walczak Michał

Tomasz Pawlak. Zastosowania Metod Inteligencji Obliczeniowej

Metody Rozmyte i Algorytmy Ewolucyjne

Algorytmy ewolucyjne. Łukasz Przybyłek Studenckie Koło Naukowe BRAINS

Drzewa poszukiwań binarnych

ALGORYTMY EWOLUCYJNE W OPTYMALIZACJI JEDNOKRYTERIALNEJ

Drzewa binarne. Drzewo binarne to dowolny obiekt powstały zgodnie z regułami: jest drzewem binarnym Jeśli T 0. jest drzewem binarnym Np.

Generowanie i optymalizacja harmonogramu za pomoca

Wstęp do programowania. Drzewa podstawowe techniki. Piotr Chrząstowski-Wachtel

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Algorytmy i struktury danych Laboratorium 7. 2 Drzewa poszukiwań binarnych

Optymalizacja. Wybrane algorytmy

Drzewa czerwono-czarne.

Metody eksploracji danych w odkrywaniu wiedzy (MED) projekt, dokumentacja końcowa

Struktury Danych i Złożoność Obliczeniowa

SZTUCZNA INTELIGENCJA

LABORATORIUM 5: Wpływ reprodukcji na skuteczność poszukiwań AE. opracował: dr inż. Witold Beluch

Algorytmy klasyfikacji

Algorytm indukcji klasyfikatora za pomocą EA z automatycznym przełączaniem ukierunkowań

Techniki optymalizacji

. Podstawy Programowania 2. Drzewa bst - część druga. Arkadiusz Chrobot. 12 maja 2019

prowadzący dr ADRIAN HORZYK /~horzyk tel.: Konsultacje paw. D-13/325

Przykładowe sprawozdanie. Jan Pustelnik

6. Klasyczny algorytm genetyczny. 1

Teoretyczne podstawy informatyki

Podstawy Informatyki Systemy sterowane przepływem argumentów

Wyszukiwanie w BST Minimalny i maksymalny klucz. Wyszukiwanie w BST Minimalny klucz. Wyszukiwanie w BST - minimalny klucz Wersja rekurencyjna

Wykład 2. Drzewa poszukiwań binarnych (BST)

Wykład 6. Drzewa poszukiwań binarnych (BST)

Każdy węzeł w drzewie posiada 3 pola: klucz, adres prawego potomka i adres lewego potomka. Pola zawierające adresy mogą być puste.

Wysokość drzewa Głębokość węzła

OBLICZENIA EWOLUCYJNE

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej

Algorytmy genetyczne. Materiały do laboratorium PSI. Studia stacjonarne i niestacjonarne

TEORETYCZNE PODSTAWY INFORMATYKI

Ewolucja Różnicowa Differential Evolution

Kolejka priorytetowa. Często rozważa się kolejki priorytetowe, w których poszukuje się elementu minimalnego zamiast maksymalnego.

Wykład X. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2016 Janusz Słupik

Zadania laboratoryjne i projektowe - wersja β

Management Systems in Production Engineering No 3(23), 2016

Programowanie obiektowe

Transkrypt:

Programowanie genetyczne (ang. genetic programming) 1

2 Wstęp Spopularyzowane przez Johna Kozę na początku lat 90-tych. Polega na zastosowaniu paradygmatu obliczeń ewolucyjnych do generowania programów komputerowych rozwiązujących pewne zadanie. Programy są reprezentowane poprzez drzewa składniowe (ang. parse tree). Wymaga zaangażowania dużych zasobów obliczeniowych, (rozmiar populacji to tysiące a nawet miliony), ale wraz z upowszechnieniem się komputerów równoległych może być zastosowane do coraz trudniejszych problemów.

3 Pętla algorytmu Populacja programów Tworzenie programów potomnych z rodziców Ewaluacja przez testowanie i selekcja proporcjonalnie do dopasowania Należy określić: W jaki sposób reprezentować programy. W jaki sposób wygenerować populację początkowych programów. Jak wykonać krzyżowanie i mutację programów? W jaki sposób obliczyć dopasowanie programu?

4 Reprezentacja oparta na drzewach Drzewa pozwalają na uniwersalną reprezentację np. rozważmy: Wyrażenie arytmetyczne: 2 π + ( x + 3) y 5 + 1 Wyrażenie logiczne: (x true) (( x y ) (z (x y))) Program: i =1; while (i < 20) { i = i +1 }

5 Reprezentacja dla wyrażenia logicznego (x true) (( x y ) (z (x y)))

6 Reprezentacja dla programu i =1; while (i < 20) { i = i +1 }

7 Bardziej formalnie Które drzewo jest poprawnym drzewem (reprezentuje poprawny program)? Należy zdefiniować ich składnie. Zbiór termów (ang. terminal) - mogą być liśćmi drzewa. Zbiór funkcji - mogą być węzłami wewnętrznymi drzewa. Dla przykładu z wyrażeniami algebraicznymi zbiór funkcji to: {+,-,/,*} a zbiór termów to R { x, y } 2 π x 3 5 1 y

Własność domknięcia (ang. closure) 1. Drzewo jednoelementowe (składające się z pojedynczego termu) reprezentuje poprawne wyrażenie. 2. Jeżeli f jest funkcją n-argumentową, a drzewa d 1,d 2,..,d n reprezentują poprawne wyrażenia, to drzewo: f d 1 d... 2 d n również reprezentuje poprawne wyrażenie. 3. Innych poprawnych wyrażeń nie ma. Mniej formalnie: każda funkcja musi być w stanie akceptować na wejściu dowolny typ danych i wartość, która może być zwrócona przez inną funkcję lub term. Niezbędne w programowaniu genetycznym, ponieważ operatory krzyżowania oraz mutacji prowadzą do losowych zmian w drzewach. 8

Warunki wystarczalności (ang. sufficiency) oraz uniwersalności (ang. universality) 9 Wystarczalność: zbiór termów i funkcji powinien pozwalać na rozwiązanie problemu. np. zbiór funkcji {+,-} nie pozwala na reprezentację wyrażenia arytmetycznego, w którym występuje mnożenie. dla naprawdę trudnych problemów nie jest łatwo ją zapewnić. Uniwersalność: dobrze jest dodać funkcje, które nie są niezbędne do rozwiązania zadania, mogą one ułatwić znalezienie rozwiązania. Ale zbyt duża nadmiarowość przeszkadza w znalezieniu rozwiązania.

10 Inicjalizacja losowa drzewa Wybierz losowo funkcję na korzeń drzewa. Każda funkcja ma skończoną liczbę argumentów. Dla każdego argumentu funkcji w korzeniu wybierz losowo term lub funkcję. Jeżeli wybrałeś term stanie się liściem drzewa. Jeżeli wybrałeś funkcję wykonaj algorytm inicjalizacji rekurencyjnie. Ograniczenie na rekurencję: wysokość drzewa nie może być większa niż D max. Zalecana wartość, to (D max =2...6). Trzy możliwości inicjalizacji grow initialization: opisana powyżej full initialization: każda gałąź drzewa ma głębokość D max. Wymaga losowania na poziomie d<d max d=d max spośród termów. spośród zbioru funkcji, a na poziomie ramped half-and-half: połowa populacji jest inicjalizowana metodą grow, a druga połowa metodą full.

11 Obliczenie dopasowania Obliczenie dopasowania wykonywane jest na podstawie pewnej liczby przypadków testowych (ang. fitnes cases). Przypadek testowy to zestaw wejść dla programu + wyjście. Liczba wszystkich przypadków testowych jest na ogół nieskończona, dlatego należy wybrać reprezentatywną próbkę. Dla każdego przypadku testowego możemy rekurencyjne przejrzeć drzewo programu, zaczynając od korzenia, ale wykonując obliczenia w węźle będącym funkcją dopiero jak wykonamy obliczenia w poddrzewach będących argumentami funkcji.

12 Selekcja i sukcesja W programowaniu genetycznym stosuje się generacyjny model sukcesji (podobnie jak w GA), chociaż ostatnio pojawiają się propozycje zbliżone do algorytmu genetycznego stanu stałego. Selekcja rodziców często wykorzystuje metodę nazwaną nad-selekcją (overselection). Posortuje osobnik względem dopasowania i podziel populację na dwie grupy. W pierwszej x% najlepiej dopasowanych i (100-x)% najgorzej dopasowanych. Dla rozmiaru populacji S=1000 x=32%, dla S=8000 x=4%. 80% rodziców wybierz z populacji najlepiej dopasowanych osobników, 20% z populacji gorzej dopasowanych. Stosuje się selekcję proporcjonalną (ostatnio również turniejową).

Wybór operatora zmieniającego osobnika Osobnik podlega krzyżowaniu z prawdop. p c. mutacji z prawdop. p m. Osobnik nie podlega nigdy krzyżowaniu i mutacji jednocześnie. Zalecane jest bardzo małe p m w granicach 0.05 (Koza w swojej pierwszej książce zalecał p m 0). 13

14 Operacja mutacji Najczęściej stosowana operacja mutacji (subtree mutation) polega na zastąpieniu losowo wybranego poddrzewa w drzewie losowo wygenerowanym poddrzewem.

15 Alternatywne operacje mutacji point mutation wybierz losowo węzeł drzewa i zastąp go innym tego samego typu (term innym termem, a funkcję funkcją o tej samej liczbie argumentów). permutation mutation zmień kolejność argumentów losowo wybranego węzła wewnętrznego (funkcji). collapse subtree mutation zastąp losowo wybrane poddrzewo losowo wygenerowanym termem. hoist mutation losowo wybrane poddrzewo staje się nowym osobnikiem. expansion mutation losowo wybrany term zastąpiony zostaje losowo wybranym poddrzewem.

Operacja krzyżowania rodzic 1 rodzic 2 potomek 1 potomek 2 Najczęściej stosowany operator krzyżowania wymienia losowo wybrane poddrzewa pomiędzy osobnikami 16

17 Warunek stopu i rozmiar populacji W społeczności zajmującej się programowaniem genetycznym, przyjęła się praktyka preferowanie bardzo dużych rozmiarów populacji i zatrzymywania algorytmu po kilkudziesięciu (najwyżej kilkuset generacjach). Przyjmuje się, że jeżeli ewolucja nie jest w stanie odkryć dobrego programu przez kilkadziesiąt iteracji, to nie będzie w stanie tego zrobić później. Słowo bardzo duży rozmiar populacji oznacza tysiące w przypadku komputerów sekwencyjnych miliony w przypadku komputerów równoległych. Przy czym dla niewielkiej liczby procesorów i systemu ze wspólną pamięcią można łatwo zrównoleglić obliczanie wartości funkcji dopasowania (jest to najbardziej czasochłonny krok ze względu na konieczność przejścia drzewa/uruchomienia programu dla każdego przypadku testowego). Dla systemów składających się z tysięcy procesorów można zastosować model wyspowy (ang. island) zrównoleglenia.

18 Operator edycji (ang. editing) Operator który umożliwia uproszczenie drzew. Rekurencyjnie poczynając od korzenia drzewa stosuje zestaw reguł upraszczających, nie zmieniających interpretacji drzewa. Przykład (zastąpienie funkcji operującej na stałych): + + * x * x * x 6 x 3 2

19 Zjawisko rozdęcia kodu (ang. code bloat) Bloat = survival of the fattest Operatory krzyżowania i mutacji mogą prowadzić do sytuacji w której wysokość potomków jest większa od wysokości rodziców. Okazuje się, że przeciętny rozmiar drzewa w populacji zaczyna rosnąć wraz z postępem algorytmu. Aby kontrolować rozdęcie należy przedsięwziąć środki zaradcze. Ograniczenie maksymalnej wysokości drzewa, i zakazanie (lub przerwanie) operatorów rekombinacji gdy wysokość potomka przekroczyłaby maksimum. (Prosta technika ale wymaga dodatkowego parametru). Nacisk na oszczędność (ang. parsimony pressure) Powiązanie dopasowania z rozmiarem drzewa, tak że im większy rozmiar drzewa tym mniejsze dopasowanie. (a zatem wprowadzamy karę za duży rozmiar).

20 Przykład zastosowania: regresja symboliczna Dany jest zbiór punktów z R 2 : {(x 1,y 1 ),(x 2,y 2 ),., (x n,y n )}. Zgodnie z pierwszą książką Kozy punkty wygenerowano jako y i =sin(x i ), a x i losowo z przedziału (0,π) Znajdź funkcję f(x) taką że f(x i ) y i. Zbiór termów: R { x } Zbiór funkcji: {+,-,*,/} (wszystkie to funkcje dwuargumentowe). Funkcja dopasowania n i=1 ( f ( x i ) y i ) 2 Algorytm po 29 generacjach znalazł drzewo: + reprezentujące wyrażenie * x 0.32 x 2 + x * -0.32 x x

Regresja symboliczna - porównanie 21

22 Literatura dodatkowa J. R. Koza, Genetic Programming: On the Programming of Computers by Means of Natural Selection, 1993, MIT Press, książka która spopularyzowała temat, ponad 2400 cytowań. R. Poli, W. B. Langdon, N. F. McPhee, A Field Guide to Genetic Programming, 2008, książka wydana na licencji creative commons, przewodnik dla osób chcących poeksperymentować z GP. J. R. Koza, M. A. Keane, M. J. Streeter, W. Mydlowec, J. Yu, G. Lanza, Genetic Programming IV: Routine Human-Competitive Machine Intelligence, 2003, Springer. Najnowsza książka wynalazcy GP. Większość problemów została rozwiązana na klastrze składającym się z 500 dwu-procesorowych komputerów z Pentium II 350 MHz z 64MB RAM. Typowy przebieg wykonywał się 50 godzin, a każdy z 1000 procesorów zajmował się populacją 1000 osobników. Wydawnictwo Springer wydaje czasopismo naukowe Genetic Programming and Evolvable Machines, (http://www.springer.com/computer/ai/journal/10710) poświęcone programowaniu genetycznemu.

23 Oprogramowanie ECJ (Evolutionary Computation in Java) - biblioteka do obliczeń ewolucyjnych w Javie (http://cs.gmu.edu/~eclab/projects/ecj/). Zawiera implementacje programowania genetycznego. EO (Evolving Objects) biblioteka w języku C++ (http://eodev.sourceforge.net/). Open BEAGLE (http://beagle.sourceforge.net/) jeszcze jedna biblioteka w C++, wydaje się że rozwój się zakończył w 2007 roku. JGAP (Java Genetic Algorithms Package - http://jgap.sourceforge.net/) inny framework napisany w Javie, aktywnie rozwijany. GPLAB (http://gplab.sourceforge.net/) - darmowy toolbox do MATLAB-a implementujący GP. HeuristicLab (http://dev.heuristiclab.com/trac/hl/core) pakiet z bogatym interfejsem użytkownika, oparty o.net 4.0.