Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
OpublikowałWisława Zamojski Został zmieniony 11 lat temu
1
Programowanie genetyczne (Genetic Programming)
Prof. Dr hab. Marek Rudnicki
2
Podłoże powstania GP Trend w informatyce dążący do tego, aby określać komputerowi CO ma być zrobione, zamiast JAK to ma być zrobione. Pisanie bardzo złożonych programów komputerowych jest zadaniem trudnym, żmudnym i obfitującym w pomyłki programisty. Próbą rozwiązania problemu jest programowanie genetyczne (GP).
3
Czym jest programowanie genetyczne?
Programowanie genetyczne to: metoda automatycznego generowania rozwiązania problemu (programu komputerowego) na podstawie jego wysokopoziomowego opisu. rozszerzenie, uogólnienie algorytmów genetycznych (GA) oparte na pomyśle zastosowania struktur drzewiastych do kodowania informacji genetycznej dla poszczególnych osobników.
4
Pomysł GP W 1989 roku John R. Koza wygłosił pierwszy referat na temat GP. W roku 1992 opublikował książkę uważaną do dziś za „biblię” programowania genetycznego: Genetic Programming: On the Programming of Computers by Means of Natural Selection. Pomysł programowania genetycznego jest chroniony patentem.
5
Charakterystyka GP Algorytm ewolucyjny bardzo podobny do GA.
Osobnikami są programy komputerowe zapisane w postaci drzewa. Poszczególne osobniki (programy) wybierane są do reprodukcji w oparciu o funkcję przystosowania. Operatory genetyczne obejmują: mutację, rekombinację, reprodukcję i inne specyficzne dla rozwiązywanego problemu operacje.
6
Przykładowy prosty program
* 2 + 14 x Powyższy program reprezentuje wyrażenie: (14+x)*2
7
Przykładowy program
8
Krzyżowanie w GP
9
Przykład nieco bardziej złożony
IF < + y = x 2 x y Powyższy program można zinterpretować jako odpowiednik następującego kodu w C++: if (x+2<y) x=y;
10
Elementy struktury drzewiastej
terminale elementy stanowiące liście drzewa reprezentują stałe lub zmienne programu przykłady: „2”, „ ”, „x”, „y” funkcje oznaczają funkcje programu argumenty funkcji znajdują się w poddrzewach przykłady: operacje arytmetyczne, funkcje trygonometryczne, instrukcje warunkowe
11
Algorytm GP Losowo wygeneruj początkową populację programów.
Dopóki nie jest spełniony warunek zakończenia programu generuj kolejne generacje (pokolenia): wylicz dla każdego osobnika odpowiadającą mu wartość funkcji przystosowania. wybierz losowo operację genetyczną (reprodukcja, mutacja, rekombinacja). wykonaj operację genetyczną na wybranych osobnikach z aktualnego pokolenia. Przy wyborze osobników stosuj funkcję przystosowania. przenieś potomstwo do nowego pokolenia.
12
Mutacja punktowa + + * + * * - - - - * - * - x 1 x 1 x 1 x 1 - - x 1 x
13
Permutacja + + * + * * - - - - * - * - x 1 x 1 x 1 x 1 - - x 1 x 1 - -
14
Hoist + * * * - - - - * - x 1 x 1 x 1 x 1 x 1 - - x 1 x 1
15
Mutacja ekspansywna + + * * * * - - - - * - * - x x 1 x * x 1 - - x 1
16
Mutacja niszcząca poddrzewo
+ + * * * * - - - - x - * - x 1 x 1 x 1 x 1 x 1 x 1 - - x 1 x 1
17
Mutacja poddrzewa + + - * * * x 1 - - * - * - x 1 x 1 - - x 1 x 1 - -
18
Krzyżowanie wymianą poddrzew
19
Algorytm GP na diagramie
źródło:
20
Losowe generowanie drzew
Losowe generowanie drzewa polega na losowym wytworzeniu struktury reprezentującej poprawny program. Losujemy spośród wszystkich dopuszczalnych funkcji i wszystkich dopuszczalnych terminali. Aby nie generować nieskończenie dużych drzew z góry określamy maksymalny ich rozmiar lub głębokość.
21
Funkcja przystosowania
Określa jak dobrze dany program rozwiązuje postawiony przed GP problem. W oparciu o wartość tej funkcji następuje wybór osobników do operacji genetycznych. Prawdopodobieństwo wyboru i-tego osobnika wyraża się wzorem:
22
Inne metody wyboru osobników
metoda turniejowa losowy wybór kilku (co najmniej dwóch) osobników i wybór tego spośród nich, który jest najlepiej przystosowany metoda rankingowa wyboru dokonujemy nie w oparciu o wartość funkcji przystosowania, ale w oparciu o miejsce w rankingu ułożonego według wartości tej funkcji nie liczy się wartość, liczy się miejsce w rankingu
23
Mutacja Operację mutacji wykonujemy w następujący sposób:
Wybieramy losowo wierzchołek drzewa. Odcinamy z drzewa wybrany wierzchołek wraz z jego potomkami. W miejscu usuniętego wierzchołka generujemy losowo nowe poddrzewo. Możemy też mutować tylko pojedyncze terminale i pojedyncze funkcje.
24
Mutacja źródło:
25
Rekombinacja Rekombinacja w GP odbywa się następująco:
Wybieramy losowo wierzchołki w obu drzewach. Odcinamy od drzew macierzystych poddrzewa rozpoczynające się wybranymi wierzchołkami. Do pierwszego drzewa w miejsce usuniętego wierzchołka wstawiamy poddrzewo wycięte z drugiego drzewa i odwrotnie. Czasem stosuje się wersję uproszczoną, kiedy to zmienia się poddrzewo u tylko jednego z biorących udział w rozmnażaniu osobników.
26
Rekombinacja wersja uproszczona
źródło:
27
Rekombinacja rodzice potomstwo źródło:
28
Jeszcze o rekombinacji
Rekombinacja w GP ma następującą ciekawą własność: Rekombinacja dwóch identycznych osobników rodzicielskich z reguły daje parę potomków różniących się od rodziców. Wystarczy, aby wylosowano dwa różne wierzchołki jako punkty krzyżowania.
29
Reprodukcja Reprodukcją nazywamy zwykłe skopiowanie osobnika tak, że bez zmian przechodzi on do nowego pokolenia. Tak, jak rekombinację można uznać za odpowiednik płciowego rozmnażania się organizmów żywych, tak reprodukcję można przyrównać do procesu rozmnażania bezpłciowego.
30
Prawdopodobieństwo operacji genetycznych
Główną i dominującą operacją genetyczną jest rekombinacja. Powinna ona zachodzić z prawdopodobieństwem 85-90%. Mutacja powinna być operacją zachodzącą stosunkowo rzadko. Jej prawdopodobieństwo powinno wynosić około 1%. W pozostałych przypadkach stosujemy reprodukcję.
31
Architektura programu
W strukturze drzewiastej można zapamiętywać struktury typowe dla programów takie jak: instrukcje warunkowe pętle funkcje zdefiniowane w samym programie (podprocedury) Można specjalnie z myślą o tych strukturach zdefiniować i stosować dodatkowe operacje genetyczne.
32
Podprocedury źródło:
33
Duplikacja podprocedury
Polega na rozdzieleniu wywoływanej więcej niż raz w programie podprocedury na dwie osobne. Utworzone w ten sposób dwie kopie będą mogły się różnicować (specjalizować) w kolejnych operacjach genetycznych. Każda kopia podprocedury otrzymuje osobną nazwę.
34
Duplikacja podprocedury
źródło:
35
Duplikacja argumentów podprocedury
Polega na zwiększeniu liczby argumentów przyjmowanych przez podprocedurę poprzez zduplikowanie jednego z nich. W definicji funkcji losowo rozdziela się wystąpienia zmiennej między starą i nową kopię argumentu. W wywołaniach procedury również duplikujemy argumenty.
36
Duplikacja argumentów podprocedury
źródło:
37
Utworzenie podprocedury
Tworzymy podprocedurę poprzez wyodrębnienie sekwencji operacji z wybranej części drzewa. Podprocedurze nadajemy unikalną nazwę. Drzewo modyfikujemy tak, aby wynik wykonania programu przed dokonaniem zmiany zgadzał się z wynikiem po jej dokonaniu.
38
Utworzenie podprocedury
źródło:
39
Usuwanie podprocedur i usuwanie ich argumentów
Operacje odwrotne do duplikacji podprocedur i duplikacji argumentów podprocedur. Prowadzą do zmniejszenia złożoności struktury programu.
40
Usuwanie podprocedury
źródło:
41
Usuwanie argumentów podprocedury
źródło:
42
Przykład: GP w języku C Regresja symboliczna
43
Przykładowe wyniki Przeprowadzono 50 generacji, populacja liczyła 500 osobników. Przykładowy genotyp Ciąg symboli uproszczonych T*(a)*R)aE+C)E)SRDT)vSqE* Ciąg ten jest błędny składniowo i należy go poprawić {T((a)*R(a+m)+(S(D((v+q+D} Ostatecznie mamy {T((a)*R(a+m))+(S(D((v+q+D(m)))))}
44
Przykład Edycja prowadzi do wyrażenia
double ind(double m, double v, double a) {return T((a)*R(a+m))+(S(D((v+q+D(m))))); } Kompilator C generuje kod wynikowy Kod wynikowy zawiera końcowy fenotyp rozkodowany z genotypu
45
Regresja symboliczna
46
GP a twierdzenie o schematach
Podobieństwo GP do GA sugeruje możliwość dowodu poprawności funkcjonowania algorytmu GP w oparciu o zmodyfikowane twierdzenie o schematach. Mimo wielu ciekawych opracowań (O’Reilly & Oppacher – 1995, Rosca & Ballard – 1997) próby zdefiniowania schematu dla GP analogicznie jak dla GA natrafiają na duże trudności związane z dynamiką struktury programu zapamiętanej w drzewie.
47
GP gra w kółko i krzyżyk Peter J. Angeline i Jordan B. Pollack wykonali eksperyment ucząc komputer gry w kółko i krzyżyk opierając się na algorytmie programowania genetycznego. Eksperyment miał sprawdzić możliwości GP, w którym Angeline i Pollack zastosowali własne usprawnienia. Skorzystali z systemu obsługi podprocedur, dzięki czemu w istotny sposób ograniczyli rozmiary generowanych drzew.
48
GP gra w kółko i krzyżyk Wygenerowano 200 pokoleń po 1000 osobników w każdym pokoleniu. Funkcję dopasowania określono w ten sposób, że wygenerowane programy rozgrywały ze sobą partie i w zależności od wyniku otrzymywały odpowiednią liczbę punktów. Znaleziony w wyniku eksperymentu program nie przegrywał nawet z zewnętrznym ekspertem.
49
GP gra w kółko i krzyżyk Rozmiar drzewa
60 wierzchołków 13 poziomów głębokości 15 podprocedur w osobnych drzewach Rozmiar drzewa po rozwinięciu podprocedur 477 wierzchołków 39 poziomów głębokości dwie podprocedury były wywoływane aż dziewięciokrotnie!
50
Do czego można stosować GP?
Przykładowe możliwe zastosowania GP: klasyfikacja sterowanie aproksymacja funkcji optymalizacja całkowanie i różniczkowanie symboliczne wiele innych...
51
Drogi rozwoju GP Prace nad lepszą obsługą w GP mechanizmu tworzenia i wywoływania podprocedur (Koza, Angeline, Pollack, Rosca, Ballard). Różnicowanie typów danych używanych w generowanych programach (Hicklin, Montana, Haynes, Gruau). Implementacja w programie zmiennych tymczasowych przechowujących informacje o stanie programu (Koza, Teller, Angeline). Alternatywy wobec reprezentacji w postaci drzewa (Nordin – struktury liniowe zawierające kod maszynowy, Teller & Veloso – graf, Ashlock – zastosowanie teorii automatów skończonych, osobne drzewo dla każdego stanu).
52
Historia języka Lisp •Lisp--opracowany (ok ) przez logika Johna McCarthy •Stosowany w AI od 30 lat •Zastosowania praktyczne » Systemy ekspertowe & oraz aplikacje AI » Rapid Application Development (RAD)
53
Historia języka Lisp •Lisp stosowany jest jako język wbudowany
•Zastosowania: edytor tekstowy EMACS (MLisp) oraz AutoCAD (AutoLisp). •Język Prolog jest wbudowany w MS Office! •Działa na głównych platformach sprzętowych •Liczne wersje free- oraz shareware. • Standard: Common Lisp
54
Prolog •Prolog opracowany został w 1972 przez specjalistę AI Alana Colmeraurer Rozwinięty na University of Montreal oraz University of Marseilles •Stosowany w systemach kspertowych & i aplikacjach AI w tym przetwarzanie języków •Dostępny na głównych platformach sprzętowych •Wersje free- oraz shareware •Standard: ‘Edinburgh-style’
55
LISP Dane i programy są listami
Programowanie modularne za pomocą licznych funkcji Duża liczba nawiasów z których nie wszystkie są znaczące Listy są drzewami binarnymi! Definicja rekursywna
56
Co to jest ten LISP? Większość bibliotek i projektów związanych z GP pisana jest w języku LISP ze względu na to, iż dostarcza on wygodnych mechanizmów do interpretacji struktur zapisanych w postaci drzew. Nic nie stoi na przeszkodzie, aby stosować inne języki programowania, takie jak np. C++ , Object Pascal, Java lub Matlab.
57
LISP & GP Przykład: Funkcja 5+3*4: Wyrażenie LISP Drzewo parsera
58
LISP & GP
59
Aproksymacja funkcji
60
Aproksymacja funkcji • Losowo wygenerować populację wyrażeń,
y(x), stosując +, –, *, /, sin, cos, exp , log, oraz terminale 1 and x • Dostosowanie: 0 jeżeli wyrażenie jest niepoprawne , w przeciwnym przypadku 1/(d+1), gdzie d = |f(x) – y(x)| • Dostosowanie należy do przedziału [0,1])
63
John Koza David Andre Forrest H Bennett III
64
Kinnear, K. E. Jr. (ed. ) (1994). Advances in Generic Programming
Kinnear, K.E. Jr. (ed.) (1994). Advances in Generic Programming. MIT Press, Cambridge, MA. Angeline, P.J. and Kinnear, K.E. Jr. (eds.) (1996), Advances in Generic Programming 2. MIT Press, Cambridge, MA. Koza, J.R. and Goldberg, D. E. and Fogel, D. B. and Riolo, R. L. (eds.) (1996). Genetic Programming 1996: Proceedings of the First Annual Conference. Stanford University, Stanford, CA. MIT Press, Cambridge, MA. Koza, J.R. and Deb, K. and Dorigo, M. and Fogel, D. B. and Garzon, M. and Iba, H. and Riolo, R. L. (eds.) (1996). Genetic Programming 1996: Proceedings of the Second Annual Conference. Stanford University, Stanford, CA. Morgan Kaufmann San Francisco, CA.
65
David E. Goldberg Melanie Mitchell
66
GP taśmy video Koza, J. R. and Rice, J. P. (1992). Genetic Programming: the Movie. MIT Press. Cambridge, MA. Koza, J. R. (1994). Genetic ProgrammingII: Videotape. The Next Generation. MIT Press. Cambridge, MA. (1996). Genetic Programming 1996: Video Proceedings of the First Annual Conference Sound Photo Synthesis, CA.
67
Literatura: algorytmy ewolucyjne
Holland, J.H. (1975 and 1995). Adaptation in Natural and Artificial Systems. University of Michigan Press, Ann Arbor, MI. Davis, L. (ed.) (1987). Genetic Algorithms and Simulated Annealing. Pitman, London. Goldberg, D. E. (1989). Genetic Algorithm in Search, Optimization, and Machine Learning. Addison-Wesley, Reading, MA. Michalewicz, Z. (1992). Genetic Algorithm + Data Structures = Evolution Programs. Springer-Verlag, Berlin,. 1996: 3rd edition. (tłumaczenie polskie, PWN, 1996) Michell, M. (1996). An Introduction to Genetic Algorithms . MIT Press, Cambridge, MA.
68
Center for Applied Systems Analysis (CASA) Informatik Centrum Dortmund (ICD)
Schwelfel, H.-P. (1981 i 1995). Evolution and Optimum Seeking. John Wiley & Sons, New York. Thomas Back Schwelfel, H.-P.
69
Fogel, D.B. (1995). Evolutionary Computation. IEEE Press, New York.
Dr. Fogel (redaktor naczelny) IEEE Transactions on Evolutionary Computation.
70
Evolutionary Computation
Czasopisma Adaptive Behavior Artificial Life Evolutionary Computation
71
Artificial Intelligence
Machine Learning
72
IEEE Transaction on Evolutionary Computation, IEEE
IEEE Transaction on Systems, Man, and Cybernetics, IEEE Biological Cybernetics, Springer-Verlag BioSystems, Elsevier Science Complexity, Academic Press Complex Systems, Complex Systems Publications
73
Materiały Internetowe
GP tutorials Genetic Programming with C++
74
GP Częste pytania (FAQ)
75
Computer Science Bibliographies
B.3 GP Bibliografie The Collection of Computer Science Bibliographies Up: Bibliographies on Artificial Intelligence Collection Home Search Search
76
B.4 GP Badacze http://metricanet.com/people/jjf/
The Genetic Programming researchers notebook
77
http://www.cs.ucl.ac.uk/research/genprog/ Genetic Programming FAQs
People who do GP Software Available Where to publish work on Genetic Programming and Conferences Interactive Genetic Art & Music
78
Obliczenia ewolucyjne
GGAA ENCORE Evolutionary Computation Page
79
Listy subskrypcyjne subscribe genetic-programming to
genetic unsubscribe genetic-programming subscribe ba-gp
80
Listy wysyłkowe i grupy zainteresowań
GA mailing list GA and NN mailing list GA news group comp.ai.genetic AL news group USENET news group alife.bbs.ga
81
Indeks Public Domain GP Systems Related Software Drawing Package
C++ Implementation issues GP conference Related Conference and Workshops
82
Public Domain GP GP in C++ GP-quick
ftp://ftp.salford.ac.uk/pub/gp/ GP-quick ftp://ftp.io.com/pub/genetic-programming/Gpdata-20-aug-95.tar.Z Genetic Programming kernel. C++ library List Implementation of GP ftp://ftp.io.com/pub/genetic-programming/code/koza-book-go-implementation.lisp framework for GP of neural network ftp://ftp.io.com/pub/genetic-programming/code/cerebrum.tar.Z
83
Cd. Related Software Package C++ implementation Issues
C++ implementation Issues
84
GP Konferencje Annual. Started 1996. GP 1997 conference
GP 1997 conference GP 1998 conference
85
Konferencje (cd) GP-99 Conference (part of GECCO Conference) in Orlando, Florida Euro-GP-99 Workshop in Goteborg, Sweden in May GP-2000 Conference GP-98 Conference at University of Wisconsin SGA-98 (Symposium on Genetic Algorithms) at University of Wisconsin Euro-GP-98 Workshop in Paris
86
Konferencje o zbliżonej tematyce
ICGA conference series international conference on genetic algorithm PPSN conference series parallel problem solving from nature EP conference series evolutionary programming
87
Literatura Trylogia Johna R. Kozy:
Genetic Programming: On the Programming of Computers by Means of Natural Selection, MIT Press, 1992. Genetic Programming II: Automatic Discovery of Reusable Programs, MIT Press, 1994. Genetic Programming III: Darwinian Invention and Problem Solving, Morgan Kaufmann, (autorzy: John R. Koza, Forrest H Bennett III, David Andre, and Martin A. Keane)
88
Ciekawe miejsca w sieci
Ogólne informacje o programowaniu genetycznym Strona internetowa firmy Genetic Programming Inc. założonej przez J. R. Kozę. Najczęściej zadawane pytania dotyczące programowania genetycznego.
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.