Algorytmy genetyczne.

Slides:



Advertisements
Podobne prezentacje
Leszek Smolarek Akademia Morska w Gdyni 2005/2006
Advertisements

„Wielokryterialna optymalizacja pracy systemu wytwarzania o strukturze przepływowej – algorytm memetyczny” Przygotował: Dominik Żelazny, IIAR.
Analiza współzależności zjawisk
Metody numeryczne część 1. Rozwiązywanie układów równań liniowych.
Algorytmy – c.d. złożoność algorytmów struktury danych
Wprowadzenie do optymalizacji wielokryterialnej.
Metody rozwiązywania układów równań liniowych
Algorytmy genetyczne Nowak Sławomir
Programowanie genetyczne (Genetic Programming)
Badania operacyjne. Wykład 1
Badania operacyjne. Wykład 2
Metody numeryczne Wykład no 1.
Materiały pochodzą z Platformy Edukacyjnej Portalu
Algorytmy genetyczne Motto:
Hybrydowe metody optymalizacji geometrii. Prezentacja wyników.
Metody badawcze w socjologii
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,
Opracował: dr inż. Michał Krzemiński
Algorytmy genetyczne - plan wykładu
Algorytmy genetyczne - plan wykładu
Algorytmy genetyczne - plan wykładu
SZTUCZNA INTELIGENCJA ARTIFICIAL INTELLIGENCE
Zapis informacji Dr Anna Kwiatkowska.
OPORNOŚĆ HYDRAULICZNA, CHARAKTERYSTYKA PRZEPŁYWU
Metody Symulacyjne w Telekomunikacji (MEST) Wykład 4: Generowanie zdarzeń  Dr inż. Halina Tarasiuk p. 337, tnt.tele.pw.edu.pl.
Algorytmy genetyczne.
Algorytmy genetyczne.
Matematyka.
Kod Graya.
Hipoteza cegiełek, k-ramienny bandyta, minimalny problem zwodniczy
Technika Mikroprocesorowa 1
Systemy Wspomagania Decyzji
Konstrukcja, estymacja parametrów
Algorytm genetyczny.
Algorytmy memetyczne i ich zastosowania
IV OTWARTE MISTRZOSTWA OPOLA W PROGRAMOWANIU ZESPOŁOWYM
BADANIE STATYSTYCZNE Badanie statystyczne to proces pozyskiwania danych na temat rozkładu cechy statystycznej w populacji. Badanie może mieć charakter:
ALGORYTMY OPTYMALIZACJI
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.
Liczby całkowite dodatnie BCN
Sterowanie – metody alokacji biegunów II
Stało- i zmiennopozycyjna reprezentacja liczb binarnych
MS Excel - wspomaganie decyzji
Matematyka i system dwójkowy
SYSTEMY EKSPERTOWE I SZTUCZNA INTELIGENCJA
SYSTEMY EKSPERTOWE I SZTUCZNA INTELIGENCJA
Do technik tych zalicza się: * sztuczne sieci neuronowe
Algorytmika.
Seminarium licencjackie Beata Kapuścińska
Wyszukiwanie maksimum funkcji za pomocą mrówki Pachycondyla Apicalis.
Metody numeryczne szukanie pierwiastka metodą bisekcji
WYKŁAD 3 Temat: Arytmetyka binarna 1. Arytmetyka binarna 1.1. Nadmiar
Zasady arytmetyki dwójkowej
Algorytmy Genetyczne Anna Tomkowska Politechnika Koszalińska
METODY REPREZENTOWANIA IFORMACJI
METODY WYODRĘBNIANIA KOSZTÓW STAŁYCH I ZMIENNYCH
SZTUCZNA INTELIGENCJA
STATYSTYKA – kurs podstawowy wykład 11
Podstawy Informatyki.
Systemy neuronowo – rozmyte
Technika Mikroprocesorowa 1
Rozwiązywanie nierówności I-go stopnia z jedną niewiadomą
Wstęp do Informatyki - Wykład 6
Co do tej pory robiliśmy:
Jednorównaniowy model regresji liniowej
Selekcja danych Korelacja.
Zapis prezentacji:

Algorytmy genetyczne

Algorytm genetyczny to rodzaj algorytmu przeszukującego przestrzeń alternatywnych rozwiązań problemu w celu wyszukania rozwiązań najlepszych. Sposób działania algorytmów genetycznych nieprzypadkowo przypomina zjawisko ewolucji biologicznej, ponieważ ich twórca John Henry Holland właśnie z biologii czerpał inspiracje do swoich prac. Obecnie zalicza się go do grupy algorytmów ewolucyjnych.

