Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

1 Programowanie genetyczne (Genetic Programming) Prof. Dr hab. Marek Rudnicki.

Podobne prezentacje


Prezentacja na temat: "1 Programowanie genetyczne (Genetic Programming) Prof. Dr hab. Marek Rudnicki."— Zapis prezentacji:

1 1 Programowanie genetyczne (Genetic Programming) Prof. Dr hab. Marek Rudnicki

2 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 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 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 Computersby Means of Natural Selection. Pomysł programowania genetycznego jest chroniony patentem.

5 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 6 Przykładowy prosty program * x Powyższy program reprezentuje wyrażenie: (14+x)*2

7 7 Przykładowy program

8 8 Krzyżowanie w GP

9 9 Przykład nieco bardziej złożony = xy +y Powyższy program można zinterpretować jako odpowiednik następującego kodu w C++: if (x+2

10 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 11 Algorytm GP 1.Losowo wygeneruj początkową populację programów. 2.Dopóki nie jest spełniony warunek zakończenia programu generuj kolejne generacje (pokolenia): 1)wylicz dla każdego osobnika odpowiadającą mu wartość funkcji przystosowania. 2)wybierz losowo operację genetyczną (reprodukcja, mutacja, rekombinacja). 3)wykonaj operację genetyczną na wybranych osobnikach z aktualnego pokolenia. Przy wyborze osobników stosuj funkcję przystosowania. 4)przenieś potomstwo do nowego pokolenia.

12 12 Mutacja punktowa + * x -- * 1x1-- x1x1 *- x1 + * x x1-- x1x1 *- x1

13 13 Permutacja + * x -- * 1x1-- x1x1 *- x1 + * x x1-- x11x *- x1

14 14 Hoist + * x -- * 1x1-- x1x1 *- x1 -- x1x1 *

15 15 Mutacja ekspansywna + * x -- * 1x1-- x1x1 *- x1 + * x -- * x1-- x1x1 *- x 1 -- x1x1 *

16 16 Mutacja niszcząca poddrzewo + * x -- * 1x1-- x1x1 *- x1 + * x -- * 1x1 x- x1

17 17 Mutacja poddrzewa + * x -- * 1x1-- x1x1 *- x1 + * -- x1x1 *- x1 - x1

18 18 Krzyżowanie wymianą poddrzew

19 19 Algorytm GP na diagramie źródło:

20 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 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 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 23 Mutacja Operację mutacji wykonujemy w następujący sposób: 1.Wybieramy losowo wierzchołek drzewa. 2.Odcinamy z drzewa wybrany wierzchołek wraz z jego potomkami. 3.W miejscu usuniętego wierzchołka generujemy losowo nowe poddrzewo. Możemy też mutować tylko pojedyncze terminale i pojedyncze funkcje.

24 24 Mutacja źródło:

25 25 Rekombinacja Rekombinacja w GP odbywa się następująco: 1.Wybieramy losowo wierzchołki w obu drzewach. 2.Odcinamy od drzew macierzystych poddrzewa rozpoczynające się wybranymi wierzchołkami. 3.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 26 Rekombinacja wersja uproszczona źródło:

27 27 Rekombinacja źródło: rodzice potomstwo

28 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 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 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 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 32 Podprocedury źródło:

33 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 34 Duplikacja podprocedury źródło:

35 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 36 Duplikacja argumentów podprocedury źródło:

37 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 38 Utworzenie podprocedury źródło:

39 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 40 Usuwanie podprocedury źródło:

41 41 Usuwanie argumentów podprocedury źródło:

42 42 Przykład: GP w języku C Regresja symboliczna

43 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 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 45 Regresja symboliczna

46 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ń (OReilly & 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 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 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 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 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 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 52 Historia języka Lisp Lisp--opracowany (ok. 1958) przez logika Johna McCarthy Stosowany w AI od 30 lat Zastosowania praktyczne » Systemy ekspertowe & oraz aplikacje AI » Rapid Application Development (RAD)

53 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 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 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 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 57 LISP & GP Przykład: Funkcja 5+3*4: Wyrażenie LISP Drzewo parsera

58 58 LISP & GP

59 59 Aproksymacja funkcji

60 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])

61 61

62 62

63 63 John Koza David Andre Forrest H Bennett III

64 64 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 65 David E. Goldberg Melanie Mitchell

66 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 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 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. Schwelfel, H.-P. Thomas Back

69 69 Fogel, D.B. (1995). Evolutionary Computation. IEEE Press, New York. Dr. Fogel (redaktor naczelny) IEEE Transactions on Evolutionary Computation.

70 70 Czasopisma Adaptive BehaviorArtificial LifeEvolutionary Computation

71 71 Artificial IntelligenceMachine Learning

72 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 73 Materiały Internetowe –GP tutorials –http://metricanet.com/people/jjf/ –http://www.geneticprogramming.com/ –http://alphard.ethz.ch/gerber/ –http://www.byte.com/art/9402/sec10/art1.htm Genetic Programming with C++

74 74 GP Częste pytania (FAQ)

75 75 B.3 GP Bibliografie The Collection of Computer Science Bibliographies Up: Bibliographies on Artificial IntelligenceCollection Home Search

76 76 B.4 GP Badacze The Genetic Programming researchers notebook

77 77 –Genetic Programming FAQs –People who do GP –Software Available –Where to publish work on Genetic Programming and Conferences –Interactive Genetic Art & Music

78 78 Obliczenia ewolucyjne GGAA ENCORE Evolutionary Computation Page

79 79 Listy subskrypcyjne subscribe genetic-programming to genetic unsubscribe genetic-programming to genetic subscribe ba-gp to

80 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 81 Indeks Public Domain GP Systems Related Software Drawing Package C++ Implementation issues GP conference Related Conference and Workshops

82 82 Public Domain GP GP in C++ –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 –http://aif.wu-wien.ac.at/~geyers/archive/gpk/Dok/kurz/kurz.html 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 83 Cd. Related Software Package C++ implementation Issues –http://www.frc.ri.cmu.edu/~mcm/chapt.html

84 84 GP Konferencje Annual. Started –http://www.cs.brandeis.edu/~zippy/gp-96.html GP 1997 conference –http://www-cs-faculty.stanford.edut/~koza/gp97.html GP 1998 conference –http://www.genetic-programming.org/

85 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 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 87 Literatura Trylogia Johna R. Kozy: – Genetic Programming : On the Programming of Computers by Means of Natural Selection, MIT Press, – Genetic Programming II : Automatic Discovery of Reusable Programs, MIT Press, – 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 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.


Pobierz ppt "1 Programowanie genetyczne (Genetic Programming) Prof. Dr hab. Marek Rudnicki."

Podobne prezentacje


Reklamy Google