Algorytmy genetyczne Nowak Sławomir

Slides:



Advertisements
Podobne prezentacje
Algorytmy genetyczne.
Advertisements

Instrukcje - wprowadzenie
„Wielokryterialna optymalizacja pracy systemu wytwarzania o strukturze przepływowej – algorytm memetyczny” Przygotował: Dominik Żelazny, IIAR.
Metody numeryczne część 1. Rozwiązywanie układów równań liniowych.
Metoda simpleks Simpleks jest uniwersalną metodą rozwiązywania zadań programowania liniowego. Jest to metoda iteracyjnego poprawiania wstępnego rozwiązania.
Wprowadzenie do optymalizacji wielokryterialnej.
Programowanie genetyczne (Genetic Programming)
ALGORYTM Co to jest algorytm?
Badania operacyjne. Wykład 1
Badania operacyjne. Wykład 2
Metody Numeryczne Wykład no 12.
Wykład no 11.
Metoda węzłowa w SPICE.
Algorytmy genetyczne Motto:
Liczby Pierwsze - algorytmy
ZŁOŻONOŚĆ OBLICZENIOWA
Nieelitystyczne algorytmy ewolucyjnej optymalizacji wielokryterialnej
Wykład 3 Sparametryzowane rodziny funkcji
Metody Sztucznej Inteligencji w Sterowaniu 2009/2010Optymalizacja miary efektywności działania sztucznych sieci neuronowych Dr hab. inż. Kazimierz Duzinkiewicz,
Metoda simpleks opracowanie na podstawie „Metody wspomagające podejmowanie decyzji w zarządzaniu” D. Witkowska, Menadżer Łódź Simpleks jest uniwersalną.
SZTUCZNA INTELIGENCJA ARTIFICIAL INTELLIGENCE
Sieci Hopfielda.
Wstęp do interpretacji algorytmów
Zapis informacji Dr Anna Kwiatkowska.
Algorytmy genetyczne.
Algorytmy genetyczne.
ALGORYTMY.
Agata Łysakowska Klasa III „n”
Hipoteza cegiełek, k-ramienny bandyta, minimalny problem zwodniczy
POJĘCIE ALGORYTMU Pojęcie algorytmu Etapy rozwiązywania zadań
O relacjach i algorytmach
Algorytmy.
opracowanie: Agata Idczak
Podstawy układów logicznych
Algorytm genetyczny.
Przegląd podstawowych algorytmów
Badania operacyjne Wykład 5.
A. Sumionka. Starodawna gra marynarska; Gra dwu i wieloosobowa; Gracze wykonują ruchy naprzemian; Złożona ze stosów, w których znajduje się pewna ilość
Zakładamy a priori istnienie rozwiązania α układu równań.
Systemy wspomagania decyzji
Systemy wspomagania decyzji
Modelowanie i identyfikacja 2010/2011Optymalizacja miary efektywności działania sztucznych sieci neuronowych Dr hab. inż. Kazimierz Duzinkiewicz, Katedra.
Elżbieta Fiedziukiewicz
Sterowanie – metody alokacji biegunów II
Źródła błędów w obliczeniach numerycznych
MS Excel - wspomaganie decyzji
W ą t e k (lekki proces) thread.
SYSTEMY EKSPERTOWE I SZTUCZNA INTELIGENCJA
Urszula Boryczka Testy De Jonga Urszula Boryczka
SYSTEMY EKSPERTOWE I SZTUCZNA INTELIGENCJA
ZAPIS BLOKOWY ALGORYTMÓW
Algorytmika.
ALGORYTMY Co to jest algorytm ? Cechy algorytmu Budowa algorytmów
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Obliczalność czyli co da się policzyć i jak Model obliczeń maszyna licznikowa dr Kamila Barylska.
Wyszukiwanie maksimum funkcji za pomocą mrówki Pachycondyla Apicalis.
Metody numeryczne szukanie pierwiastka metodą bisekcji
Grafika i komunikacja człowieka z komputerem
FRAKTALE FIGURY LISSAJOUSA Magdalena Szorc
Algorytmy Genetyczne Anna Tomkowska Politechnika Koszalińska
Wykład Rozwinięcie potencjału znanego rozkładu ładunków na szereg momentów multipolowych w układzie sferycznym Rozwinięcia tego można dokonać stosując.
Wstęp do interpretacji algorytmów
Temat 3: Podstawy programowania Algorytmy – 2 z 2 _________________________________________________________________________________________________________________.
 Formuła to wyrażenie algebraiczne (wzór) określające jakie operacje ma wykonać program na danych. Może ona zawierać liczby, łańcuchy znaków, funkcje,