Zapis algorytmu Najczęściej działanie algorytmu przebiega następująco: Losowana jest pewna populacja początkowa. Populacja poddawana jest ocenie (selekcja). Najlepiej przystosowane osobniki biorą udział w procesie reprodukcji. Genotypy wybranych osobników poddawane są operatorom ewolucyjnym: - są sobą kojarzone poprzez złączanie genotypów rodziców (krzyżowanie), - przeprowadzana jest mutacja, czyli wprowadzenie drobnych losowych zmian. Rodzi się drugie (kolejne) pokolenie i algorytm powraca do kroku drugiego, jeżeli nie znaleziono dostatecznie dobrego rozwiązania. W przeciwnym wypadku uzyskujemy wynik.

Działanie algorytmu genetycznego obejmuje kilka zagadnień potrzebnych do ustalenia: ustalenie genomu jako reprezentanta wyniku ustalenie funkcji przystosowania/dopasowania ustalenie operatorów przeszukiwania

Klasyczny algorytm genetyczny Wyróżnikiem k.a.g. jest prostota: prosty sposób kodowania, proste operatory, proste reguły tworzenia populacji i oceniania osobników. Chromosom jest to po prostu ciąg bitów. Każdy pojedynczy bit jest odpowiednikiem pojedynczego genu. Operacja krzyżowania polega na losowym przecięciu dwóch chromosomów (ciągów bitów) w jednym punkcie i zamianie podzielonych części między chromosomami. Powstają dwa nowe chromosomy. Operacja mutacji polega na zamianie na przeciwny losowo wybranego bitu. Selekcja osobników do krzyżowania następuje na drodze losowania metodą koła ruletki, która przydziela prawdopodobieństwa wylosowania każdego osobnika bezpośrednio na podstawie jednej funkcji oceny.

Klasyczny algorytm genetyczny Populacja ma stały rozmiar, a w kolejnych cyklach ewolucji wszystkie chromosomy podlegają wymianie na nowe (dzieci całkowicie zastępują rodziców). Rozwiązaniem problemu jest najlepiej przystosowany osobnik z ostatniej wygenerowanej populacji. Należy dodać, że musimy z góry określić warunek zatrzymania ewolucji (np. uzyskanie osobnika o wystarczająco dobrych parametrach albo po z góry określonej maksymalnej liczbie iteracji).

Sposoby budowania chromosomu Do charakteru rozwiązywanego problem możemy dopasować różne sposoby budowania chromosomu (różne sposoby kodowania parametrów zadania w postaci chromosomu). Ze względu na sposób ułożenia genów w chromosomie można wyróżnić trzy podstawowe sposoby kodowania: - Klasyczne - Permutacyjne - Drzewiaste

Klasyczne ułożenie genów Geny są heterogeniczne, tzn. geny na różnych pozycjach w chromosomie przechowują informacje różnego typu. Każda kodowana cecha fenotypu ma ściśle przypisaną na stałe pozycję w chromosomie. W wyniku krzyżowania i mutacji geny nie przemieszczają się więc, natomiast zmieniają wartości (mutując, bądź wymieniając je z odpowiadającymi genami drugiego osobnika). Takie kodowanie ma zastosowanie wszędzie tam, gdzie mamy ściśle określone (niejednorodne) cechy osobnika (parametry problemu) i chcemy im dobrać optymalne wartości. Np. w kolejnych genach zapisujemy różne cechy pewnego urządzenia: wysokość, szerokość, moc silnika, zasięg ramienia operacyjnego, typ końcówki umieszczonej na ramieniu itp. Inny przykład: mamy pewną rodzinę funkcji jednej zmiennej y=F(A,B,C,x), np. wielomiany postaci A*x*x+B*x+C. Z tej rodziny funkcji chcemy wybrać taką, która najlepiej przybliży nam pewne empirycznie zgromadzone w czasie obserwacji dane (np. temperatury powietrza w różnych porach dnia). W chromosomie układamy po kolei parametry A,B,C.

Permutacyjne ułożenie genów Geny są homogeniczne, tzn. przechowują podobne informacje, są wymienialne. W wyniku krzyżowania i mutacji geny nie zmieniają wartości, natomiast zmieniają pozycje (czyli w chromosomie występują w różnych permutacjach). Tego typu kodowanie stosuje się do rozwiązywania problemów kombinatorycznych, np. do podanego w przykładzie problemu komiwojażera, czyli wtedy, gdy interesuje nas bardziej wzajemne ułożenie i powiązania między pewnymi elementami, a nie optymalizacja wartości cech.

