Programowanie Genetyczne

Podobne dokumenty
Obliczenia inspirowane Naturą

Programowanie genetyczne

Programowanie genetyczne, gra SNAKE

Algorytmy genetyczne

Algorytm genetyczny (genetic algorithm)-

Programowanie genetyczne (ang. genetic programming)

Programowanie genetyczne - gra SNAKE

O badaniach nad SZTUCZNĄ INTELIGENCJĄ

Odkrywanie algorytmów kwantowych za pomocą programowania genetycznego

Algorytmy ewolucyjne (3)

Aproksymacja funkcji a regresja symboliczna

Algorytmy ewolucyjne NAZEWNICTWO

O badaniach nad SZTUCZNĄ INTELIGENCJĄ

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

Zadanie 5 - Algorytmy genetyczne (optymalizacja)

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

O badaniach nad SZTUCZNĄ INTELIGENCJĄ

Dobór parametrów algorytmu ewolucyjnego

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

1. Problem badawczy i jego znaczenie. Warszawa,

Sortowanie. Bartman Jacek Algorytmy i struktury

Algorytmy genetyczne

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

Wykorzystanie metod ewolucyjnych w projektowaniu algorytmów kwantowych

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

Algorytmy ewolucyjne `

Optymalizacja. Wybrane algorytmy

Wstęp do Sztucznej Inteligencji

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

Definicje. Algorytm to:

Algorytmy stochastyczne, wykład 02 Algorytmy genetyczne

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

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

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

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

Strategie ewolucyjne (ang. evolu4on strategies)

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

Tomasz Pawlak. Zastosowania Metod Inteligencji Obliczeniowej

Generowanie i optymalizacja harmonogramu za pomoca

ALGORYTMY EWOLUCYJNE W OPTYMALIZACJI JEDNOKRYTERIALNEJ

Algorytmy stochastyczne, wykład 01 Podstawowy algorytm genetyczny

Katedra Informatyki Stosowanej. Algorytmy ewolucyjne. Inteligencja obliczeniowa

ALGORYTMY GENETYCZNE ćwiczenia

M T E O T D O ZI Z E E A LG L O G R O Y R TM

Algorytmy metaheurystyczne podsumowanie

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

Temat: Algorytm kompresji plików metodą Huffmana

Problem Komiwojażera - algorytmy metaheurystyczne

Testy De Jonga. Problemy. 1 Optymalizacja dyskretna i ciągła

Technologie informacyjne - wykład 12 -

SCHEMAT ROZWIĄZANIA ZADANIA OPTYMALIZACJI PRZY POMOCY ALGORYTMU GENETYCZNEGO

ALGORYTMY GENETYCZNE (wykład + ćwiczenia)

Wprowadzenie do teorii systemów ekspertowych

Obliczenia ewolucyjne - plan wykładu

Algorytmy klasyfikacji

PROGRAMOWALNE STEROWNIKI LOGICZNE

Efektywność algorytmów

Grupy pytań na egzamin inżynierski na kierunku Informatyka

O ALGORYTMACH I MASZYNACH TURINGA

Festiwal Myśli Abstrakcyjnej, Warszawa, Czy SZTUCZNA INTELIGENCJA potrzebuje FILOZOFII?

Zadania laboratoryjne i projektowe - wersja β

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

Podstawy Informatyki. Metody dostępu do danych

8. Drzewa decyzyjne, bagging, boosting i lasy losowe

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

Język ludzki kod maszynowy

KARTA MODUŁU KSZTAŁCENIA

Politechnika Wrocławska Wydział Elektroniki INFORMATYKA SYSTEMÓW AUTONOMICZNYCH. Heurystyka, co to jest, potencjalne zastosowania

Algorytmy genetyczne. Dariusz Banasiak. Katedra Informatyki Technicznej Wydział Elektroniki

Automatyczny dobór parametrów algorytmu genetycznego

Zastosowanie metod eksploracji danych (data mining) do sterowania i diagnostyki procesów w przemyśle spożywczym

Autorski program nauczania

5. Algorytm genetyczny przykład zastosowania

Genomika Porównawcza. Agnieszka Rakowska Instytut Informatyki i Matematyki Komputerowej Uniwersytet Jagiellooski

Algorytm. a programowanie -

Sztuczna inteligencja stan wiedzy, perspektywy rozwoju i problemy etyczne. Piotr Bilski Instytut Radioelektroniki i Technik Multimedialnych

Metody Rozmyte i Algorytmy Ewolucyjne

Wybrane podstawowe rodzaje algorytmów

PLAN WYKŁADU OPTYMALIZACJA GLOBALNA ZADANIE KOMIWOJAŻERA METODY ROZWIĄZYWANIA. Specyfika zadania komiwojażera Reprezentacje Operatory

Zaawansowane algorytmy i struktury danych

Obliczenia inspirowane Naturą

MIO - LABORATORIUM. Imię i nazwisko Rok ak. Gr. Sem. Komputer Data / EC3 VIII LAB...

Programowanie czas zacząć

O REDUKCJI U-INFORMACJI

EGZAMIN MATURALNY W ROKU SZKOLNYM 2017/2018 INFORMATYKA

TEORETYCZNE PODSTAWY INFORMATYKI

METODY SZTUCZNEJ INTELIGENCJI algorytmy ewolucyjne

Elementy kognitywistyki II: Sztuczna inteligencja. WYKŁAD III: Problemy agenta

Urszula Poziomek, doradca metodyczny w zakresie biologii Materiał dydaktyczny przygotowany na konferencję z cyklu Na miarę Nobla, 14 stycznia 2010 r.

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

ALGORYTMY I STRUKTURY DANYCH

przetworzonego sygnału

Algorytmy genetyczne w interpolacji wielomianowej

zna podstawową terminologię w języku obcym umożliwiającą komunikację w środowisku zawodowym

Program "FLiNN-GA" wersja 2.10.β

Algorytmy ewolucyjne 1

Ewolucjonizm NEODARWINIZM. Dr Jacek Francikowski Uniwersyteckie Towarzystwo Naukowe Uniwersytet Śląski w Katowicach

Metody Kompilacji Wykład 7 Analiza Syntaktyczna

SZTUCZNA INTELIGENCJA

WAE Jarosław Arabas Pełny schemat algorytmu ewolucyjnego

Transkrypt:

Politechnika Wrocławska Wydział Elektroniki Kierunek Informatyka Damian Kowalczyk Programowanie Genetyczne Informatyka Systemów Autonomicznych Praca zaliczeniowa Wrocław 2007

Spis treści Wprowadzenie Konwencjonalne Programowanie Genetyczne Problemy z rekombinacją Perspektywy Literatura

1. Wprowadzenie Programowanie genetyczne (GP) to metoda automatycznego generowania rozwiązania programistycznego, dla problemu zadanego definicją wysokiego poziomu. Programowanie Genetyczne zaczyna od problemu zadanego w formie co ma być zrobione i automatycznie tworzy program komputerowy, który rozwiązuje problem. Istnieje już 36 instancji dla których dzięki programowaniu genetycznemu udało się osiągnąć wynik konkurencyjny dla wydajności ludzkiej, włączając w to 15 instancji gdzie programowanie genetyczne utworzyło rozwiązanie które poprawia lub powtarza funkcjonalność opatentowanych rozwiązań XX wieku, 6 instancji gdzie programowanie genetyczne osiągnęło podobny wynik do osiągnięcia 21 wieku i 2 instancje, które zostały uznane za innowację GP gotową do opatentowania. Biorąc pod uwagę te wyniki mówimy, że Genetic programming now routinely delivers high-return human-competitive machine intelligence. To twierdzenie jest podstawowym wnioskiem książki z 2003 roku: Genetic Programming IV: Routine Human-Competitive Machine Intelligence. 2. Konwencjonalne Programowanie Genetyczne Programowanie Genetyczne (GP) to uogólnione określenie znaczące zazwyczaj ewolucyjny system przetwarzający, służący rozwiązywaniu problemów. Wczesne formy GP można znaleźć już u Friedberg a [1958] i Cramer a [1985]. Pierwszy raz jednak nazwa Programowanie Genetyczne została użyta przez Koza [1992] i ze względu na pierwsze w historii udane i uznane w szerokim gronie, praktyczne zastosowanie GP, staje się podstawą konwencjonalnych systemów programowania genetycznego. Konwencjonalne Programowanie Genetyczne Koza y zakłada reprezentację programów przez drzewa parsujące. Drzewo parsujące jest strukturą drzewiastą, która ujmuje kolejność wykonywania komponentów funkcjonalnych wewnątrz programu, w ten sposób, że wyjście program występuje w postaci korzenia; funkcje występują pod postacią węzłów a a argumenty funkcji dane są w węzłach potomnych; symbole terminalne natomiast możemy odnaleźć w liściach. Drzewo parsujące oryginalnie było wyborem naturalnej struktury dla reprezentacji programów w języku LISP, używanym przez Koza e na początku programowania genetycznego. To tylko jeden z powodów wyboru tej reprezentacji.

Problem w programowaniu genetycznym jest charakteryzowany przez funkcję dopasowania, zbiór komponentów funkcjonalnych i wyrażeń terminalnych. Zbiór funkcji i terminali determinuje z jakich komponentów program może się składać a funkcja dopasowania mierzy jak wyjście danego programu jest bliskie oczekiwanemu wyjściu (wynikowi). Inicjująca populacja składa się z osobników o losowej kombinacji komponentów funkcjonalnych I terminalnych w obrębie dopuszczalnych zbiorów, wspomnianych powyżej. Rys 2: Krzyżowanie poddrzew tworzy zupełnie nowe program. Poddrzewa są wybierane losowo z dwóch istniejących drzew poddawanych krzyżowaniu i zamieniane by wyprodukować drzewopotomka. Konwencjonalne programowanie genetyczne dziedziczy nowe programy z istniejących na trzy różne sposoby. Punktowa mutacja losowo zamienia funkcje albo znaki terminalne w wybranej części drzewa z innym w obrębie tego samego drzewa.

Liczba węzłów poddawanych mutacji jest określana parametrem prawdopodobieństwa zwanym stopniem mutacji. Mutacja poddrzewa, dla porównania, losowo zmienia całe poddrzewa; budując nowe z nowych funkcji lub symboli terminalnych. Krzyżowanie poddrzew, które jest tradycyjnie uznanawane za najważniejszy operator wariacji Programowania Genetycznego, tworzy nowe drzewa przez zamianę losowo wybranych poddrzew pomiędzy istniejącymi drzewami zilustrowano tą operację na rysunku powyżej. Programowanie genetyczne zostało zastosowane wśród ogromnej rzeczy różnorodnych problemów. Część z nich jest używana w celu porównania wydajności poszczególnych podejść genetycznego programowania: algebraiczna regresja dla przykładu. Inną grupą są użycia ukierunkowane na odkrycie na nowo rozwiązań zaproponowanych wcześniej przez człowieka, jak również odkrywanie zupełnie nowych rozwiązań po porównywalnej (konkurencyjnej przyp. Damian Kowalczyk) wydajności (przykład [Miller et al., 2000]). Istnieją również domeny, w których PG wyewoluowało, rozwiązania do problemów, które nie zostały wcześniej rozwiązane przez człowieka. Do tej grupy zaliczają się poszczególne algorytmy komputerów kwantowych i problemy poznawcze w biologii. (e.g. [Koza, 2001]). 3. Problemy z rekombinacją Pomimo sukcesów, GP jest znany z problemów behawioralnych ograniczających jego zastosowanie i wydajność. Najważniejszym z nich jest sposób, w jaki krzyżowanie poddrzew wpływa na drzewa parsujące. Na początku kłócono się, czy krzyżowanie poddrzew ma jakiekolwiek znaczące znaczenie w rekombinacji I przez to wpływ na wydajność poszukiwania. Po drugie krzyżowanie poddrzew jest uważane za generujące sporą nadmiarowość kodu. Przyjrzymy się bliżej obu kwestiom w tym rozdziale. W [Koza, 1992] kwestią sporną jest czy krzyżowanie poddrzew jest operatorem dominującym w programowaniu genetycznym: odpowiedzialnym za eksploatowanie istniejącego materiału genetycznego w poszukiwaniu coraz to lepszych rozwiązań. Niemniej jednak eksperymentalne wyniki [Angeline, 1997,Luke and Spector, 1997,Luke and Spector, 1998] sugerują inaczej. W [Angeline, 1997], autor porównuje wydajność krzyżowania poddrzew z wydajnością krzyżowania bezgłowego kurczaka

które przypomina krzyżowanie, ale które zachowaniem swym przystaje raczej do poddrzewnej mutacji. Działanie tego operatora polega na przeprowadzaniu zamiany poddrzew pomiędzy istniejącym drzewem parsującym I losowo generowanym drzewem podobnych rozmiarów. Wśród trzech domen, czy przestrzeni problemowych, różnica pomiędzy wydajnością samego krzyżowania poddrzew i samego krzyżowania bezgłowej kury jest statystycznie nieznaczące: sugerując, że zachowanie krzyżowania poddrzewnego nie jest wcale lepsze niż makro mutacji. Wciąż jednak (pomijając sugestie autora) zachowanie krzyżowania poddrzew nie jest ekwiwalentem krzyżowania bezgłowej kury ; biorąc pod uwagę, że krzyżowanie poddrzew ma do dyspozycji wyłącznie materiał genetyczny istniejący w danej populacji. Można się również spierać, czy oryginalne krzyżowanie nie dawało złych wyników w tych eksperymentach ze względu na brak mutacji, dzięki której mogłoby pozostawać przy przedstawianiu wciąż nowego materiału genetycznego i dywersyfikacji wewnątrz populacji. Poza tym nowsze prace Luke and Spector [1997],Luke and Spector [1998] również sugerują, że krzyżowanie poddrzew sprawdza się trochę lepiej niż makro mutacja. Luke i Spector porównują przebiegi z 90% krzyżowaniem poddrzew i 10% mutacją poddrzew z przebiegami 10% krzyżowania poddrzew i 90% mutacją poddrzew na różnych płaszczyznach problemowych i z różnymi wartościami parametrów. Ich wyniki wykazują, że podczas gdy krzyżowanie faktycznie sprawdza się lepiej niż mutacja poddrzew, korzyść jest wciąż delikatna i w większości przypadków różnica w wydajności jest statystycznie nieznaczna. Autorzy również zauważają, że dla niektórych problemów (włączając regresję symboliczną), krzyżowanie sprawdza się lepiej dla większych populacji I mniejszej liczby pokoleń, podczas gdy mutacja poddrzew sprawdza się lepiej dla małych populacji I dużej liczby pokoleń. Jednak nie dotyczy to wszystkich problemów. Słaba wydajność ma całkiem możliwe mniej wspólnego z krzyżowaniem niż ma do wspólnego z reprezentacją drzewiastą. Zostało niemal bezsprzecznie przyjętym, że krzyżowanie poprawia wydajność dla domen problemów o rozsądnie niskiej epistazie i z rozsądną aranżacją genów w obrębie chromosomu. W końcu rekombinacja jest logicznie użyteczną operacją umożliwia ewolucyjną współpracę przez umożliwienie wymiany informacji w obrębie populacji. Ponadto, wydaje się odgrywać pierwszą rolę w ewolucji eukariotycznej.

Rys 3: Utrata kontekstu następująca po krzyżowaniu poddrzew. Krzyżowanie poddrzew to naturalny operator rekombinacji dla drzew parsujących. Jednakże poprzez wymianę losowo wybranych poddrzew między programami, trudno jest zachować logiczną poprawność operacji. Zilustrowane jest to na rysunku powyżej. W tym przykładzie, losowe poddrzewo jest wybierane z istniejącego drzewa parsującego i zastępowane przez poddrzewo losowo wybierane z innego drzewa. Te drzewa parsujące mają ważne wspólne zachowanie: oba przyporządkowują funkcje AND do wyjść funkcji OR I XOR i oba mają lewostronną gałąź która oblicza funkcję OR dla liczby wejściowych terminali, więc w zasadzie wyglądałoby na to, że mają zgodną ze sobą informację do współdzielenia. Jednakże, ponieważ wymieniane podgałęzie są wybierane z różnych pozycji i mają różny rozmiar, kształt i funkcjonalność, zachowanie potomnego rozwiązania posiada mało wspólnego z którymkolwiek z rodziców! (porównanie z nogą, doktorze przyp. DK) Zachowanie każdego z tych programów jest zdeterminowane przez wyjście funkcji AND u szczytu programu. Wyjście funkcji zależy zarówno od funkcji, której dotyczy, jak również od jej wejściowego: wejść, którym przydzielona jest ta funkcja. Tak więc, jeżeli jej kontekst wejściowy zmienia się znacząco, równie znacząco zmienia się jej wyjście. Biorąc pod uwagę, że większość programów będzie generowała bardzo słabe rozwiązanie

problemu, I że rodzicielskie program są prawdopodobnie relatywnie dobre w rozwiązywaniu go, niemal oczywistym jest, że słaby potomek został mocno zmieniony. W ilustrowanym przykładzie, jedno z wejść funkcji AND zmienia się z funkcji OR trzech wejść na funkcję AND jednego wejścia niej samej: prowadzi to do znaczących zmian w zachowaniu wyjściowym. Ponieważ jest niebywałym, żeby krzyżowanie poddrzew wymieniało poddrzewa z podobną pozycją, rozmiarem, kształtem I zachowaniem, większość krzyżowań poddrzew w Programowaniu genetycznym będzie prowadziło do potomnych programów mniej dopasowanych niż ich rodzice. Tak naprawdę to się dzieje, ponieważ kontekst komponentów jest zapisany w symbolach terminalnych ich pozycji wewnątrz drzewa parsującego i ponieważ krzyżowanie poddrzew nie zachowuje pozycji komponentów. Później w ramach tej tezy kwestią sporną będzie, iż jest to wina w takim samym stopniu reprezentacji program jak I operatora krzyżowania poddrzew. 4. Perspektywy Aplikacje Programowania Genetycznego Istnieją liczne aplikacje programowania genetycznego, włączając w nie: Problemy black art, tak jak analogowa synteza obwodów elektrycznych, kontrolerów, anten, sieci i reakcji chemicznych, i innych obszarów projektowych programowanie nieprogramowalnego (PTU) włączając w to tworzenie programów komputerowych dla niekonwencjonalnych urządzeń obliczeniowych takich jak automaty komórkowe, systemy wieloagentowe, systemy równoległe, field programmable gate arrays (FPGA), field programmable analog arrays, kolonii mrówkowych, inteligencję mrowiskową, systemy rozproszone, i tym podobne nowe wynalazki komercyjnie użyteczne (CUNI) dotyczące użycia programowania genetycznego jako automatycznej maszyny wynalazczej dla tworzenia nowych, komercyjnie wykorzystywanych inwencji

Poszukiwania nad coraz to nowymi obszarami i domenami w których podejście programowania genetycznego byłoby aplikowalne, w celu osiągnięcia inteligencji maszynowej, o konkurencyjnej wydajności dla człowieka trwają nadal i trwają bez przerwy. 5. Literatura WWW.codeguru.com WWW.wikipedia.com WWW.google.com http://www.k0pper.republika.pl