Liczby 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, …(i tak dalej) nazywamy liczbami naturalnymi. Tak jak z liter tworzy się słowa, tak z cyfr tworzymy liczby. Dowolną.
Programowanie strukturalne i obiektowe Klasa I. Podstawowe pojęcia dotyczące programowania 1. Problem 2. Algorytm 3. Komputer 4. Program komputerowy 5.
Elementy cyfrowe i układy logiczne
Sztuczne Sieci Neuronowe
Wstęp do Informatyki - Wykład 6
POJĘCIE ALGORYTMU Wstęp do informatyki Pojęcie algorytmu
Zapis prezentacji:

Algorytmy genetyczne Nowak Sławomir Wyższa Szkoła Biznesu w Dąbrowie Górniczej Algorytmy genetyczne Nowak Sławomir

Inspiracja przykładami z przyrody Tam gdzie odporność i dostosowanie jest cechą pożądaną przyroda radzi sobie najlepiej. Umiejętności adaptacji i przeżycia najlepiej poznać studiując przykłady ze świata Natury.

Czym są 'algorytmy genetyczne'?... Najprościej rzecz ujmując jest to próba zasymulowania w pamięci komputera populacji jakiegoś gatunku. Na taką populację składają się dziesiątki, setki, tysiące pojedynczych osobników. Osobniki te między sobą mogą się krzyżować, mogą również następować samoistne zmiany w strukturze pojedynczego osobnika (tzw. mutacja).

Czym są 'algorytmy genetyczne'?... W wyniku krzyżowania i mutacji powstają nowe osobniki. Ze względu na fakt, że populacja ma swój z góry narzucony maksymalny rozmiar część osobników należy z niej usunąć (krok nazywany jest selekcją). Usuwane są te najmniej przystosowane.

Czym są 'algorytmy genetyczne'?... Z punktu widzenia zastosowań: Algorytm genetyczny przedstawia populację osobników, z których każdy jest propozycją rozwiązania postawionego problemu.

Czym są 'algorytmy genetyczne'?... AG działa on w środowisku, które można zdefiniować na podstawie problemu rozwiązywanego przez algorytm. W środowisku każdemu osobnikowi jest przyporządkowywana wartość liczbowa, która określa jakość reprezentowanego przez nie rozwiązania. Każdy osobnik wyposażony jest w genotyp, będący przepisem na utworzenie fenotypu – zdefiniowanego zestawu cech podlegających ocenie przez środowisko.

Czym są 'algorytmy genetyczne'?...

Czym są 'algorytmy genetyczne'?...

Wyszukiwanie rozwiązań - metody

Wyszukiwanie rozwiązań – metody enumeracyjne Wykorzystywane są też rozmaite metody enumeracyjne (przeglądowe). Stosując dyskretny odpowiednik przestrzeni nieskończonej otrzymujemy skończoną przestrzeń poszukiwań. Algorytm wylicza wartość funkcji celu przeglądając po kolei wszystkie punkty przestrzeni. W praktyce w wielu problemach przestrzenie rozwiązań wciąż są jednak zbyt wielkie, aby dało się sprawdzić wszystkie elementy po kolei.

Wyszukiwanie rozwiązań – metody analityczne Poszukuje się ekstremów lokalnych. Poszukiwanie ograniczamy do zbioru punktów w których pochodna równa jest zero i badamy najbliższe otoczenie tych punktów. Można też „skakać” po wykresie funkcji w kierunku wskazanym przez lokalny gradient. Poszukiwania często ograniczają się jednak do pewnego obszaru i możemy pominąć inne ekstrema leżące w pewnej odległości od obszaru badanego. Pod drugie metody te uzależnione są od istnienie pochodnych. Wiele spotykanych w teorii i praktyce problemów nie wykazuje „należytego respektu” dla pochodnych. Rzeczywisty świat optymalizacji pełny jest nieciągłości i przestrzeni o skomplikowanej topologii.