Drzewiasta budowa chromosomu Chromosom nie jest liniowym ciągiem genów, ale złożoną strukturą drzewiastą, posiadającą korzeń, węzły i liście. Istotne jest to, że podobnie jak w kodowaniu permutacyjnym, w wyniku stosowania operatorów genetycznych (krzyżowania i mutacji) geny zmieniają pozycje, ale dzieje się to w sposób bardziej wyrafinowany, niż przy kodowaniu liniowym - przesunięciom i wymianie podlegają całe gałęzie pospinanych genów. Jednocześnie też zazwyczaj ewolucji podlegają także zapisane w nich wartości, nie tylko ułożenie. Kodowanie drzewiaste znajduje zastosowanie w tzw. programowaniu genetycznym, czyli wszędzie tam, gdzie ewolucji podlegają reguły matematyczne (np. wzory interpolujące nieznane funkcje lub nawet złożone procedury w programach komputerowych). W regułach tych ewoluuje zarówno drzewiasta struktura wywołań funkcji (stąd taki kształt chromosomu), jak też stałe wartości przekazywane do nich jako parametry (m. in. stąd ewolucja wartości genów).

Kodowanie Kodowanie jest bardzo istotnym etapem projektowania algorytmu. Sposób zakodowania w chromosomie informacji o proponowanym rozwiązaniu wydatnie wpływa na szybkość i jakość znajdywanych wyników. Przyczyną takiego zjawiska jest wpływ kodowania na sposób w jaki przeszukiwana jest przestrzeń rozwiązań. Złe kodowanie może spowodować, że nigdy nie zostanie przeszukany fragment przestrzeni, w którym znajdują się najlepsze rozwiązania!    Ze względu na wartości przechowywane w genach można wyróżnić trzy podstawowe sposoby kodowania: Klasyczne czyli binarne Oparte na liczbach całkowitych Oparte na liczbach zmiennoprzecinkowych

Geny binarne Genami są poszczególne bity. Może mieć to zastosowanie w problemach, w których poszukujemy jednej liczby, np. przy znajdowaniu ekstremum funkcji. Geny przechowujące liczby całkowite Genami są liczby całkowite. Idealnie pasują przy kodowaniu permutacyjnym do rozróżniania (numerowania) permutowanych elementów (np. numeracja miast w problemie komiwojażera) lub reprezentowania całkowitych wag elementów (np. w problemie plecakowym). Geny przechowujące liczby rzeczywiste (zmiennoprzecinkowe) Genami są liczby rzeczywiste. Przydaje się to we wszelkich problemach w których trzeba precyzyjnie dobrać parametry (np. dobieranie wag w sieciach neuronowych, dobieranie parametrów urządzeń produkcyjnych dla podniesienia ich wydajności, dobieranie parametrów krzywych ekonomicznych i wszelkich innych funkcji modelujących obserwowane zjawiska rzeczywiste). W zależności od wartości przechowywanych w genach i przyjętego sposobu ich układania w chromosomie różnie definiuje się operatory genetyczne.

Kodowanie zmienno przecinkowe Wartość liczby zmiennoprzecinkowej obliczamy według wzoru: L(FP) = m * pc gdzie: L(FP) - wartość liczby zmiennoprzecinkowej m - mantysa p - podstawa c – cecha W systemie dwójkowym wszystkie trzy elementy m, p i c będą zapisane dwójkowo za pomocą odpowiednio dobranego systemu kodowania liczb. Podstawa p zawsze będzie równa 2.

Kodowanie zmienno przecinkowe Chromosomu zbudowanego z 8 bitów ponumerowanych od 0 do 7 można podzielić na 2 części w następujący sposób: b7 b6 b5 b4 b3 b2 b1 b0 cecha mantysa Cecha zawarta będzie w bitach od b4 do b7. Dla ułatwienia ustalmy, iż cecha jest liczbą całkowitą ze znakiem w kodzie U2.  Wartość cechy obliczamy wg wzoru: c = b7*(-23) + b6*22 + b5*21 + b4*20 = (-8)*b7 + 4*b6 + 2*b5 + b4

