Algorytmy genetyczne

advertisement
Algorytmy genetyczne
Paweł Cieśla
8 stycznia 2009
Genetyka - nauka o dziedziczeniu cech pomiędzy pokoleniami.
Geny są czynnikami, które decydują o wyglądzie,
zachowaniu, rozmnażaniu każdego żywego
organizmu. Podstawy dziedziczenia cech z jednego
pokolenia na drugie zostały odkryte 150 lat temu.
DNA - (ang. Deoxyribonucleic acid) - kwas
deoksyrybonukleinowy, wielocząsteczkowy organiczny
związek chemiczny należący do kwasów
nukleinowych. Występuje w chromosomach, pełni
rolę nośnika informacji genetycznej.
Rodzaje genetyki
1. klasyczna - dziedziczenie cech
2. molekularna - nauka o chemicznej i fizycznej strukturze DNA
3. populacji
4. ilościowa - statystyczne relacje pomiędzy genami a cechami,
które są kodowane przez geny
Podział organizmów ze względu na rodzaj komórek
1. eukarionty - organizmy, które posiadają jądro, które ochroni
DNA.
2. prokarionty - organizmy nie posiadające jądra komórkowego.
DNA znajduje się w płynnym wnętrzu komórki.
Podział organizmów ze względu na rodzaj chromosomów
1. organizmy diploidalne - chromosomy połączone w pary
2. organizmy haploidalne - chromosomy pojedyncze
Rozmnażanie organizmów diploidalnych
Pary chromosomów krzyżują się u każdego rodzica, tworząc
pojedynczy chromosom zwany gametą. Obie gamety rodziców
tworzą parę chromosomów potomka
Rozmnażanie organizmów haploidalnych
Pojedyncze chromosomy rodziców krzyżują się, tworząc pojedynczy
chromosom potomka.
Programy ewolucyjne
Program ewolucyjny jest algorytmem probabilistycznym, w którym
generuje się populację osobników P(t) = {x1t , x2t , . . . , xnt } w każdej
iteracji t. Każdy osobnik przedstawia możliwe rozwiązanie
rozpatrywanego zadania i jest reprezentowany przez strukturę
danych S. Każde rozwiązanie xit ocenia się na podstawie miary
dopasowania. Nową populację tworzy się (w iteracji t + 1) przez
selekcję osobników najlepiej dopasowanych. Nowe osobniki
podlegają dodatkowo transformacji za pomocą operatorów
genetycznych.
Schemat algorytmu genetycznego
I
t := 0;
I
ustal początkowowe P(t);
I
oceń P(t);
I
while(not warunek zakończenia) do
I
begin
I
– t := t + 1;
I
– wybierz P(t) z P(t − 1)
I
– zmień P(t)
I
– oceń P(t)
I
end
Operatory genetyczne
1. Krzyżowanie - połączenie cech dwóch rodzicielskich
chromosomów w chromosomach dwóch potomków przez
wymianę odcinków chromosomów rodziców. Na przykład jeżeli
osobniki (rozwiązania) są reprezentowane przez pięcio
elementowe wektory (a1 , b1 , c1 , d1 , e1 ) i (a2 , b2 , c2 , d2 , e2 ), to
po operacji krzyżowania po drugim genie będą one miały
postać: (a1 , b1 , c2 , d2 , e2 ) oraz (a2 , b2 , c1 , d1 , e1 ).
2. Mutacja - polega na losowej zmianie jednego lub więcej genów
wybranego chromosomu.
Algorytm ewolucjny musi zawierać 5 następujących
elementów:
1. podstawową reprezentację potencjalnych rozwiązań
2. sposób tworzenia początkowej populacji
3. funkcję oceniającą, która gra rolę środowiska
4. operatory genetyczne, które wpływają na populację potomków
5. wartości różnych parametrów (np. rozmiar populacji,
prawdopodobieństwa użycia operatorów krzyżowania i
mutacji)
Optymalizacja funkcji
Niech funkcja ma postać:
f (x) = x sin(10πx) + 1, 0.
Zadanie polega na znalezieniu x ∈ [1, 2] maksymalizującego funkcję
f . To znaczy szukamy takiego x0 , że f (x0 ) ­ f (x) dla każdego
x ∈ [−1, 2]. Maksimum, które musimy znależć to f (1, 85) = 2, 85.
Reprezentacja zmiennej x
Do reprezentacji zmiennej rzeczywistej x użyjemy chromosomu w
postaci wektora binarnego. Długość tego wektora zależy od
żądanej dokładności. W moim przykładzie ustalę dokładność do 6
cyfr po przecinku. Dziedzina zmienności x ma długość 3. Ustalona
przeze mnie dokładność wymaga aby przedział [−1, 2] był
podzielony na 3 ∗ 1000000 podprzedziałów. Oznacza to, że
chromosom musi mnieć długość 22 bity, ponieważ:
2097152 = 221 < 3000000 ¬ 222 = 4194304
Odwzorowanie łańcucha binarnego na zmienną rzeczywistą
x ∈ [−1, 2]
21
X
< b21 , b20 , . . . , b0 >2 = (
bi 2i )10 = x 0 ,
i=0
x = −1 +
3x 0
.
222 − 1
Ogólnie:
x = poczatek +
dlugosc ∗ 3
2iloscbitow − 1
Populacja początkowa
Tworzymy populację chromosomów, w której każdy chromosom
ma długość 22 bity. Każdy bit w populacji wyznaczamy losowo.
Jedna iteracja algorytmu genetycznego
Pawel Ciesla, Maksymalizacja funkcji:
x * sin(10 * Pi * x) + 1 Wypisuje losowa populacje:
(1) 1110111011100001000001
(2) 1001110010111010000111
(3) 0110101010010111101010
(4) 1000111001010010110011
(5) 0111110110011001110111
(6) 1011011101010010110111
(7) 1001001111101111000010
(8) 1000101100010110111000
(9) 0000001110011001100011
(10) 1100010010011000100111
(11) 0010011110110111101001
(12) 1011000111010100110011
(13) 1100110101101000000011
(14) 1100101010101100000010
(15) 1011111101100100100010
(16) 1001101100010100010101
(17) 0001010111011010010010
(18) 0100001011100010011100
(19) 0100011111001001001101
(20) 1000011110101101001111
Wypisuje wartosci oceny:
(1) 0.912492
(2) 1.759471
(3) 1.249008
(4) 1.569280
(5) 1.366899
(6) -0.145438
(7) 0.365917
(8) 1.505357
(9) 0.067464
(10) 0.869124
(11) 0.529223
(12) 1.539694
(13) 1.280748
(14) 0.008509
(15) 2.206261
(16) 1.414353
(17) 0.271368
(18) 1.104672
(19) 0.847105
(20) 0.811755
Calkowite dopasowanie: 19.533261
Wypisuje prawdopodobienstwa wyboru chromosomow:
(1) 0.046715
(2) 0.090076
(3) 0.063943
(4) 0.080339
(5) 0.069978
(6) -0.007446
(7) 0.018733
(8) 0.077066
(9) 0.003454
(10) 0.044495
(11) 0.027093
(12) 0.078824
(13) 0.065568
(14) 0.000436
(15) 0.112949
(16) 0.072407
(17) 0.013893
(18) 0.056553
(19) 0.043367
(20) 0.041558
Wypisuje dystrybuanty: (1) 0.046715
(2) 0.136790
(3) 0.200733
(4) 0.281072
(5) 0.351050
(6) 0.343604
(7) 0.362337
(8) 0.439404
(9) 0.442857
(10) 0.487352
(11) 0.514445
(12) 0.593270
(13) 0.658837
(14) 0.659273
(15) 0.772222
(16) 0.844629
(17) 0.858522
(18) 0.915075
(19) 0.958442
(20) 1.000000
Wypisuje liczby losowe z przedzialu [0, 1]: (1) 0.530000
(2) 0.370000
(3) 0.080000
(4) 0.940000
(5) 0.690000
(6) 0.240000
(7) 0.600000
(8) 0.850000
(9) 0.800000
(10) 0.910000
(11) 0.400000
(12) 0.410000
(13) 0.390000
(14) 0.740000
(15) 0.880000
(16) 0.930000
(17) 0.860000
(18) 0.110000
(19) 0.840000
(20) 0.790000
Wypisuje chromosomy po selekcji:
(1) 1011000111010100110011
(2) 1000101100010110111000
(3) 1001110010111010000111
(4) 0100011111001001001101
(5) 1011111101100100100010
(6) 1000111001010010110011
(7) 1100110101101000000011
(8) 0001010111011010010010
(9) 1001101100010100010101
(10) 0100001011100010011100
(11) 1000101100010110111000
(12) 1000101100010110111000
(13) 1000101100010110111000
(14) 1011111101100100100010
(15) 0100001011100010011100
(16) 0100011111001001001101
(17) 0100001011100010011100
(18) 1001110010111010000111
(19) 1001101100010100010101
(20) 1001101100010100010101
Wypisuje wartosci oceny po selekcji:
(1) 1.539694
(2) 1.505357
(3) 1.759471
(4) 0.847105
(5) 2.206261
(6) 1.569280
(7) 1.280748
(8) 0.271368
(9) 1.414353
(10) 1.104672
(11) 1.505357
(12) 1.505357
(13) 1.505357
(14) 2.206261
(15) 1.104672
(16) 0.847105
(17) 1.104672
(18) 1.759471
(19) 1.414353
(20) 1.414353
Calkowite dopasowanie po selekcji: 27.865266
Wybrane chromosomy do krzyzowania:
1 3 5 11 13 14 15 17 18 20
Wypisuje chromosomy wybrane do krzyzowania:
1011000111010100110011
1001110010111010000111
1011111101100100100010
1000101100010110111000
1000101100010110111000
1011111101100100100010
0100001011100010011100
0100001011100010011100
1001110010111010000111
1001101100010100010101
Wypisuje chromosomy po krzyzowaniu:
1011000110111010000111
1001110010010100010101
1011111101100100100010
1000101100010110111000
1000101100010110111000
1011111101100100100010
0100001011100010011100
0100001011100010011100
1001110010010100010101
1001101101010100110011
Wypisuje chromosomy przed mutacja:
(1) 1011000110111010000111
(2) 1000101100010110111000
(3) 1001110010010100010101
(4) 0100011111001001001101
(5) 1011111101100100100010
(6) 1000111001010010110011
(7) 1100110101101000000011
(8) 0001010111011010010010
(9) 1001101101010100110011
(10) 0100001011100010011100
(11) 1000101100010110111000
(12) 1000101100010110111000
(13) 1000101100010110111000
(14) 1011111101100100100010
(15) 0100001011100010011100
(16) 0100011111001001001101
(17) 0100001011100010011100
(18) 1001110010010100010101
(19) 1001101101010100110011
(20) 1001101101010100110011
Wypisuje chromosomy po mutacji:
(1) 1011000110111010000111
(2) 1000100100010110111000
(3) 1001110010010100010101
(4) 0100011111001001001101
(5) 1011111101100100100010
(6) 1000111001010010110011
(7) 1100110111111000000011
(8) 0001010111011110010010
(9) 1001101101010100100011
(10) 0100001011100010011000
(11) 1000100100010110111000
(12) 1000100100010110111000
(13) 1000100100010110111000
(14) 1011111101100100100010
(15) 0100001011100010011000
(16) 0100011111001001001101
(17) 0100001011100010011000
(18) 1001110010010100010101
(19) 1001101101010100100011
(20) 1001101101010100100011
Wypisuje wartosci oceny po mutacji i krzyzowaniu:
(1) 1.574700
(2) 1.117555
(3) 1.737772
(4) 0.847105
(5) 2.206261
(6) 1.569280
(7) 1.560727
(8) 0.272421
(9) 1.479246
(10) 1.104691
(11) 1.117555
(12) 1.117555
(13) 1.117555
(14) 2.206261
(15) 1.104691
(16) 0.847105
(17) 1.104691
(18) 1.737772
(19) 1.479246
(20) 1.479246
Calkowite dopasowanie: 26.781437
Metody selekcji
I
Metoda proporcjonalna
1. Wyznacz prawdopodobieństwa wyboru osobników z populacji
w postaci względnego przystosowania
f (xi )
; i = 1, . . . , N.
ps (xi ) = PN
i=1 f (xi )
2. Wyznacz dystrybuantę dla ustalonej sekwencji osobników
q(xi ) =
i
X
ps (xi ).
j=1
3. N - krotnie zakręć kołem ruletki:
I
I
Wygeneruj dla każdego osobnika z populacji liczbę losową
r ∈ [0, 1].
Ustal pierwszego napotkanego osobnika w populacji, dla
którego spełniony jest warunek:
r ¬ q(xi ).
I
Skopiowanie wylosowanego osobnika do nowej populacji.
Metody selekcji II
I
Metoda ze stochastycznym doborem resztowym:
1. Wyznacz oczekiwaną liczbę kopii osobników w populacji:
e(xi ) = PN
f (xi )
i=1
f (xi ) ∗ N
; i = 1, . . . , N.
PN
2. Skopiuj Nint = i=1 be(xi )c osobników do nowego pokolenia.
Oblicz Ñ = N − Nint
3. Wyznacz dystrybuantę osobników:
q(xi ) =
i
X
{e(xi ) − be(xi )c}.
j=1
4. Kręcimy kołem ruletki Ñ - krotnie
I
I
Losujemy dla każdego osobnika liczbę r ∈ [0, 1].
Ustalenie pierwszego napotkanego osobnika w populacji, dla
którego spełniony jest warunek:
r¬
I
q(xi )
.
q(xn )
Skopiowanie wylosowanego osobnika do nowego pokolenia.
Metody selekcji III
I
Metoda turniejowa - metoda polegająca na rywalizacji dwóch
osobników.
Ocena stopnia przystosowania
W algorytmach genetycznych wymagane jest, aby przeciwdziedzina
funkcji celu miała wartości dodatnie. Sposoby przekształcenia
funkcji celu w przypadku wartości ujemnych:
1. Dla funkcji kosztu u(x), gdy jej przeciwdziedzina przyjmuje
wartości dodatnie i ujemne
f (x) = Cmax − u(x).
2.
3. Dla funkcji zysku g (x), gdy jej przeciwdziedzina przyjmuje
wartości dodatnie i ujemne
f (x) = g (x) + Cmin .
Download