Wyszukiwanie rozwiązań – metody losowe Innym rozwiązaniem są algorytmy przeszukiwania losowego. Na dłuższą metę nie wykazują one jednak przewagi nad algorytmami przeglądowymi.

Cel: znalezienie optymalnego rozwiązania Celem optymalizacji jest zwiększanie efektywności aż do osiągnięcia pewnego optimum. Oceniając wartość procedur optymalizacji należy brać pod uwagę a) zbieżność b) efektywność procesu optymalizacji (przykład: businessman musi podejmować szybkie decyzje) Dowiedziono teoretycznie i empirycznie, że algorytmy genetyczne stanowią skuteczną metodę poszukiwania rozwiązań w skomplikowanych przestrzeniach.

Czym różną się AG od tradycyjnych rozwiązań? AG nie przetwarzają bezpośrednio parametrów zadania lecz ich postać zakodowaną AG prowadzą poszukiwania wychodząc nie z jednego, lecz z wielu punktów (populacji) AG korzystają tylko z funkcji celu, nie zaś jej pochodnych lub innych przekształceń AG stosują probabilistyczne, a nie deterministyczne reguły wyboru.

Czym różną się AG od tradycyjnych rozwiązań?

Czym różną się AG od tradycyjnych rozwiązań? AG nie przetwarzają bezpośrednio parametrów zadania lecz ich postać zakodowaną AG prowadzą poszukiwania wychodząc nie z jednego, lecz z wielu punktów (populacji) AG korzystają tylko z funkcji celu, nie zaś jej pochodnych lub innych przekształceń AG stosują probabilistyczne, a nie deterministyczne reguły wyboru.

Elementarny algorytm genetyczny Mechanizm jest zaskakująco posty: składa się jedynie z kopiowania i wymiany podciągów. Elementarny algorytm genetyczny składa się z trzech następujących operacji: a) reprodukcja b) krzyżowanie c) mutacja

Reprodukcja Polega na tym, że ciągi kodowe z wyższym przystosowaniem mają większe prawdopodobieństwo wprowadzenie jednego lub więcej potomków do następnego pokolenia. Dla każdego wybranego podciągu tworzymy dokładną replikę. Zostaje ona włączona do pokolenia pośredniego, stanowiącego pulę rodzicielską do dalszych operacji genetycznych. Operacja te jest namiastką darwinowskiej zasady doboru naturalnego.

Reprodukcja Istnieje wiele metod selekcji osobników do reprodukcji. Dla przykładu można przedstawić tzw. metodę ruletki. Budujemy wirtualnie koło, którego wycinki odpowiadają poszczególnym osobnikom. Im lepszy osobnik, tym większy wycinek koła zajmuje. Rozmiar wycinków może zależeć od wartości funkcji oceny, jeśli wysoka wartość oceny oznacza wysokie przystosowanie. W takim układzie prawdopodobieństwo, że lepszy osobnik zostanie wybrany jako rodzic, jest większe. Niestety ewolucja przy takim algorytmie z każdym krokiem zwalnia. Jeżeli osobniki są podobne, to każdy dostaje równy wycinek koła fortuny i presja selekcyjna spada. Algorytm słabiej rozróżnia osobniki dobre od słabszych.

Reprodukcja Kolejną jest metoda rankingowa. Obliczamy dla każdego osobnika funkcję oceny i ustawiamy je w szeregu najlepszy-najgorszy. Pierwsi na liście dostają prawo do rozmnażania, a reszta trafia do historii. Turniej - Metoda zupełnie różna od powyższych. Polega na losowym wyborze z całej populacji kilku osobników (jest to tzw. grupa turniejowa), a później z tej grupy wybierany jest osobnik najlepiej przystosowany i on przepisywany jest do nowo tworzonej populacji. Losowanie grup turniejowych oraz wybieranie z nich najlepszego osobnika należy powtórzyć aż do utworzenia całej nowej populacji. Istnieją także metody selekcji wielokryterialnej. Tworzymy kilka różnych funkcji oceny (oceniających pewne wybrane cechy osobników osobno). Dla przykładu osobniki mogą być ułożone nie w jednym, ale w kilku szeregach najlepszy-najgorszy, a proces selekcji jest bardziej złożony.

Krzyżowanie i mutacja