Kodowanie zmienno przecinkowe Mantysa zawarta jest w bitach od b0 do b3 i jest 4-bitową liczbą stałoprzecinkową w kodzie U2 Pozycję przecinka umieszczamy pomiędzy bitami b1 i b2. Zatem wartość mantysy obliczamy według wzoru: m = b3b2 , b1b0(U2) =  b3*(-21) + b2*20 + b1*2-1 + b0*2-2 = -2*b3 + b2 + ½*b1 + ¼*b2

Kodowanie zmienno przecinkowe Dla liczby 11010111 c = 1101(U2) 1101(U2) = -8 + 4 + 1 = -3   m = 01,11(U2) 01,11(U2) = 1 + + = 1 L(FP) = m * 2c = 1 * 2-3 = * =

Funkcja przystosowania Proces wyboru osobników poddanych ocenie według określonych kryteriów. Kryteria te zapisuje się w postaci funkcji oceny albo inaczej funkcji przystosowania. Algorytm genetyczny dąży zwykle do jej minimalizacji (maksymalizacji). Jako kryterium często przyjmowana jest funkcja celu rozważanego problemu optymalizacji.   Funkcja oceny Funkcja oceny to miara jakości dowolnego osobnika (fenotypu, rozwiązania) w populacji. Dla każdego osobnika jest ona obliczana na podstawie pewnego modelu rozwiązywanego problemu. Załóżmy dla przykładu, że chcemy zaprojektować obwód elektryczny o pewnej charakterystyce. Funkcja oceny będzie premiowała rozwiązania najbardziej zbliżonej do tej charakterystyki, zbudowane z najmniejszej liczby elementów. W procesie selekcji faworyzowane będą najlepiej przystosowane osobniki. One staną się "rodzicami" dla nowej populacji.

Metody selekcji Istnieje wiele metod selekcji. 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.

Metody selekcji Pozbawiona tej wady 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. Wadą metody jest niewrażliwość na różnice pomiędzy kolejnymi osobnikami w kolejce. Może się okazać, że sąsiadujące na liście rozwiązania mają różne wartości funkcji oceny, ale dostają prawie taką samą ilość potomstwa.. 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.

Metody selekcji Selekcja turniejowa Bardzo często zastępuje metodę ruletki Dzielenie populacji na grupy, „rozgrywanie turnieju” pomiędzy osobnikami z poszczególnych grup. Do populacji rodzicielskiej wybierane są najlepsze osobniki z każdej grupy ST można dokonywać w sposób deterministyczny (z prawdopodobieństwem równym 1) lub losowo (p<1) Populację można dzielić na grupy o różnej liczebności (zwykle po 2 lub 3 osobniki) Rozmiar turnieju określa siłę presji selekcyjnej

Operatory przeszukiwania W każdym cyklu (każde pokolenie) poddawane są "obróbce" za pomocą operatorów ewolucyjnych. Celem tego etapu jest wygenerowanie nowego pokolenia, na podstawie poprzedniego, które być może będzie lepiej dopasowane do założonego środowiska. Operator krzyżowania ma za zadanie łączyć w różnych kombinacjach cechy pochodzące z różnych osobników populacji, zaś operator mutacji ma za zadanie zwiększać różnorodność tych osobników. O przynależności dowolnego algorytmu do klasy algorytmów genetycznych decyduje głównie zastosowanie operatora krzyżowania i praca z całymi populacjami osobników (idea łączenia w przypadkowy sposób genotypów nieprzypadkowo wybranych osobników). Równie ważny jest operator mutacji. Jeśli krzyżowanie traktować jako sposób eksploatacji przestrzeni rozwiąń, to mutacja jest sposobem na jej eksplorację. Może się jednak zdarzyć, że dla niektórych zagadnień jej zastosowanie nie jest krytyczne.

Na czym polega krzyżowanie Krzyżowanie to, podobnie jak w ewolucji organizmów biologicznych, proces wymiany informacji zapisanej w genach między genotypami pochodzącymi od różnych osobników. W algorytmie genetycznym sprowadza się to do konstrukcji nowego genotypu na podstawie genotypów wybranych wcześniej z populacji w procesie selekcji. Nowo powstały genotyp (zazwyczaj jest to po prostu jeden chromosom), zawierający pewną kombinację genów z chromosomów rodzicielskich wchodzi do populacji potomnej i (po procesie ew. mutacji) jest podstawą do utworzenia nowego osobnika, który może podlegać ocenie. Krzyżowanie jest operatorem o roli dominującej w algorytmach określanych mianem genetycznych. To krzyżowanie decyduje o konieczności utrzymywania różnorodnej, licznej populacji, która ewoluuje jako całość. Krzyżowaniu bezpośrednio podlegają chromosomy, które są w tym procesie dzielone na mniejsze części, zawierające mniejsze lub większe ciągi genów. Same zaś geny są jednostkami atomowymi - nie podlegają dzieleniu na mniejsze części.

