1 / 88

Programowanie genetyczne (Genetic Programming)

Programowanie genetyczne (Genetic Programming). Prof. Dr hab. Marek Rudnicki. 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.

shiri
Download Presentation

Programowanie genetyczne (Genetic Programming)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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 jestprogramowanie 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”, „3.14159”, „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 1 - - x 1 x 1 x 1 x 1

  13. Permutacja + + * + * * - - - - * - * - x 1 x 1 x 1 x 1 - - x 1 x 1 - - x 1 1 x 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 x 1 - - 1 x 1 x 1 x 1 x 1 - - 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 - - x 1 x 1 x 1 x 1

  18. Krzyżowanie wymianą poddrzew

  19. Algorytm GP na diagramie źródło: www.geneticprogramming.com

  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: www.genetic-programming.com

  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. Rekombinacjawersja uproszczona źródło: www.genetic-programming.com

  27. Rekombinacja rodzice potomstwo źródło: www.geneticprogramming.com

  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ństwooperacji 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: www.genetic-programming.com

  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: www.genetic-programming.com

  35. Duplikacjaargumentó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. Duplikacjaargumentów podprocedury źródło: www.genetic-programming.com

  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: www.genetic-programming.com

  39. Usuwanie podproceduri 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: www.genetic-programming.com

  41. Usuwanieargumentów podprocedury źródło: www.genetic-programming.com

  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 1100 0010 1000 0111 1001 0010 1101 1001 0111 1100 0000 1011 1001 1110 1001 1010 1101 0011 1100 1111 0101 1010 0110 1110 0001 • 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...

More Related