Mutacja W sprawie znaczenia mutacji zarówno w genetyce jak i nauce o AG panuje sporo zamieszania. Jest ona jednak niezbędna, gdyż w wyniku poprzednich operacji algorytm może okazać się zbyt „nadgorliwy” i wyeliminować jakiś potencjalnie obiecujący materiał genetyczny. Mutacja, stosowana oszczędnie stanowi swego rodzaju „polisę ubezpieczeniową” na wypadek utraty ważnych składników rozwiązania.

Inne mechanizmy W wyniku analizy świata biologicznego dokonano wyodrębnienia jeszcze wielu innych mechanizmów genetycznych i reprodukcyjnych. Wymienione jednak: reprodukcja, krzyżowanie i mutacja okazały się a) nieskomplikowane obliczeniowo b) skuteczne w większości zastosowań z dziedziny AG

Inne mechanizmy W wyniku analizy świata biologicznego dokonano wyodrębnienia jeszcze wielu innych mechanizmów genetycznych i reprodukcyjnych. Wymienione jednak: reprodukcja, krzyżowanie i mutacja okazały się a) nieskomplikowane obliczeniowo b) skuteczne w większości zastosowań z dziedziny AG

Algorytmy genetyczne w działaniu (symulacja „odręczna”) Rozważmy problem znalezienia maksimum funkcji f(x) = x2 dla x od 0 do 31. Należy znaleźć sposób zakodowania zmiennej decyzyjnej. Naturalny będzie zapis dwójkowy, 5-cio pozycyjny. Wybierzmy losową populację złożoną z 4 ciągów kodowych

Algorytmy genetyczne w działaniu (symulacja „odręczna”) Mutację w przykładzie pominięto. Typowe prawdopodobieństwo mutacji to 0,001. Mając łącznie 20 bitów w populacji możemy oczekiwać, że dotknie ona 0,02 bitów w populacji. Praktycznie więc żaden z bitów nie ulega zmianie.

Algorytmy genetyczne w działaniu (symulacja „odręczna”)

Algorytmy genetyczne w działaniu (symulacja „odręczna”) Po reprodukcji mamy 4 nowe ciągi kodowe oraz losujemy punkty krzyżowania. Analiza wyniku w drugim pokoleniu potwierdza oczekiwania: najlepsi zwiększają swoja reprezentację, najgorsi wymierają.

Algorytm genetyczny - schemat

Zastosowania AG Znadowanie ekstremów Algorytmy genetyczne równie dobrze radzą sobie w znajdowaniu przybliżeń ekstremów funkcji, których nie da się obliczyć analitycznie.

Zastosowania AG Program

Zastosowania AG Rozwiązywanie problemów NP. Algorytmy genetyczne znajdują zastosowanie tam, gdzie nie jest dobrze określony lub poznany sposób rozwiązania problemu, ale znany jest sposób oceny jakości rozwiązania. Przykładem jest np. problem komiwojażera, gdzie należy znaleźć najkrótszą drogę łączącą wszystkie miasta, tak by przez każde miasto przejść tylko raz. Ocena jakości proponowanej trasy jest błyskawiczna, natomiast znalezienie optymalnej trasy kwalifikuje się do klasy problemów NP zupełnych. Przy zastosowaniu podejścia ewolucyjnego dobre rozwiązanie można znaleźć bardzo szybko, ale oczywiście pewni możemy być jedynie uzyskania rozwiązań sub-optymalnych.

Zastosowania AG Co zrobić żeby się komiwojażer nie przepracował... Komiwojażer musi odwiedzić wszystkie miasta z zadanego regionu i wrócić do miasta początkowego (jest to problem szukania cyklu). Każde miasto nie może być odwiedzone więcej niż jeden raz.

Zastosowania AG Na wejściu mamy informację o odległościach pomiędzy miastami, a na wyjściu należy wygenerować najlepszą kolejność odwiedzanych miast. Czasami dane o miastach zapisane są w postaci listy miast wraz z ich współrzędnymi. W tym wypadku do stworzenia macierzy odległości należy wykorzystać wzór na odległość Euklidesową pomiędzy dwoma punktami. Na płaszczyźnie będzie to coś takiego: Odl(a,b)=sqrt((xa-xb)*(xa-xb)+(ya-yb)*(ya-yb))

Zastosowania AG

Zastosowania AG Możliwych tras dla n miast jest coś koło n!