Różne sposoby krzyżowania W zależności od sposobu budowy chromosomu i od problemu operator krzyżowania może być definiowany bardzo różnie. Krzyżowanie proste Przy klasycznym rozmieszczeniu genów w chromosomie jest to operacja stosunkowo prosta. Jeśli mamy dwa chromosomy to wybieramy (losowo) miejsce, w którym je rozcinamy (oba w tym samym miejscu). Punkt rozcięcia to inaczej punkt krzyżowania. Po rozcięciu wymieniamy odcięte części. W ten sposób powstają dwa nowe chromosomy.

Punktów krzyżowania może być więcej niż jeden, czyli każdy z chromosomów możemy podzielić na więcej niż dwie części przed wymianą genów.

Mutacja Mutacja wprowadza do genotypu losowe zmiany. Jej zadaniem jest wprowadzanie różnorodności w populacji, czyli zapobieganie (przynajmniej częściowe) przedwczesnej zbieżności algorytmu. Mutacja zachodzi z pewnym przyjętym prawdopodobieństwem - zazwyczaj rzędu 1%. Jest ono niskie, ponieważ zbyt silna mutacja przynosi efekt odwrotny do zamierzonego: zamiast subtelnie różnicować dobre rozwiązania - niszczy je. Stąd w procesie ewolucji mutacja ma znaczenie drugorzędne, szczególnie w przypadku długich chromosomów. W przypadku chromosomów kodowanych binarnie losuje się zazwyczaj dwa geny i zamienia się je miejscami bądź np. neguje pewien wylosowany gen. W przypadku genotypów zakodowanych liczbami całkowitymi stosuje się permutacje. W przypadku genotypów zakodowanych liczbami rzeczywistymi wprowadza się do przypadkowych genów losowe zmiany o danym rozkładzie - najczęściej normalnym.

Zastosowania algorytmów genetycznych 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, co wynika z formalnie opisanej trudności problemów klasy NP. Algorytmy genetyczne równie dobrze radzą sobie w znajdowaniu przybliżeń ekstremów funkcji, których nie da się obliczyć analitycznie.

Zastosowania algorytmów genetycznych Projektowanie genetyczne Algorytmy genetyczne wykorzystywane są również do zarządzania populacją sieci neuronowych. Projektowanie maszyn bądź obwodów elektrycznych jest doskonałym polem dla wykazania się algorytmów genetycznych. Inżynierowi podczas tworzenia nowych pomysłów nie chodzi o znalezienie najlepszego możliwego rozwiązania. 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 zagadnienie i znaleźć rozwiązanie, na które człowiek by nie wpadł.

Zastosowania algorytmów genetycznych Projektowanie obwodów elektrycznych Algorytmy genetyczne można wykorzystać do projektowania obwodów elektrycznych. Ocena każdego osobnika opiera się na ilości elementów oraz własnościach elektrycznych, które łatwo jest obliczyć. Główna różnica tkwi w algorytmie budowy osobnika na podstawie genomu. Ma on 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. Zbudowany tak obwód jest oceniany na podstawie prostych zależności fizycznych. Podobny algorytm genetyczny zbudował samodzielnie filtr drabinkowy. Analogiczne podejście można zastosować przy projektowaniu anten. Różnica tkwi w tym, że wirtualny budowniczy porusza się w trójwymiarowej przestrzeni i ustawia metalowe elementy odbijające fale.

Zastosowania algorytmów genetycznych Przeszukiwanie Algorytmy genetyczne zapewniają skuteczne mechanizmy przeszukiwania dużych przestrzeni rozwiązań. Ponieważ grupowanie należy do tej kategorii zadań to oczywiste jest, że algorytmy genetyczne stosowane są w grupowaniu. Algorytmy genetyczne są bardziej niezależne od wstępnej inicjalizacji oraz mniej skłonne do znajdowania lokalnych rozwiązań w miejsce optymalnych. Przykładem może być zagadnienie grupowania w którym w miejsce klasycznych algorytmów z powodzeniem stosuje się algorytmy genetyczne.