Funkcja przystosowania - przypisana indywidualnie każdemu studentowi.
Zmienna
x
ma wartości w przedziale [?,?]. Istotna dokładność – ?.
? – dane przypisane indywidualnie każdemu studentowi przez prowadzącego.
Ćwiczenie 1.
Napisać program generujący liczby losowe z dowolnego zakresu i z zadaną dokładnością.
Dalej program będzie nazywany GenLos. Wygenerować początkową populację czterech
osobników zgodnie z przyjętymi parametrami zmiennej x i zamienić na reprezentację binarną.
(Nieobowiązkowa sugestia: napisać program obliczający wartość funkcji przystosowania dla
podanego argument – znacznie przyspieszy realizację ćwiczeń)
Ćwiczenie 2.
Ocenić przystosowanie każdego z nich wykorzystując podaną w założeniach funkcję celu i
dokonać selekcji zgodnie z założeniami selekcji ruletkowej.
Ćwiczenie 3.
Wykonać krzyżowanie jednopunktowe w punkcie losowym oraz zrealizować mutację przy
prawdopodobieństwie mutacji 0.05. Do generowania wszelkich liczb losowych wykorzystać
program z ćw1 GenLos.
Powtórzyć proces selekcji i krzyżowania czterokrotnie.
Ćwiczenie 4.
Ocenić wszystkich osobników ostatnio wyliczonej populacji. Wskazać najlepszego. Ustalić
metodami analitycznymi maksimum funkcji celu w przyjętym w założeniach przedziale
argumentów. Określić różnicę między maksimum funkcji w danym przedziale a najlepiej
przystosowanym osobnikiem.
Czy potrzebne są kolejne iteracje algorytmu genetycznego by uzyskać osobnika o
satysfakcjonującej jakości (np. nie mniej niż 90% maksimum)? Jeśli tak to proszę oszacować
ile.
Odpowiedzi:
Ćw1.
x1-10bitów (1000 wartości), x3-9bitów (260 wartości) razem 19 bitów
Ćw2.
(1001001111) i (01000101) 591 i 69
zakres x1:100, początek:0 = 57,7
zakres x2:160, początek –45 = -1
eval=172,1
Ćw. 3.
A: x1 = 15 x2 = -3 eval=100
B: x1 = 25,3 x2 = 9 eval=413,1
C: x1 = 50,1 x2 = 20 eval=1914,9
D: x1 = 31,8 x2 = 76 eval=4650,8
przedział [0,100] – wylosowane liczby są następujące: 15, 68, 3, 95.
Suma: 7078,8, osobniki: 3, 4, 2, 4
Ćw. 4.
0010011001 010|00010 153 66
1000000000 011|00111 512 103
potomkowie
0010011001 010|00111
1000000000 011|00010
mutacja 100000
1
000 011|00010
Ćw. 5
0010011001 01000111 153 71 po zdekodowaniu x1=15; x2=0 eval=16
1000001000 01100010 520 98 po zdekodowaniu x1=50,8 x2=16 eval=1543,8