Zastosowania AG Populacja początkowa będzie składała się z pewnej liczby tras wygenerowanych zupełnie losowo. Należy zastanowić się nad reprezentacją pojedynczego rozwiązania. Natychmiastowym pomysłem na reprezetntację rozwiązania jest właśnie lista kolejnych miast. Jest to reprezentacja bardzo prosta i bardzo szybka, ma ona jednak bardzo dużą wadę. Mianowicie skrzyżowanie dwóch tras może dać osobnika nieprawidłowego. Np. skrzyżowanie trasy 1-2-3-4-5 z trasą 4-5-1-3-2 w punkcie między drugim, a trzeciem miastem da następujących potomków: 1-2-1-3-2 oraz 4-5-3-4-5. Żadne z dzieci nie jest poprawne

Zastosowania AG Innym sposobem reprezentacji trasy jest lista pokazująca kolejność pobierania miast do tworzonej trasy. Punktem odniesienia dla tej reprezentacji jest lista kolejnych miast: 1-2-3-4-5. Pojedynczy osobnik np. 4-4-1-2-1 pokazuje w jakiej kolejności wybierane są kolejno odwiedzane miasta. Na początku jest czwórka więc pierwszym odwiedzanym miastem będzie miasto umieszczone na czwartej pozycji w liście odniesienia, czyli czwórka. Czwórkę tą usuwa się z listy odniesienia (pozostają miasta 1-2-3-5), natomiast lista odwiedzanych miast wygląda następująco: 4 Kolejnym elementem osobnika jest ponownie czwórka. W tej chwili na czwartym miejscu listy odniesienia jest piątka, więc kolejnym odwiedzanym miastem będzie miasto nr 5, a lista odniesienia będzie wyglądała następująco: 1-2-3.

Zastosowania AG Program 0-6-5-2-1-3-4-8-7-9 Wartość funkcji oceny: 0-6 -> 79 6-5 -> 78 5-2 -> 9 2-1 -> 43 1-3 -> 7 3-4 -> 19 4-8 -> 43 8-7 -> 39 7-9 -> 59 9-0 -> 65 Suma: 441 Program

Zastosowania AG Projektowanie genetyczne Projektowanie maszyn bądź obwodów elektrycznych jest doskonałym polem dla wykazania się algorytmów genetycznych. Inżynierowi podczas tworzenia nowych pomysłów czasami wystarczy tylko przybliżone spełnienie granicznych warunków oraz optymalizacja projektu. Algorytmy genetyczne w odróżnieniu od człowieka nie działają schematycznie. Program nie zna wcześniejszych projektów i dlatego czasami wykazuje się pewną inwencją. Co więcej człowiek często opiera się na bardzo przybliżonych modelach, które dają fałszywy obraz problemu. Algorytm genetyczny może przeanalizować złożony model i znaleźć rozwiązanie, na które człowiek by nie wpadł.

Zastosowania AG Programowanie genetyczne jest próbą stworzenia systemu, który wykorzystując mechanizmy algorytmów genetycznych, będzie tworzył programy. Ogólny zarys algorytmu genetycznego pozostaje taki sam. * Populację stanowią przykładowe programy komputerowe, z których każdy wykonuje jakieś działanie. * Krzyżowanie i mutacja tworzą nowe osobniki na podstawie już istniejących (nic się nie zmienia w porównaniu z typowym AG, należy jedynie pamiętać o zastosowaniu operatora odpowiedniego do reprezentacji) * Funkcja oceny ma zadecydować, czy dany program w przybliżeniu wykonuje te działania o które chodzi. Np. jeśli chcemy stworzyć program, który zawsze będzie znajdywał drogę wyjścia z labiryntu funkcja oceny będzie sprawdzała jak daleko 'zaszedł' dany program. Te programy, który znajdują poprawne wyjście otrzymują najwięcej punktów, natomiast te, które od wyjścia się oddalają otrzymują tych punktów najmniej.

Zastosowania AG Populacja - reprezentacja pojedynczego rozwiązania W przypadku programowania genetycznego najczęściej stosowaną reprezentacją pojedynczego rozwiązania jest struktura drzewiasta. Jest ona bardzo wygodna z punktu widzenia krzyżowania i mutacji, a poza tym wymusza kolejność przechodzenia przez węzły i liście. Jest to reprezentacja o zmiennej długości ponieważ przykładowymi programami mogą być zarówno program wykonujący sumę dwóch argumentów jak i program obliczający pierwiastki równania kwadratowego.

