Intelgencja oblczenowa Ćwczene nr 6 Algorytmy Genetyczne Schemat blokowy podstawowego algorytmu genetycznego; Reprezentacja osobnków Kodowane rozwązań; Funkcja celu; Podstawowe operacje: selekcja, krzyżowane, mutacja 1. Wprowadzene Algorytmy genetyczne są algorytmam stochastycznym, których sposób przeszukwana przestrzen potencjalnych rozwązań naśladuje pewne procesy naturalne take jak: dzedzczene genetyczne darwnowską walkę o przeżyce. Przenośna leżąca u podstaw algorytmów genetycznych jest zwązana z ewolucją w naturze. W trakce procesu ewolucj każdy gatunek styka sę z problemem lepszego przystosowana sę do skomplkowanego zmennego środowska. Dośwadczene, jake uzyskuje każdy osobnk zostaje wbudowane w jego układ chromosomów. Do opsu algorytmów genetycznych używa sę słownctwa zapożyczonego z genetyk naturalnej. Mówmy w nej o osobnkach w populacj, często osobnk nazywane są łańcucham lub chromosomam. Chromosomy składają sę z genów uszeregowanych lnowo, a każdy gen decyduje o dzedzcznośc jednej lub klku cech. Bologczny odpowednk algorytmów genetycznych można znaleźć w postac różnych populacj żywych stot żyjących na naszej planece podlegających neugętym prawom natury oraz dążących do przetrwana w celu przeżyca danego gatunku. Populacja znajdująca sę w algorytme genetycznym składa sę z różnego rodzaju osobnków, a przeważne każdy osobnk jest nny. Cechy danego osobnka (jego przystosowane do funkcj celu) zwększają lub zmnejszają jego szanse na przetrwane. Identyczne odwzorowane znajdujemy w śwece naturalnym, gdze równeż każda populacja składa sę z pewnej lczby osobnków, z których każdy jest nny. Równeż tutaj cechy danego osobnka składają sę na jego ogólne przystosowane do środowska naturalnego powodują to, że dany osobnk ma wększe lub mnejsze szanse przeżyca. Zgodne z prawam natury przetrwają tylko osobnk najlepej przystosowane. W środowsku naturalnym osobnk, które przetrwały krzyżują sę ze sobą w celu wydana nowego pokolena. Pokolene to jest lepej przystosowane do środowska poprzez dzedzczene cech od swoch rodzców. Identyczna sytuacja zachodz równeż w algorytmach genetycznych, gdze cąg (chromosomy), które są lepej przystosowane przeżywają wydają w wynku krzyżowana nowe pokolene, będące przeważne lepej przystosowane na skutek dzedzczena cech od swoch rodzców. W środowsku naturalnym można spotkać sę równeż z mutacją; jest to operator genetyczny, który powoduje losową zmanę genu, przez co osobnk albo zyskuje na wartośc (jego pewna cecha ulega polepszenu) staje sę bardzej przystosowany do środowska, albo zmana taka powoduje pewną degradację osobnka np. skutkem mutacj może być wystąpene pewnej choroby genetycznej, która zmnejszy jego szanse na przetrwane. W algorytmach genetycznych równeż można znaleźć operator mutacj, który jest drugm po krzyżowanu podstawowym operatorem genetycznym tak jak w środowsku naturalnym może on doprowadzć do zmany przystosowana danego osobnka do funkcj celu. Osobnk poddany operatorow mutacj może zwększyć lub zmnejszyć swoje prawdopodobeństwo przetrwana. Z powyższych rozważań wdać wyraźne jak bardzo algorytmy genetyczne są skorelowane ze swom bologcznym odpowednkem, od którego sę wywodzą. Algorytmy genetyczne dr nż. Adam Słowk 1
Intelgencja oblczenowa 2. Podstawy dzałana AG W podpunkce tym zostane przedstawone dzałane algorytmu genetycznego dla prostego zadana optymalzacj. Rozważanu podlegać będze zadane maksymalzacj funkcj f, jednak jeśl zadane optymalzacj będze polegać na mnmalzacj funkcj f, to jest ono równoważne maksymalzacj funkcj g, przy czym należy zaznaczyć, że g=-f, czyl mn { f(x) } = max { g(x) } = max { - f(x) } (1) Dodatkowo można przyjąć, że funkcja przyjmuje wartośc dodatne w swojej dzedzne, jeżel tak ne jest można zawsze dodać pewną dodatną stałą C, poneważ max { g(x) } = max { g(x) + C } (2) Załóżmy teraz, że chcemy maksymalzować funkcję k zmennych f(x 1,..., x k ) oraz, że każda zmenna może przyberać wartośc z przedzału D = [ a, b ] R f x,..., x ) >0 dla wszystkch ( 1 k x D. Wemy równeż, że chcemy optymalzować funkcję f z pewną żądaną dokładnoścą. Dla każdej -tej zmennej należy określć jej dokładność ZD. Ponższa zależność pozwala oblczyć le genów mus przypadać na -tą zmenną, aby otrzymać określoną wcześnej dokładność: b a ZD m 2 1 (3) czyl lczba genów dla -tej zmennej ma spełnać nerówność: m b a 2 +1 (4) ZD m oznacza najmnejszą lczbę całkowtą spełnającą nerówność (4). Wówczas reprezentacja, w której każda zmenna x jest zakodowana jako łańcuch bnarny o długośc m, w oczywsty sposób będze spełnała wymagana dokładnośc. Natomast wartość każdej -tej zmennej można otrzymać w sposób jawny stosując zależność: m x = a + dec( 1010...110012 ) ( b a ) / (2 1) (5) gdze dec (łańcuch bnarny) jest równy dzesętnej wartośc łańcucha bnarnego. W algorytme genetycznym każdy osobnk chromosom (jako potencjalne rozwązane) jest reprezentowany przez łańcuch o długośc: m = k m = 1 (6) Perwsze m 1 btów odpowada wartoścom zmennej x 1 z przedzału [ a, b 1 1], druga grupa m 2 btów odpowada wartoścom zmennej x 2 z przedzału [ a, b 2 2 ], tak dalej, aż do ostatnej grupy m k btów, które odpowadają wartoścom zmennej x k z przedzału [ a k, bk ]. W celu ustalena populacj początkowej złożonej z PopSze chromosomów generuje sę losowo bt po bce każdego z nch, jednak jeśl dysponujemy pewną wedzą o rozkładze możlwych optmów, można wówczas użyć tej nformacj do odpowednego rozmeszczena początkowych (potencjalnych) rozwązań. Reszta algorytmu jest oczywsta. W każdym pokolenu będą ocenane wszystke chromosomy (używając funkcj celu), będze wyberana nowa populacja zgodne z rozkładem prawdopodobeństwa określonym na wartoścach dopasowań Algorytmy genetyczne dr nż. Adam Słowk 2
Intelgencja oblczenowa poszczególnych chromosomów do funkcj celu oraz będą stosowane operatory genetyczne take jak krzyżowane mutacja. Po pewnej lczbe pokoleń, gdy ne będze już poprawy generowanych wynków (lub zostały spełnone warunk zakończena algorytmu) najlepsze chromosomy reprezentują najkorzystnejsze rozwązane danego problemu. Algorytm genetyczny często jest zatrzymywany po ustalonej lczbe teracj, w zależnośc od szybkośc pamęc posadanego komputera. Załóżmy, że utworzono losowo pewną populację chromosomów (osobnków) reprezentujących potencjalne rozwązana problemu. Następne należy ocenć utworzyć nową populację zgodne z funkcją celu. Dokonujemy tego w procese selekcj (reprodukcj), a wybór nowej populacj następuje zgodne z rozkładem prawdopodobeństwa określonym na wartoścach dopasowań. Używa sę tutaj najczęścej metodę ruletk o welkośc pól zgodnej z wartoścam dopasowań. Ruletkę taką konstruuje sę w następujący sposób (ponżej zakładamy, że wartośc dopasowana są dodatne, jeżel tak ne jest należy odpowedno przeskalować wartośc): oblcz wartość dopasowana eval v ) dla każdego chromosomu v ( =1,..., PopSze) oblcz całkowte dopasowane populacj F = eval ( ), ( PopSze oblcz prawdopodobeństwo wyboru p każdego chromosomu = 1 v ( =1,..., welkość_populacj) p = eval ( v ) F, / wyznacz przedzały ruletk [RMn, RMax) dla każdego -tego osobnka zgodne z zależnoścą: v RMn = RMax -1 ; RMax =RMn +p Proces selekcj jest oparty na obroce ruletką PopSze razy wyborze za każdym razem jednego chromosomu do nowej populacj w następujący sposób: wygeneruj lczbę przypadkową (zmennopozycyjną) r z zakresu [0,1) jeśl (r >= RMn ) oraz (r<rmax ) wówczas do nowej populacj wyberz osobnka o numerze -tym Oczywśce pewne chromosomy będą wybrane węcej nż raz. Po utworzenu nowej populacj stosujemy na nej operatory genetyczne. Perwszym jest operator krzyżowana, który występuje w systeme genetycznym zgodne z parametrem określanym prawdopodobeństwem krzyżowana p k. Prawdopodobeństwo to umożlwa nam oblczene oczekwanej lczby chromosomów pk PopSze, które ulegną operacj krzyżowana. Aby zastosować ten operator postępujemy w następujący sposób: dla każdego chromosomu generujemy lczbę losową (zmennopozycyjną) r z zakresu [0,1) jeśl dla -tego chromosomu r< p k, to wyberamy -ty chromosom do krzyżowana. Mając określoną pulę chromosomów, które będą podlegać krzyżowanu, doberamy wybrane chromosomy w pary (oczywśce równeż losowo). Gdy lczba wybranych chromosomów jest parzysta wówczas możemy je łatwo połączyć, jednak gdy lczba chromosomów jest neparzysta Algorytmy genetyczne dr nż. Adam Słowk 3
Intelgencja oblczenowa należy albo dodać, albo odjąć jeden chromosom, oczywśce także losowo. Po połączenu chromosomów w pary, dla każdej z nch generujemy losową lczbę poz z zakresu [1,m-1], gdze m jest całkowtą długoścą lczbą btów chromosomu. Wylosowana lczba poz określa nam punkt cęca chromosomu do wymany. Tak węc dwa chromosomy ( 1 2 poz poz 1 m d d... d d +... d ) e... e e... e ) ( e 1 2 poz poz+ 1 m są zamenane na parę potomków ( 1 2 poz poz 1 m d d... d e +... e ) e... e d... d ) ( e 1 2 poz poz+ 1 m Następną operacją jest mutacja, która wykonywana jest bezpośredno na btach. Na podstawe parametru algorytmu genetycznego, prawdopodobeństwa mutacj p m, możemy oblczyć oczekwaną lczbę zmutowanych btów pm m PopSze. Każdy bt (we wszystkch chromosomach w całej populacj) ma równe szanse na mutację, to znaczy zmany z 0 na 1 lub odwrotne. W przypadku mutacj postępujemy następująco: dla każdego chromosomu beżącej populacj (po krzyżowanu) dla każdego btu w chromosome wygeneruj lczbę losową (zmennopozycyjną) r z zakresu [0,1) jeżel lczba r< p m, to zmutuj dany gen (bt). Po zakończenu mutacj oblczane jest ponowne przystosowane całej populacj, następne sprawdzany jest warunek czy można zakończyć pracę algorytmu genetycznego, jeśl tak to wyprowadzamy wynk na ekran kończymy pracę algorytmu genetycznego, jeśl ne to dokonujemy kolejno: selekcj, krzyżowana mutacj cały proces powtarza sę. Ponżej przedstawono schemat dzałana algorytmu genetycznego: 1. Utwórz losowo populację początkową 2. Oceń przystosowane osobnków do funkcj celu 3. Dopók ne osągnęto kryterum stopu wykonaj 4. selekcję osobnków 5. operację krzyżowana chromosomów 6. mutację osobnków 7. ocenę przystosowana osobnków do funkcj celu 8. Wyprowadź otrzymany wynk (wynk) 3. Optymalzacja funkcj jednej zmennej - przykład Jako funkcję testową dla tego zadana użyto: 2 y = f ( x) = 50 5 sn(10 π x) 10 ( x 1.5) x [0,3] Powyższa funkcja jest welomodalna tzn. posada wele maksmów oraz mnmów. W prezentowanym przykładze skupmy sę nad znalezenem maksmum globalnego funkcj w podanym przedzale od 0 do 3. W celu lepszego zobrazowana wzoru funkcj została ona zaprezentowana grafczne na wykrese przedstawonym na rys. 1. Algorytmy genetyczne dr nż. Adam Słowk 4
Intelgencja oblczenowa Rys. 1 Funkcja testowa f(x) w forme grafcznej. Jak wdać funkcja w podanym przedzale x [0,3] (Xmn=0; Xmax=3) przyjmuje wele maksmów oraz wele mnmów, jednak posada w tym przedzale tylko jedno maksmum globalne, które algorytm genetyczny będze sę starał wyznaczyć. Rys. 2 Funkcja testowa f(x) globalne ekstremum. Z wykresu przedstawonego na rys. 2 wynka, że funkcja przyjmuje wartość maksymalną: f(x) 54.9715 dla argumentu x 1.551. Równeż z wykresu (rys. 5.1.2) wdać, że newelke zmany argumentu mogą prowadzć do wskoczena algorytmu w maksmum lokalne. Załóżmy, że chcemy aby zmenna x zmenała sę z dokładnoścą 0.01, wówczas z nerównośc (4) wynka, że: m 3 0 m 2 + 1 => 2 301 0.01 Najmnejsza lczba całkowta m dla której jest spełnona powyższa nerówność wynos 9. W zwązku z tym każdy osobnk będze sę składał z 9 genów (LG=9) w których zapsana będze zmenna x. Algorytmy genetyczne dr nż. Adam Słowk 5
Intelgencja oblczenowa Równeż postanowono zarezerwować 6 dodatkowych komórek, na następujące wartośc: wartość dzesętną dec, odkodowaną wartość x, wartość funkcj y, wartość przystosowana względnego, wartość RMn, wartość RMax. Czyl do zapsana wszystkch wartośc wystarczy wektor złożony z 15 elementów. Przyjęto równeż, że populacja składa sę z 20 osobnków. W zwązku z tym fragment kodu tworzący populację osobnków może wyglądać następująco: Populaton1=zeros(20,15); // Populacja podstawowa Populaton2=zeros(20,15); // Populacja tymczasowa Xmn=0; Xmax=3; LG=9; for =1:20 f rand()<0.5 Populaton1(,j)=1; else Populaton1(,j)=0; Rys. 3 Fragment kodu tworzącego populacje osobnków (losowo) Następne ponższe krok wykonywane są k razy aż do zakończena algorytmu: W perwszym kroku oblcza, sę wartość dec, wartość x, wartość y, oraz przystosowane łączne (PL), a następne wartośc te są wpsywane do odpowednch komórek. //---- PL przystosowane laczne PL=0; for =1:20 dec=0; f Populaton1(,j)==1 dec=dec+populaton1(,j)*(2^(9-j)); Populaton1(,10)=dec; X=((Xmax-Xmn)/(2^LG-1))*dec+Xmn; Populaton1(,11)=X; Y=50-5*sn(10*3.14*X)-10*(X-1.5)^2; Populaton1(,12)=Y; PL=PL+Y; Rys. 4 Fragment kodu wyznaczającego: PL, dec, x y W drugm kroku oblcza sę przystosowane względne oraz wyznacza sę przedzały koła ruletk dla każdego osobnka. Algorytmy genetyczne dr nż. Adam Słowk 6
Intelgencja oblczenowa //------------------- oblcz przystosowane wzgledne for =1:20 Populaton1(,13)=Populaton1(,12)/PL; //------------------- oblcz przedzaly ruletk Populaton1(1,14)=0; Populaton1(1,15)=Populaton1(1,14)+Populaton1(1,13); for =2:20 Populaton1(,14)=Populaton1(-1,15); Populaton1(,15)=Populaton1(,14)+Populaton1(,13); Rys. 5 Fragment kodu oblczającego przystosowane względne oraz wyznaczającego przedzały koła ruletk W następnym kroku, dokonuje sę selekcj osobnków z populacj podstawowej Populaton1 do populacj tymczasowej Populaton2. Selekcja jest dokonywana metodą ruletk. (PL), a następne wartośc te są wpsywane do odpowednch komórek. //-------------------- dokonaj selekcj for =1:20 los=rand(); Nr=0; for j=1:20 f (los>=populaton1(j,14)) & (los<populaton1(j,15)) Nr=j; Populaton2(,:)=Populaton1(Nr,:); Rys. 6 Przykładowy kod realzujący selekcję osobnków metodą ruletk W następnym kroku dokonuje sę operacj krzyżowana oraz mutacj. Kod realzujący operację mutacj oraz krzyżowana w wersj uproszczonej (bez doberana osobnków w pary) przedstawono na rys. 7.PCross oznacza prawdopodobeństwo krzyżowana, PMut oznacza prawdopodobeństwo mutacj. //-------------------- dokonaj krzyzowana for =1:20 los=rand(); f los<pcross Nr=round(rand()*19)+1; Cut=round(rand()*7)+1; c1=populaton2(,(cut+1):9); c2=populaton2(nr,(cut+1):9); Populaton2(,(Cut+1):9)=c2; Populaton2(Nr,(Cut+1):9)=c1; //-------------------- dokonaj mutacj for =1:20 los=rand(); Algorytmy genetyczne dr nż. Adam Słowk 7
Intelgencja oblczenowa f (los<pmut) f (Populaton2(,j)==1) Populaton2(,j)=0; else Populaton2(,j)=1; Rys. 7 Fragment kodu realzujący operację krzyżowana oraz mutacj W następnym kroku należy przepsać zawartość populacj tymczasowej Populaton2 do populacj podstawowej Populaton1, co można zrealzować następująco: for =1:20 Populaton1(,:)=Populaton2(,:); Oblczena (do rys. 4 do rys. 7) powtarzamy aż spełnony zostane warunek zakończena algorytmu (np. osągnęce określonej lczby pokoleń). Po zakończenu pracy algorytmu otrzymanym wynkem jest rezultat zapsany w najlepszym osobnku (o najwększej wartośc przystosowana). Ponżej na rys. 8 przedstawono prosty algorytm genetyczny napsany w SCILAB e. Algorytm dąży do odnalezena maksmum funkcj przedstawonej na rys. 1. //--- przyjece wartosc parametrow x=zeros(2,301); PMut=0.1; PCross=0.5; Generatons=10; //--- wykreslene ksztaltu optymalzowanej funckj for =1:301 x(1,)=(-1)/100; for =1:301 x(2,)=50-5*sn(10*3.14*x(1,))-10*(x(1,)-1.5)^2; plot(x(1,:),x(2,:)); //-------------- utworz populacje zlozona z 20 osobnkow Populaton1=zeros(20,15); // Populacja podstawowa Populaton2=zeros(20,15); // Populacja tymczasowa Xmn=0; Xmax=3; LG=9; for =1:20 f rand()<0.5 Populaton1(,j)=1; else Populaton1(,j)=0; Algorytmy genetyczne dr nż. Adam Słowk 8
Intelgencja oblczenowa for k=1:generatons //---------- oblcz dec, x, y (przystosowane) //---------- oraz przystosowane laczne PL PL=0; for =1:20 dec=0; f Populaton1(,j)==1 dec=dec+populaton1(,j)*(2^(9-j)); Populaton1(,10)=dec; X=((Xmax-Xmn)/(2^LG-1))*dec+Xmn; Populaton1(,11)=X; Y=50-5*sn(10*3.14*X)-10*(X-1.5)^2; Populaton1(,12)=Y; PL=PL+Y; //------------------- oblcz przystosowane wzgledne for =1:20 Populaton1(,13)=Populaton1(,12)/PL; //------------------- wypsz najlepsze rozwazane na ekran Max=Populaton1(1,12); NrMax=1; for =2:20 f (Populaton1(,12)>Max) Max=Populaton1(,12); NrMax=; dsp(populaton1(nrmax,12)); //------------------- oblcz przedzaly ruletk Populaton1(1,14)=0; Populaton1(1,15)=Populaton1(1,14)+Populaton1(1,13); for =2:20 Populaton1(,14)=Populaton1(-1,15); Populaton1(,15)=Populaton1(,14)+Populaton1(,13); //-------------------- dokonaj selekcj for =1:20 los=rand(); Nr=0; for j=1:20 f (los>=populaton1(j,14)) & (los<populaton1(j,15)) Nr=j; Populaton2(,:)=Populaton1(Nr,:); Algorytmy genetyczne dr nż. Adam Słowk 9
Intelgencja oblczenowa //-------------------- dokonaj krzyzowana for =1:20 los=rand(); f los<pcross Nr=round(rand()*19)+1; Cut=round(rand()*7)+1; c1=populaton2(,(cut+1):9); c2=populaton2(nr,(cut+1):9); Populaton2(,(Cut+1):9)=c2; Populaton2(Nr,(Cut+1):9)=c1; //-------------------- dokonaj mutacj for =1:20 los=rand(); f (los<pmut) f (Populaton2(,j)==1) Populaton2(,j)=0; else Populaton2(,j)=1; //--------------------- przepsz populacje for =1:20 Populaton1(,:)=Populaton2(,:); // do glownej petl algorytmu Rys. 8 Prosty algorytm genetyczny (SCILAB) 4. Zadana do wykonana a) uruchomć algorytm genetyczny z Rys. 8 b) do programu z rys. 8 dopsać fragment kodu wykreślający wartość najlepszego osobnka (rozwązana) w funkcj kolejnych pokoleń dla parametru Generatons=100; Oś x ma reprezentować kolejne pokolena, oś y najlepsze rozwązane w danym pokolenu. Rys. 9 Wartość najlepszego rozwązana w funkcj kolejnych pokoleń (generacj) Algorytmy genetyczne dr nż. Adam Słowk 10
Intelgencja oblczenowa c) zmodyfkować program z rys. 8, dodając eltarystyczny model selekcj, który polega, na tym że najlepsze znalezone do tej pory rozwązane jest zapamętywane w oddzelnym osobnku o nazwe np.thebest. W każdej teracj sprawdza sę czy w danej populacj stneje lepsze lub dentyczne rozwązane do rozwązana zawartego w osobnku TheBest jeśl tak wówczas wstawa sę je do osobnka TheBest, jeśl ne wówczas osobnk TheBest jest wstawany do populacj w mejsce najgorszego osobnka. Osobnk najlepszy osobnk o najwększej wartośc funkcj przystosowana (w tym przypadku o najwększej wartośc y ). Osobnk najgorszy osobnk o najmnejszej wartośc funkcj przystosowana (w tym przypadku o najmnejszej wartośc y ). d) do programu z punktu c) dopsać fragment kodu wykreślający wartość najlepszego osobnka (rozwązana) w funkcj kolejnych pokoleń dla parametru Generatons=100; Oś x ma reprezentować kolejne pokolena, oś y najlepsze rozwązane w danym pokolenu. Otrzymany wykres porównać z wykresem otrzymanym w punkce b) e) zaprogramować algorytm genetyczny z eltarystycznym modelem selekcj wyznaczający maksymalną wartość funkcj dwóch zmennych postac: y x x 2 2, x2 ) = [ ( x1 10 cos( 2 π x1 )) + ( x2 10 cos( 2 π x ))] 80 [.12; 5.12 ], x [ 5.12; 5.12] ( 1 2 + 1 5 2 W funkcj tej, globalne maxmum o wartośc 100 występuje dla x 1 =0 x 2 =0. W algorytme genetycznym przyjąć rozdzelczość (dokładność) zmennej x 1 oraz x 2 na pozome 0.01. Przeprowadzć oblczena dla różnych wartośc parametrów PopSze, PCross PMut (na początku przyjąć PopSze=20; PCross=0.3; PMut=0.01). Jako kryterum zakończena przyjąć osągnęce przez algorytm 100-tnej generacj. Rys. 10 Grafczna prezentacja optymalzowanej funkcj Algorytmy genetyczne dr nż. Adam Słowk 11