Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
OpublikowałWawrzyniec Szmidt Został zmieniony 11 lat temu
1
Materiały pochodzą z Platformy Edukacyjnej Portalu www.szkolnictwo.pl
Wszelkie treści i zasoby edukacyjne publikowane na łamach Portalu mogą być wykorzystywane przez jego Użytkowników wyłącznie w zakresie własnego użytku osobistego oraz do użytku w szkołach podczas zajęć dydaktycznych. Kopiowanie, wprowadzanie zmian, przesyłanie, publiczne odtwarzanie i wszelkie wykorzystywanie tych treści do celów komercyjnych jest niedozwolone. Plik można dowolnie modernizować na potrzeby własne oraz do wykorzystania w szkołach podczas zajęć dydaktycznych.
2
Algorytmy genetyczne
3
WSTĘP Idea algorytmu genetycznego została zaczerpnięta z nauk przyrodniczych opisujących zjawiska doboru naturalnego i dziedziczenia. Mechanizmy te polegają na przetrwaniu osobników najlepiej dostosowanych w danym środowisku, podczas gdy osobniki gorzej przystosowane są eliminowane. Algorytmy genetyczne są numerycznymi metodami optymalizacji, rozwiązującymi problem właściwego wyznaczenia dużej liczby parametrów systemu (np. decyzyjnego) przy użyciu specyficznych operatorów, które generują kolejne punkty w przestrzeni rozwiązań wykorzystując zasady analogiczne jak właśnie w zjawiskach ewolucji i dziedziczności.
4
Podstawowe pojęcia Populacja – jest to zbiór osobników o określonej liczebności. Osobnikami (organizmami) populacji w GA są zakodowane w postaci chromosomów zbiory parametrów zadania. Chromosom jest to ciąg bitów. Każdy pojedynczy bit jest odpowiednikiem pojedynczego genu. Genotyp (struktura) jest to zbiór ciągów kodowych. Fenotyp jest to zewnętrzne uwidocznienie genów, zbiór parametrów, rozwiązanie. To złożona struktura powstała (wygenerowana) na podstawie kodu genetycznego. Owa złożona struktura jest mniej lub bardziej przystosowana do rozwiązywania postawionych przez otoczenie problemów i w zależności od stopnia tego przystosowania ma większą lub mniejszą możliwość przekazywania swych cech kolejnym pokoleniom.
5
Klasyczny AG Na podstawowy algorytm genetyczny składają się operacje:
1. Inicjalizacja - czyli utworzenie populacji początkowej, polega na losowym wyborze żądanej liczby chromosomów (osobników) reprezentowanych przez ciągi binarne o określonej długości. 2. Ocena przystosowania chromosomów w populacji - polega na obliczeniu wartości funkcji przystosowania dla każdego chromosomu z tej populacji. Im większa jest wartość tej funkcji tym lepsza "jakość" chromosomów. Postać funkcji przystosowania zależy od rodzaju rozwiązywanego problemu. W założeniu funkcja ta przyjmuje zawsze wartości nieujemne i dodatkowo rozwiązywany problem optymalizacji jest problemem poszukiwania maksimum funkcji. Pierwotna postać funkcji musi spełniać powyższe założenia, w przeciwnym wypadku dokonuje się odpowiedniej transformacji.
6
3. Sprawdzenie warunków zatrzymania - określenie takiego warunku dla algorytmu genetycznego zależy od jego konkretnego zastosowania. Zatrzymanie algorytmu w zagadnieniach optymalizacji następuje po uzyskaniu żądanej wartości optymalnej lub w przypadku, gdy jego dalsze działanie nie poprawia już uzyskanej najlepszej wartości. Algorytm może zostać zatrzymany po upływie określonego czasu lub określonej ilości iteracji. Jeśli warunek zatrzymania jest spełniony następuje przejście do ostatniego kroku, czyli wyprowadzenia "najlepszego" chromosomu. W przypadku niespełnienia powyższego warunku następnym krokiem jest selekcja. 4. Selekcja chromosomów - polega na wybraniu na podstawie obliczonych wartości funkcji przystosowania (krok 2), tych chromosomów, które brały udział w tworzeniu potomków do następnego pokolenia (następnej generacji). Wybór jest zgodny z zasadą naturalnej selekcji tzn. największe szanse na udział w tworzeniu nowych osobników mają chromosomy o największej wartości funkcji przystosowania. W wyniku procesu selekcji zostaje utworzona populacja rodzicielska zwana pulą rodzicielską o liczebności równej liczebności bieżącej populacji.
7
5. Zastosowanie algorytmów genetycznych do chromosomów wybranych metodą selekcji - prowadzi do utworzenia nowej populacji. Stanowi ona populację potomków otrzymanych z wybranej populacji rodziców (metodą selekcji). W GA mamy dwa podstawowe operatory genetyczne: operator krzyżowania operator mutacji 6. Utworzenie nowej populacji - chromosomy otrzymane w wyniku działania operatorów genetycznych na chromosomy tymczasowej populacji rodzicielskiej wchodzą w skład nowej populacji, która staje się populacją bieżącą dla danej iteracji algorytmu genetycznego. W każdej kolejnej iteracji oblicza się wartość funkcji przystosowania każdego z chromosomów tej populacji. Następnie sprawdza się warunek zatrzymania algorytmu w wyniku, czego wyprowadza się wynik w postaci chromosomu o największej wartości funkcji przystosowania, w przeciwnym wypadku przechodzi się do selekcji. 7. Wyprowadzenie "najlepszego" chromosomu - jeśli jest spełniony warunek zatrzymania algorytmu genetycznego należy wyprowadzić wynik. Najlepszym rozwiązaniem jest chromosom o największej wartości funkcji przystosowania.
8
Operatory genetyczne Trzy podstawowe operacje, wykonywane na osobnikach (chromosomach) z populacji to: Selekcja polega na wyborze z bieżącej populacji najlepiej przystosowanych osobników, których materiał genetyczny zostanie poddany operacji krzyżowania i przekazany osobnikom następnej populacji. Kryterium wyboru jest tu wartość funkcji przystosowania. Krzyżowanie polega na wymianie materiału genetycznego pomiędzy losowo dobranymi parami osobników wybranych podczas selekcji. W wyniku krzyżowania powstają nowe chromosomy, które wejdą w skład kolejnej populacji (pokolenia). Okazuje się, ze chromosomy powstałe w wyniku krzyżowania często są lepiej przystosowane (maja większą wartość funkcji przystosowania) niż ich „rodzice”. Mutacja (zachodząca zwykle z niewielkim prawdopodobieństwem) polega na zmianie wartości losowo wybranego genu. Zadaniem operatora mutacji jest zapewnienie zmienności chromosomów (np. niedopuszczenie do powstania całej populacji identycznych osobników) i tym samym stworzenie możliwości wyjścia procedury optymalizacji z maksimów lokalnych funkcji przystosowania.
9
Selekcja Krok ten jest esencją całej genetyki. W tym miejscu tworzona jest nowa populacja na podstawie już istniejącej. W zależności od wartości funkcji oceny (obliczanej w poprzednim kroku) dany osobnik ma większe (gdy jest „dobry”') lub mniejsze (gdy jest „słaby”) szanse na znalezienie się w kolejnym pokoleniu. Istnieje kilka sposobów obliczania „szansy” poszczególnych osobników: koło ruletki ranking liniowy turniej
10
Koło ruletki Polega na n krotnym losowaniu (n - liczba osobników w populacji) ze starej populacji osobników, które zostaną przepisane do nowej populacji. Oczywiście wszystkie osobniki mają różne prawdopodobieństwa wylosowania. Prawdopodobieństwo to jest liczone z następującego wzoru: wartość przystosowania danego osobnika / suma wartości przystosowania wszystkich osobników Powyższy wzór jest poprawny tylko wtedy gdy maksymalizujemy funkcję oceny. Gdybyśmy ją minimalizowali można zastosować następujący wzór: (wartość najgorszego osobnika – wartość danego osobnika + 1) / (suma wartości wszystkich osobników + 1) Wzór ten odwraca minimalizację na maksymalizację. Przykład - maksymalizacja funkcji przystosowania Mamy trzy osobniki o następujących wartościach przystosowania: 5, 1, 2. Odpowiadające im wartości prawdopodobieństwa są zatem równe: * pierwszy osobnik: 5/8, czyli 62,5% * drugi osobnik: 1/8, czyli 12,5% * trzeci osobnik: 2/8, czyli 25%
11
Ranking liniowy Selekcja tą metodą jest bardzo podobna do selekcji metodą koła ruletki. Modyfikacja polega jedynie na zmianie funkcji określającej prawdopodobieństwo wyboru danego osobnika. Przed przystąpieniem do tej selekcji należy nadać każdemu z osobników pewną wartość (przystosowanie) zależną od jego położenia na liście posortowanej względem wartości funkcji oceny. Jeśli chcemy maksymalizować to wartości powinny być posortowane rosnąco, w przypadku minimalizacji wartości powinny być posortowane malejąco. Aby obliczyć prawdopodobieństwo wybrania każdego osobnika można skorzystać ze wzoru: prawdopodobieństwo = przystosowanie / suma przystosowania wszystkich osobników Przykład Mamy trzy osobniki o następujących wartościach przystosowania: 3, 1, 2. Wartości prawdopodobieństw wyglądałyby następująco: * pierwszy osobnik: 3/6, czyli 50% * drugi osobnik: 1/6, czyli 16,7% * trzeci osobnik: 2/6, czyli 33,3% Ten sposób wyliczania prawdopodobieństw zmniejsza przewagę jaką mają najlepsze rozwiązania, gdy ich przewaga jest bardzo duża i zwiększa przewagę gdy jest ona bardzo mała.
12
Turniej Metoda jest zupełnie różna od powyższych i 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. Selekcja metodą turniejową jest pozbawiona niedogodności metody koła ruletki, gdzie wymagana jest maksymalizacja funkcji oceny, w turnieju ważna jest jedynie informacja o „lepszości” jednego rozwiązania nad innym.
13
Krzyżowanie Zadaniem kroku krzyżowania jest wymiana "materiału genetycznego" pomiędzy dwoma rozwiązaniami w populacji. W wyniku krzyżowania na podstawie dwóch rozwiązań (rodzice) tworzone są dwa nowe osobniki (dzieci). Po wykonaniu krzyżowania dzieci zastępują w populacji rodziców. Oczywiście w tym kroku nie wszystkie rozwiązania muszą się ze sobą krzyżować. Liczbę krzyżowań określa tzw. współczynnik krzyżowania (o wartości od 0 do 1), który pokazuje jaka liczba osobników powinna być w jednej iteracji skrzyżowana, bądź określa prawdopodobieństwo z jakim każde rozwiązanie może wsiąść udział w krzyżowaniu. W przypadku binarnej reprezentacji chromosomu najprostsze krzyżowanie polega na podziale dwóch chromosomów (rodzice) na dwie części (niekoniecznie równe) i z nich tworzone są dzieci: pierwsze dziecko składa się z początkowej części pierwszego rodzica i końcówki drugiego natomiast drugie dziecko odwrotnie - początek drugiego rodzica i koniec pierwszego. Przykład Na przykładzie homo sapiens może to wyglądać następująco: Pierwszy rodzic: niebieskooka Polka o wzroście do 140cm Drugi rodzic: wysoki ( ) Niemiec o brązowych oczach. Jeśli punkt podziału ustalimy pomiędzy czwartym a piątym bitem to dzieci będą wyglądać następująco: Niemka o niebieskich oczach i wzroście cm Polak o brązowych oczach i wzroście cm
14
Krzyżowanie wymieniające
Działanie operatorów krzyżowania wymieniającego sprowadza się do tworzenia chromosomów potomnych przez składanie ich z wartości genów chromosomów rodzicielskich. Mówiąc dokładniej, jeśli wartości z-tego genu chromosomów rodzicielskich tworzą zbiór Ai, to wartości tego genu w chromosomach potomnych będą elementami zbioru Ai. Jeśli dodatkowo przyjmiemy schemat krzyżowania, w którym liczba potomków jest równa liczbie rodziców, to wówczas krzyżowanie wymieniające nie doprowadzi do zmian zróżnicowania wartości genów w populacji. Operatory te można wykorzystywać zarówno przy kodowaniu binarnym, jak i rzeczywistoliczbowym. W przypadku krzyżowania wymieniającego, przebiegającego według schematu, w którym z pary rodziców powstaje para potomków, mamy gwarancję, że zbiory wartości odpowiadających sobie genotypów chromosomów potomnych są identyczne z rodzicielskimi (następuje tylko „przetasowanie" tych wartości).
15
Krzyżowanie uśredniające
W przeciwieństwie do operatorów krzyżowania wymieniającego, operatory uśredniające oddziałują na wartości genów chromosomów poddawanych krzyżowaniu; są specyficzne dla kodowania rzeczywistoliczbowego. Cechą wspólną różnych wariantów krzyżowania uśredniającego jest to, że wartość każdego genu chromosomów potomnych jest liczbą zawierającą się między największą i najmniejszą wartością genu chromosomów rodzicielskich. Jeśli krzyżowanie uśredniające przebiega zgodnie ze schematem, w którym z pary chromosomów rodzicielskich powstaje para potomnych, wówczas chromosomy potomne są symetryczne względem środka odcinka łączącego chromosomy rodzicielskie. Krzyżowanie uśredniające spełnia postulat braku obciążeń. Chromosomy potomne są generowane na odcinku łączącym chromosomy rodzicielskie i wynik uśredniania każdej pary punktów leżących na tym odcinku również jest w nim zawarty. Wykorzystanie rozkładu jednostajnego do generowania osobników potomnych zapewnia w jednym kroku jednakową gęstość prawdopodobieństwa osiągalności każdego z osobników potomnych.
16
Mutacja Mutacja podobnie jak krzyżowanie zapewnia dodawanie do populacji nowych osobników. Jednak w odróżnieniu od krzyżowania w przypadku mutacji modyfikowany jest jeden a nie dwa osobniki. Podobnie jak w przypadku krzyżowania istnieje tzw. współczynnik mutacji, który określa ile osobników będzie w jednej iteracji ulegało mutacji. W przypadku reprezentacji binarnej sprawa mutacji jest bardzo prosta wystarczy np. zanegować jeden bit w rozwiązaniu aby otrzymać zupełnie nowego osobnika. W przypadku homo sapiens negacja pierwszego bitu powoduje zamianę kobiety na mężczyznę lub odwrotnie. Oczywiście mutacja może być bardziej urozmaicona (negacja losowej liczby bitów, odwracanie kolejności losowej liczby bitów, przesunięcie losowej liczby bitów i inne), należy jednak pamiętać, że operować ona może tylko na jednym rozwiązaniu. W przypadku niebinarnej reprezentacji rozwiązania mutacja może polegać np. na wpisaniu do losowego pola struktury losowej wartości ( przewidzianej przez gatunek).
17
Zasięg operatorów genetycznych
Zasięg operatora wiąże się w dużym stopniu z charakterem przeszukiwania, jakie jest z jego pomocą prowadzone, a co za tym idzie, z równoważeniem eksploracji i eksploatacji w przeszukiwaniu realizowanym przez algorytm ewolucyjny. Intuicyjnie, im większy jest zasięg operatorów genetycznych, tym większa jest eksploracja realizowana za ich pomocą. Można przyjąć, że zasięg operatora genetycznego jest związany ze zbiorem chromosomów osiągalnych (w przypadku mutacji należy jeszcze uwzględnić probabilistyczną miarę osiągalności). Zasięg mutacji. O zasięgu mutacji decyduje rozkład zmiennej losowej wykorzystywanej do perturbacji genów chromosomu rodzicielskiego. Z małym zasięgiem mamy do czynienia wówczas, gdy prawdopodobieństwo tego, że wynik mutacji chromosomu znajdującego się w obszarze przyciągania maksimum lokalnego opuści ten obszar, jest niewielkie. Duży zasięg oznacza łatwość opuszczania obszaru przyciągania maksimum lokalnego przez produkty mutacji
18
Zasięg krzyżowania. Krzyżowanie jest operatorem, którego zbiór chromosomów osiągalnych zależy od więcej niż jednego chromosomu rodzicielskiego. Sterowanie zasięgiem zależy od sposobu wyboru osobników rodzicielskich. Mały zasięg operatora krzyżowania oznacza, że zbiór chromosomów potomnych w całości zawiera się w obszarze przyciągania jednego maksimum lokalnego funkcji przystosowania — jeśli zbiór ten jest wypukły, to dla wielu schematów (na przykład krzyżowania uśredniającego) oznacza to, że chromosomy rodzicielskie są w nim zawarte. Z kolei, chcąc uzyskać duży zasięg krzyżowania, należy dobierać chromosomy rodzicielskie ze zbiorów przyciągania różnych maksimów lokalnych Względność zasięgu operatorów genetycznych. Zauważmy, że charakteryzując zasięg operatorów genetycznych, porównuje się zbiór chromosomów osiągalnych ze zbiorem przyciągania maksimów funkcji przystosowania — o wielkości zasięgu mówi się w odniesieniu do funkcji przystosowania. Przy ustalonym rozkładzie wykorzystywanym do mutacji, zbiory przyciągania są tym mniejsze, im większy jest zasięg operatora. Podobnie, dwa chromosomy rodzicielskie odległe od siebie o ustaloną wartość mogą prowadzić do krzyżowania o dużym bądź niewielkim zasięgu, w zależności od tego, czy odległość między nimi jest większa, czy mniejsza od przeciętnej „średnicy" zbiorów przyciągania maksimów lokalnych.
19
Pożądane cechy operatorów genetycznych
Operatory genetyczne określają sposób przekształcania genotypów. W przypadku mutacji jest to odwzorowanie D—>D (z jednego osobnika rodzicielskiego powstaje dokładnie jeden potomny). Z kolei dla krzyżowania mamy do czynienia z odwzorowaniem Dk —> Dl (w krzyżowaniu bierze udział k rodziców, tworząc l potomków). Do cech tych należą: Spójność przestrzeni genotypów uzyskana dzięki operatorom genetycznym Podstawową kwestią, na którą należy zwrócić uwagę dobierając operatory genetyczne do zadania, jest możliwość wygenerowania dowolnego chromosomu z dowolnego innego, posługując się jedynie operatorami genetycznymi. Należy mianowicie zadbać o to, aby spełniona była właściwość, że dla każdej generacji t, dla każdego chromosomu X « Pt i dowolnego chromosomu Y « D istnieje ciąg chromosomów {X1} taki, że każdy jego wyraz jest obrazem poprzedniego w wyniku działania jednego z operatorów genetycznych, oraz X, Y są wyrazami tego ciągu; właściwość tę nazywamy spójnością przestrzeni genotypów. Spełnienie postulatu spójności pozwala wykluczyć niebezpieczeństwo, że w wyniku niewłaściwej inicjacji populacji bazowej algorytm ewolucyjny jest „z góry skazany na niepowodzenie”. Wynikałoby to z faktu, że maksimum globalne znajduje się w podzbiorze rozwiązań, które są nieosiągalne poprzez modyfikację operatorami genetycznymi chromosomów znajdujących się w początkowej populacji bazowej.
20
Brak obciążeń operatorów
Kolejną sprawą, której poświęca się szczególnie wiele uwagi, jest obciążenie operatorów. Jeśli nawet postulat spójności jest spełniony, to w dalszym ciągu nie sposób wykluczyć niewłaściwego działania algorytmu. Wynikać może ono z faktu, że pewne kierunki przeszukiwań są bardziej prawdopodobne „ze swej natury”, niezależnie od funkcji przystosowania. Może to prowadzić do sytuacji, w której algorytm (nie bacząc na wartości funkcji przystosowania) będzie stosował bardziej intensywne próbkowanie pewnego szczególnego zbioru chromosomów. Efekt ten może skutkować niepożądanym wzrostem nakładu obliczeń. O operatorze mówi się, że jest obciążony, jeżeli przy braku nacisku selektywnego niektóre genotypy będą bardziej uprzywilejowane od innych. Brak obciążeń operatorów oznacza, że powinny zachodzić następujące właściwości: schemat mutacji powinien umożliwiać zdefiniowanie metryki dla zbioru chromosomów osiągalnych w wyniku wykonania pojedynczej operacji krzyżowania powinno zachodzić, że dalsze krzyżowanie chromosomów z tego zbioru nie prowadzi do chromosomów do niego nie należących; pożądane jest także, aby prawdopodobieństwo osiągalności każdego z chromosomów osiągalnych było jednakowe
21
Nowa populacja P(n)={X1n,, X2n,...,XRn}
Algorytm genetyczny operuje na populacji jednostek: gdzie: n jest numerem generacji, natomiast R oznacza rozmiar populacji a1. Każda jednostka Xin, i=1,...,R w zależności od problemu może być wyrażona dowolną, często skomplikowaną strukturą. Reprezentuje ona potencjalne rozwiązanie, posiadające pewną miarę swojej wartości, wyliczaną przy pomocy funkcji dopasowania. Po obliczeniu tej miary dla każdej jednostki w populacji tworzona jest nowa generacja. Odbywa się to poprzez eliminację jednostek o najniższej wartości funkcji dopasowania, pozostawienie jednostek o wartości pośredniej oraz promowanie tych z najwyższą wartością. Taki schemat postępowania za końcowy rezultat uznaje najlepszą jednostkę z pierwszej generacji. Algorytmy genetyczne uwzględniają dodatkowo możliwość doskonalenia rozwiązań. Osiągają to dzięki zastosowaniu operatorów genetycznych: krzyżowania i mutacji. P(n)={X1n,, X2n,...,XRn}
22
Proces tworzenia nowej populacji
Jednostka a1 Jednostka a2 Jednostka a3 Jednostka a4 Populacja n Jednostka b1 Jednostka b2 Jednostka b3 Jednostka b4 Populacja n+1 słaba dobra średnia Reprodukcja Krzyżowanie Mutacja
23
Równoległość w GA Obliczenia równoległe umożliwią uzyskanie rozwiązań zadań obecnie niemożliwych do rozwiązania. Jest to niewątpliwie jedna z najważniejszych dziedzin algorytmiki. Jak stwierdził David E. Goldberg: „(...) W świecie, w którym algorytmy działające seryjnie są zazwyczaj przerabiane na równoległe za pomocą niezliczonych sztuczek i wykrętów, jest niemałą ironią, że algorytmy genetyczne (algorytmy w dużej mierze równoległe) są przerabiane na seryjne za pomocą równie nienaturalnych sztuczek i wykrętów...”. Jednak tradycyjne GA nie są prostolinijnie zrównoleglane z powodu potrzeby seryjnego wykonywania kawałka kodu i zmuszania do interakcji pomiędzy procesorami, które generują wysokie koszty komunikacyjne. Do rozwiązania tego problemu przedstawione zostało kilka propozycji. Grafenstette przedstawia cztery prototypy równoległych GA: synchroniczny scentralizowany półsynchroniczny scentralizowany asynchroniczny rozproszony sieciowy
24
Sposoby zrównoleglania
Idea większości równoległych programów polega na podziale zadania na mniejsze części i ich równoczesne przetwarzanie przez kilka procesorów. Takie podejście może być implementowane w różny sposób, co też daje możliwości opracowywania różnorodnych metod zrównoleglania GA. Pewne metody zmieniają zachowanie algorytmów genetycznych. Jednak nie ma ustalonej metodyki wprowadzania równoległości do algorytmów genetycznych. Istniejące rozwiązania równoległe można zaklasyfikować do następujących kategorii: 1. masowe GA równoległe 2. modele migracyjne 3. modele hodowli (Farming Model) 4. modele dyfuzyjne (Difusion Models)
25
Problem komiwojażera – przykład rozwiązania za pomocą AG
Mamy płaską mapę a na mapie wiele miast. Chcemy odwiedzić wszystkie te miasta, a jednocześnie ponieść jak najmniejsze koszty podróży, czyli wybrać najkrótszą drogę. Możemy dowolnie wybierać kolejność odwiedzania miast, między którymi poruszamy się po liniach prostych (czyli możliwie najkrócej), ale na końcu chcielibyśmy wrócić do punktu wyjścia. Możemy więc zacząć od dowolnego miasta. Chcemy za pomocą algorytmu genetycznego znaleźć rozwiązanie suboptymalne, czyli możliwie jak najlepsze. Na początek załóżmy, że mamy 7 miast. Przykładowa mapa może wyglądać tak jak na rysunku poniżej.
26
Ustalenie fenotypu Fenotypem w naszym zadaniu jest mapa. Mapa z zaznaczonymi drogami, które dają przykładową drogę komiwojażera (o dowolnej długości - tym się na razie nie przejmujemy). Możemy ją narysować w postaci grafu z jednym, dużym cyklem spinającym wszystkie miasta. Cykl ten może być dowolny, w szczególności tak pogmatwany, że w ogóle nie będzie wyglądał jak cykl, ale jak poplątana sieć. Fenotyp, czyli pewne rozwiązanie naszego problemu jest dozwolony, jeśli spina wszystkie miasta jednym cyklem (ale każde miasto tylko raz). I to wszystko. Może wyglądać to np. jak na rysunku poniżej. Pod spodem pokazany jest cykl, w jaki układają się miasta. Funkcją oceny jest droga, czyli długość całego cyklu w grafie. Jak widać, funkcja oceny jest bardzo prosta, nie analizujemy jakości pojedynczych połączeń ani kolejności miast, ani czy drogi między miastami się nie przecinają. Po prostu liczymy długość całej drogi i otrzymujemy konkretną liczbę. Im mniejszą, tym lepiej.
27
Genotyp, czyli budowa chromosomu
Sposób pierwszy - bliski klasycznemu: Numerujemy wszystkie miasta, czyli wierzchołki naszego grafu. Tworzymy chromosom o długości takiej, jaka jest liczba miast (czyli 7) - każde miasto ma swój gen. W genie danego miasta zapisujemy numer innego miasta, do którego chcemy przejść z danego. Czyli jeśli w chromosomie gen numer X ma wartość Y oznacza to, że z miasta numer X idziemy do miasta Y. W genie Y mamy wartość Z i stąd wiemy, że z miasta numer Y mamy iść do miasta numer Z. I tak dla wszystkich miast. W ten sposób kodujemy całą mapę z przykładową drogą komiwojażera. Inaczej mówiąc w chromosomie mamy zapisaną informację o następnikach wszystkich miast. Chromosom opisujący podaną w przykładzie trasę będzie wyglądał tak:
28
Sposób drugi - bardziej intuicyjny dla problemu:
Numerujemy wszystkie miasta. Tworzymy chromosom o długości takiej, jaka jest liczba miast (7). W kolejnych genach zapisujemy kolejne miasta na drodze. Czyli, jeśli w genie numer 1 siedzi miasto X a w genie numer 2 miasto Y to oznacza to, że idziemy z miasta X do Y. W ten sposób geny w chromosomie układają się dokładnie tak, jak miasta w cyklu. W tym wypadku nie ma stałego przypisania miasta do genu, więc każda przykładowa trasa może być zapisana na wiele sposobów. Dla podanych siedmiu miast połączonych drogą dwa przykładowe chromosomy odwzorowujące ten sam cykl mogą wyglądać tak:
29
Operatory genetyczne Problem komiwojażera wraz z zaproponowanymi dwoma sposobami kodowania to typowy przykład problemu, do którego trzeba indywidualnie zaprojektować operację krzyżowania. Istnieją bowiem poważne ograniczenia przy nadawaniu wartości genów. Przyjrzyjmy się pierwszemu sposobowi kodowania. Weźmy dwa przykładowe chromosomy i odpowiadające im cykle na dwóch mapach:
30
Teraz dokonamy krzyżowania tych dwóch chromosomów postępując zgodnie z regułami klasycznymi: wybieramy jeden punkt krzyżowania i wymieniamy kawałki chromosomów. Powstają dwa nowe:
31
A tak wyglądają zakodowane w tych chromosomach "mapy":
Jak widać, rezultat nie jest zbyt ciekawy. Po takim krzyżowaniu uzyskaliśmy dwa niedozwolone rozwiązania - drogi na mapach nie tworzą cykli tylko chaotyczne powiązania między miastami. Możemy zaradzić temu problemowi dokonując korekt w chromosomach. Wyszukujemy wszystkie miasta, których w chromosomie brakuje i te, które występują wielokrotnie. Losowo zamieniamy powtarzające się na brakujące. Wtedy pozostaje inny problem: po takim losowym łączeniu może się okazać, że miasta dalej nie tworzą jednego cyklu, ale np. są spięte w kilku rozłącznych cyklach. Musimy więc jeszcze porozcinać cykle i połączyć je ze sobą. Algorytmy genetyczne są dość skomplikowane i ciągle pozostają w fazie intensywnych badań. Może za kilkanaście lat zostaną utworzone sieci neuronowe samouczące się niewiele odbiegające od ludzkich...
32
Literatura Michalewicz Z.: Algorytmy genetyczne+struktury danych=programy ewolucyjne, Warszawa, WNT, 1996 Goldberg D. E.: Algorytmy genetyczne i ich zastosowania, Warszawa, WNT, 1998 Arabas J. : Wykłady z algorytmów ewolucyjnych. Warszawa: WNT, 2001 Haupt R. L., Haupt S.E.: Practical Genetic Algorithms. John Wiley & Sons, 1998 Koza J. R., Rice J. P.: Genetic Programming: The Movie. MIT Press, 1992
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.