Zastosowania AG Przykładowy program może wyglądać następująco: Wynikiem działania programu jest pewna wartość. Wartość zwracana przez powyższe drzewo jest określona wzorem: (X*((5.00+X)-((((X-X)-(X*X))+(1.00-2.00))+(7.00-(7.00-5.00)))))

Zastosowania AG Elementami takiego drzewa mogą być: - Jako węzły: * Operatory arytmetyczne (+,-,/,...) * Operatory logiczne (&&,||,!,...) * Operatory bitowe (&,|,~,...) * Porównania (>,<,==,...) * Funkcje (trygonometryczne, potęgowe,...) * Instrukcja warunkowa - IF (jeśli spełniony jest warunek (pierwszy argument), wykonywane jest poddrzewo drugiego argumentu, jeśli nie trzeciego) * Instrukcja iteracyjna - FOR (pierwszy argument podaje ile razy ma zostać wykonane poddrzewo drugiego argumentu) - Jako liście * Wartości stałe, zmienno- lub stałoprzecinkowe (np.: 5, 10.5, -11) * Wartości zmiennych (np.: X) * Wywołania funkcji (np.: WczytajZnakZKlawiatury(), lub random()) * Wywołania procedur (np.: printf(), clrscr()) - W przypadku procedur problemem jest zwracana przez nie wartość (każdy element drzewa musi coś zwracać swojemu rodzicowi) - najczęściej przyjmuje się, że procedury zwracają zero.

Zastosowania AG Program „genetyk” Krzyżowanie polega na wymianie pomiędzy dwoma osobnikami wybranych losowo poddrzew. Poniżej przedstawiony jest przykład krzyżowania (ramką zaznaczone zostały wymieniane poddrzewa): Program „genetyk”

Zastosowania AG Projektowanie genetyczne Algorytmy genetyczne można wykorzystać do projektowania obwodów elektrycznych. Ocena każdego osobnika opiera się na własnościach elektrycznych, które łatwo jest obliczyć. Genom ma postać instrukcji dla programu, który na jego podstawie buduje obwód elektryczny. Najpierw mamy proste połączenie wejścia z wyjściem. Następnie program dodaje i usuwa połączenia i elementy. Podobny algorytmy budowały z powodzeniem różne filtry. Analogiczne podejście można zastosować przy projektowaniu anten. Algorytm „porusza się” w trójwymiarowej przestrzeni i ustawia metalowe elementy odbijające fale.

Zastosowania AG Projektowanie genetyczne Jednym z nowszych pomysłów jest wykorzystanie AG w połączeniu z układami FPGA (field-programmable gate arrays). Mają one postać chipów, które można błyskawicznie zaprogramować, aby zmienić strukturę zawartego w nich obwodu elektrycznego. Dzięki układom FPGA możliwe jest ewoluowanie prawdziwych obwodów elektrycznych. Są one wpisywane do chipa, a następnie ich właściwości elektryczne są mierzone rzeczywistym obwodem testowym. W ten sposób ewolucja może wykorzystać wszystkie fizyczne własności rzeczywistego układu elektrycznego.

Zastosowania AG video Projektowanie genetyczne Projektowanie robotów – projekt GOLEM demo.cs.brandeis.edu/golem/ video

Podsumowanie Aby ewolucja mogła zajść potrzeba bardzo dużo czasu. W praktyce oznacza to, konieczność badania populacji tysięcy osobników, na przestrzeni setek pokoleń. Moc obliczeniowa dzisiejszych komputerów jest często zbyt mała, aby w pełni wykorzystać moc AG. Z tego powodu wykorzystuje się klastry komputerów. Na każdym przebywa pewna populacja układów. Co pewien czas, część z nich migruje do innego komputera, aby polepszyć uzyskiwane wyniki.

Literatura "Algorytmy genetyczne+struktury danych=programy ewolucyjne" Zbigniew Michalewicz Wydawnictwa Naukowo-Techniczne, 1996 "Algorytmy genetyczne i ich zastosowania" David E. Goldberg Wydawnictwa Naukowo-Techniczne, 1998 www.k0pper.republika.pl/geny.htm www.wikipedia.org