Sprawozdanie AL zad1


0x01 graphic

WYŻSZA SZKOŁA TECHNOLOGII INFORMATYCZNYCH

Warszawa

Laboratorium sztucznej inteligencji

SPRAWOZDANIE

Zadanie nr 1

Studia zaoczne, grupa IZ-5/V

Robert Chmielewski 766

Krzysztof Marchewa 578

Termin oddania: 05.01.2008,

Zadanie 1

Znaleźć (wykorzystując algorytm genetyczny) punkt przecięcia krzywych

f1(x)= x 2 oraz f2(x)= 3*sin(x)

co odpowiada rozwiązaniu równania

x 2 - 3*sin(x)=0

Rozwiązania poszukiwać w przedziale p[0.20, 3.14].

Poszukiwanie rozwiązania można sprowadzić do poszukiwania minimum funkcji

g(x)=abs(f1(x)-f2(x))

Ponieważ dla każdego punktu rozpatrywanego przedziału, różnica między wartości obu funkcji jest nie mniejsza od 10 (g(x)<10), problem można sprowadzić do szukania maksimum funkcji

h(x)=10 - abs(f1(x)-f2(x))

Chromosom zbudować kodując wartości należące do rozpatrywanego przedziału binarnie.

Reprezentację binarną zbudować w sposób w opisany w zadaniu przykładowym.

Przygotować sprawozdanie, prezentujące osiągnięte wyniki. Wykresy sporządzić korzystając z Excela. Do sprawozdania dołączyć kod źródłowy programu.

Rozwiązanie

W celu rozwiązania zadania został zbudowany program, który w oparciu o algorytm

genetyczny poszukuje rozwiązania przedstawionego problemu.

Dane wejściowe są reprezentowane poprzez tablicę chromosomów. Każdy z chromosomów składa się z 10 bitów, tak więc może przedstawiać 1024 punkty kontrolne.

Pozostałe parametry z którymi będziemy uruchamiać program to :

Badania zostały przeprowadzone przy użyciu klasycznego algorytmu sztucznej inteligencji - metody koła ruletki oraz strategii elitarnej.

Program generuje wyniki dla odpowiedniej liczby pokoleń w postaci pliku wyniki.txt, na podstawie którego zostały sporządzone odpowiednie wykresy oraz wnioski.

METODA KOŁA RULETKI

Jest to jedna z podstawowych metod selekcji algorytmów sztucznej inteligencji.

Polega ona na stworzeniu koła ruletki dla poszczególnych chromosomów. Wielkość pól koła ruletki jest proporcjonalna do wartości funkcji przystosowania.

Proces selekcji oparty jest na obrocie ruletką taką ilość razy ile jest osobników w populacji. Za każdym razem wybierany jest jeden chromosom do nowej populacji, dzięki czemu niektóre chromosomy będą wybierane częściej, inne rzadziej a jeszcze inne wcale.

W naszym przypadku wykres funkcji dostosowania wygląda następująco :

h(x) = 10 - |(f1(x)-f2(x)|

0x08 graphic

Jak widać z powyższego rysunku chromosomy o fenotypie x = 1.7 są „najlepsze” ponieważ ich wartość funkcji dostosowania jest w przybliżeniu równa 10. Dlatego też będziemy poszukiwać chromosomów o fenotypie możliwie bliskim tej wartości.

W tym miejscu pojawia się pewien problem, ponieważ napisaliśmy, że chromosomy „najlepsze”, to te które mają fenotyp x=1.7, ale z wykresu funkcji wynika, że do chromosomów „bardzo dobrych” można zaliczyć wszystkie, których fenotypy reprezentują wartości x od 0.2 do mniej więcej 2.1, ponieważ dla tych wartości x wartość funkcji dostosowania jest wysoka - powyżej 8.

Gdy uruchomimy klasyczny algorytm genetyczny dla metody selekcji ruletki, to pod koniec (przy wysokich numerach pokolenia) w populacji zostają już tylko chromosomy „bardzo dobre” i „najlepsze”, a te „gorsze” zostały usunięte z populacji. Na początku napisaliśmy, że algorytm znajdzie chromosom „najlepszy” (x = 1.7), jednak w przypadku takiej funkcji ten „najlepszy” nie musi wcale mieć wartości x = 1.7, ponieważ może mieć wartość 0.2, albo 0.5 bądź też 1.5 - wszystkie one mają podobną wartość funkcji dostosowania, więc są równie „dobre”.

Dlatego też nie można się dziwić, jeśli algorytm stwierdzi, że „najlepszy” jest chromosom o

x = 0.2 - ponieważ jest on prawie tak samo dobry, jak ten o x = 1.7.

Uruchamiając klasyczny algorytm sztucznej inteligencji z parametrami :

const int lp=50; //liczba pokoleń w eksperymencie

const float a=0.2; //wartość początkowa przestrzeni poszukiwań

const float b=3.14; //wartość końcowa przestrzeni poszukiwań

const int N=10; //liczba genów w chromosomie

const int pula=30; //liczba osobników w populacji (parzysta)

const float pk=0.7; //prawdopodobieństwo krzyżowania

const float pm=0.00; //prawdopodobieństwo mutacji

Uzyskaliśmy następujące wyniki :

0 +7.357 +9.709 3 1101010001 1.793

1 +7.539 +9.746 5 0001010001 1.785

2 +8.912 +9.746 21 0001010001 1.785

3 +8.762 +9.722 16 0101010001 1.791

4 +8.777 +9.976 12 0000100001 1.716

5 +8.929 +9.976 13 0000100001 1.716

6 +8.890 +9.991 15 1100100001 1.725

7 +8.810 +9.991 26 1100100001 1.725

8 +8.785 +9.648 1 0000110001 1.808

9 +8.887 +9.648 3 0000110001 1.808

10 +8.910 +9.648 2 0000110001 1.808

11 +9.066 +9.648 2 0000110001 1.808

12 +9.149 +9.623 27 0100110001 1.814

13 +9.059 +9.611 5 1100110001 1.816

14 +9.094 +9.648 26 0000110001 1.808

15 +9.061 +9.547 2 0001110001 1.831

16 +8.916 +9.547 17 0001110001 1.831

17 +8.985 +9.547 6 0001110001 1.831

18 +9.058 +9.547 1 0001110001 1.831

19 +9.090 +9.547 0 0001110001 1.831

20 +9.175 +9.547 4 0001110001 1.831

21 +9.161 +9.547 5 0001110001 1.831

22 +9.143 +9.547 2 0001110001 1.831

23 +9.103 +9.547 4 0001110001 1.831

24 +9.083 +9.547 1 0001110001 1.831

25 +9.147 +9.547 8 0001110001 1.831

26 +9.152 +9.547 4 0001110001 1.831

27 +9.216 +9.547 7 0001110001 1.831

28 +9.210 +9.547 0 0001110001 1.831

29 +9.177 +9.547 0 0001110001 1.831

30 +9.131 +9.547 5 0001110001 1.831

31 +9.127 +9.547 1 0001110001 1.831

32 +9.123 +9.547 4 0001110001 1.831

33 +9.123 +9.547 5 0001110001 1.831

34 +9.121 +9.547 16 0001110001 1.831

35 +9.104 +9.547 3 0001110001 1.831

36 +9.209 +9.496 0 0011110001 1.842

37 +9.273 +9.522 7 0101110001 1.837

38 +9.291 +9.522 0 0101110001 1.837

39 +9.261 +9.547 10 0001110001 1.831

40 +9.187 +9.547 17 0001110001 1.831

41 +9.174 +9.547 6 0001110001 1.831

42 +9.234 +9.547 25 0001110001 1.831

43 +9.293 +9.547 8 0001110001 1.831

44 +9.367 +9.547 10 0001110001 1.831

45 +9.422 +9.547 8 0001110001 1.831

46 +9.394 +9.547 6 0001110001 1.831

47 +9.393 +9.522 6 0101110001 1.837

48 +9.362 +9.496 2 0011110001 1.842

49 +9.332 +9.496 3 0011110001 1.842

Kolejne kolumny oznaczają:

1 - numer pokolenia

2 - średnia wartość funkcji dostosowania w populacji

3 - maksymalna wartość funkcji dostosowania w populacji

4 - numer w populacji chromosomu, który ma największą wartość funkcji dostosowania

5 - chromosom, który w całej populacji ma największą wartość funkcji dostosowania

6 - wartość fenotypu chromosomu

Wartość maksymalna :

nr. pokolenie

najw. wart. średniej wartości f-cji dostosow.

chromosom

fenotyp

45

9.422

0001110001

1.831

Czyli algorytm nie znalazł „najlepszego” chromosomu (najlepszy jest dla x=1.722), ale znalazł „bardzo dobry” (x=1.831).

Wykres średniej wartości funkcji dostosowania w populacji:

0x08 graphic

Na osi poziomej - oznaczone są nr pokoleń.

Na osi pionowej - średnia wartość funkcji dostosowania w pokoleniu.

Jak widać, na początku populacja była „średnia” (średnia wartość funkcji dostosowania = 7.5), ale szybko stała się „dobra” ( ...>= 9), a pod koniec stała się już „bardzo dobra” (...>= 9.5).

Sprawdźmy jak będzie się zachowywał algorytm dla parametrów :

lp=50, N=10, pula=30; pk=0.5; pm=0.15

0x08 graphic

Wartość maksymalna :

nr. pokolenie

najw. wart. średniej wartości f-cji dostosow.

chromosom

fenotyp

31

9.626

1011000001

1.707

W tym wypadku wykres jest bardziej „poszarpany” w stosunku do poprzedniego, ponieważ znaczny wpływ na jego przebieg miało krzyżowanie chromosomów. Pomimo sporych wahań wartości funkcji dostosowania algorytm zwraca dobre wyniki, czego dowodem jest odnaleziony fenotyp x=1.707 posiadający wartość 9.626.

Zbadamy teraz algorytm dla parametrów sterujących :

lp=50, N=10, pula=30; pk=0.35; pm=0.10.

0x08 graphic

Wartość maksymalna :

nr. pokolenie

najw. wart. średniej wartości f-cji dostosow.

chromosom

fenotyp

45

9.529

1101000001

1.702

W początkowych pokoleniach chromosomy są „przeciętne” (wartości ok. 8.8) jednak w późniejszych sytuacja się zmienia (średnia wartość ok. 9.4) i nie następują już znaczne zmiany wartości funkcji dostosowania.

Następnie zbadamy jak będzie się zachowywał algorytm przy zmianach mutacji :

lp=50, N=10, pula=30; pk=0.7; pm=0.01.

0x08 graphic

Wartość maksymalna :

nr. pokolenie

najw. wart. średniej wartości f-cji dostosow.

chromosom

fenotyp

18

9.140

0111111110

1.664

Czyli znowu algorytm nie znalazł „najlepszego” chromosomu, ale znalazł „bardzo dobry”.

Widać, że populacja najpierw była całkiem dobra (8.2), potem bardzo dobra (9.1), ale potem trochę się pogorszyła (8.9). Jest to dość normalna sytuacja, ponieważ algorytm jest losowy. Sporządzony wykres funkcji jest bardziej poszarpany pod koniec, co zapewne wynika z mutacji chromosomów w kolejnych pokoleniach.

lp=50, N=10, pula=30; pk=0.7; pm=0.3.

0x08 graphic

Wartość maksymalna :

nr. pokolenie

najw. wart. średniej wartości f-cji dostosow.

chromosom

fenotyp

11

9.058

1100100001

1.725

Z pośród zaprezentowanych poprzednio wykresów, ten wydaje się najbardziej „poszarpany” co tylko potwierdza słuszność, iż mutacja odgrywa tutaj zasadniczą rolę.

Na wykresie występują znaczne spadki średniej wartości funkcji dostosowania dla niektórych pokoleń (najbardziej widoczne między 15-20 pokoleniem, oraz między 40 - 43).

lp=50, N=10, pula=30; pk=0.7; pm=0.5.

0x08 graphic

Wartość maksymalna :

nr. pokolenie

najw. wart. średniej wartości f-cji dostosow.

chromosom

fenotyp

42

9.228

1100100001

1.725

Zmiana prawdopodobieństwa mutacji z 0.3 do 0.5 nie przyniosła już tak gwałtownych zmian jak we wcześniejszych przypadkach. Algorytm zwrócił w miarę dobry chromosom o fenotypie 1.725 i wartości dostosowania 9.228.

Warto również sprawdzić jak będą przebiegały zmiany dla większej liczby pokoleń.

lp=300, N=10, pula=30; pk=0.7; pm=0.05

0x08 graphic

Wartość maksymalna :

nr. pokolenie

najw. wart. średniej wartości f-cji dostosow.

chromosom

fenotyp

294

9.651

1111000001

1.713

Wartość funkcji dostosowania nie jest zła, ale widać jej duże zmiany w kolejnych populacjach (wpływ dużego prawdopodobieństwa mutacji).

We wszystkich przykładach widać, że algorytm działa poprawnie - populacja staje się coraz bardziej „idealna”, a znajdowane chromosomy mają fenotypy zbliżone do wartości 1.7 (która daje maksymalną wartość funkcji dostosowania), dlatego przy odpowiednio dobranych parametrach sterujących programem można osiągnąć satysfakcjonujące wyniki.

STRATEGIA ELITERNA

Strategia elitarna zakłada, że w procesie tworzenia nowej populacji kopiowany jest „najlepszy” chromosom. Nie podlega on jednak krzyżowaniu i mutacji, dzięki czemu jest on „chroniony”.

W przeciwieństwie do algorytmu klasycznego, gdzie najlepszy osobnik podlega krzyżowaniu i mutacji, może on z „najlepszego” stać się „gorszym”, „najgorszym” a nawet i wypaść z populacji, strategia elitarna zapewnia uzyskanie optymalnych rezultatów w kolejnych pokoleniach.

W naszym projekcie strategię elitarną zastosowaliśmy w następujący sposób :

Przed funkcją KRZYZOWANIE() uruchamiana jest funkcja NR_MAX_CHROM(), która znajduje chromosom o największej wartości funkcji dostosowania w populacji (właściwie to znajduje jego numer). Przed NR_MAX_CHROM() trzeba jeszcze wywołać OBLICZ_DOSTOSOWANIE().

Ten najlepszy chromosom jest zapamiętywany przez wywołanie funkcji PAMIETAJ_NAJ_CHROM(). Potem następuje krzyżowanie i mutacje. Następnie ten najlepszy chromosom jest przez funkcję WPISZ_NAJ_CHROM() wpisywany z powrotem do populacji, na miejsce zerowe.

W programie wybór strategii dokonuje się przez ustawienie zmiennej „elitarna” na początku kodu „elitarna=true;” dzięki czemu zostanie uruchomiona strategia elitarna.

Pojawia się tu pewien problem: a co będzie, gdy w tym miejscu jest chromosom lepszy od tego chronionego? Niestety ale zostanie on zniszczony, a na jego miejsce wpisany ten chroniony. Oczywiście byłoby najlepiej, gdyby ten chroniony chromosom wpisywać na miejsce najgorszego chromosomu, ale byłaby to dodatkowa komplikacja algorytmu.

Przejdźmy zatem do analizy algorytmu z zastosowaniem strategii elitarnej :

lp=50, N=10, pula=30, pk=0.7, pm=0.00

0x08 graphic

Wartość maksymalna :

nr. pokolenie

najw. wart. średniej wartości f-cji dostosow.

chromosom

fenotyp

44

9.998

0100100001

1.772

Zaraz po uruchomieniu programu algorytm bardzo szybko (jeszcze przed piętnastym pokoleniem) odnalazł dobry chromosom. Z każdym kolejnym pokoleniem populacja staje się coraz bardziej optymalna, a pod koniec jest wręcz „idealna”, co zresztą widać na powyższym wykresie.

Teraz sprawdźmy jak będzie się zachowywał algorytm przy zmianie prawdopodobieństwa krzyżowania oraz mutacji :

lp=50, N=10, pula=30, pk=0.5, pm=0.01

0x08 graphic

Wartość maksymalna :

nr. pokolenie

najw. wart. średniej wartości f-cji dostosow.

chromosom

fenotyp

48

9.998

0100100001

1.772

Po zmianie krzyżowania i wprowadzeniu niewielkiej mutacji wykres jest bardziej postrzępiony, wolniej osiąga wartość maksymalną (dopiero w 48 pokoleniu, a poprzednio w ok. 25), ale porównując z metodą ruletki, wydaje się, że mutacja i krzyżowanie nie powodują tu wyraźnych spadków „jakości” populacji w kolejnych pokoleniach.

lp=50, N=10, pula=30, pk=0.35, pm=0.01

0x08 graphic

Wartość maksymalna :

nr. pokolenie

najw. wart. średniej wartości f-cji dostosow.

chromosom

fenotyp

31

9.998

0100100001

1.772

Kolejny raz strategia elitarna sprawdza się bardzo dobrze - wykres szybko osiągając dobre wartości funkcji dostosowania. W kolejnych pokoleniach występuje niewielkie oddziaływanie mutacji i krzyżowania np. między 15-20 pokoleniem oraz 33-50, ale zasadniczo nie wpływa na zmianę krzywej.

Spróbujemy teraz zmienić mutację i zaobserwować zmiany w projekcie :

lp=50, N=10, pula=30; pk=0.7; pm=0.1

0x08 graphic

Wartość maksymalna :

nr. pokolenie

najw. wart. średniej wartości f-cji dostosow.

chromosom

fenotyp

43

9.749

1111111110

1.667

Algorytm nie zwrócił maksimum wartości funkcji dostosowania (które oczywiście chcemy osiągnąć), jak to miało miejsce na poprzednich wykresach, ale dobrze radzi sobie ze zmianami w mutacji na poziomie 0.1.

lp=50, N=10, pula=30; pk=0.7; pm=0.3

0x08 graphic

Wartość maksymalna :

nr. pokolenie

najw. wart. średniej wartości f-cji dostosow.

chromosom

fenotyp

14

9.58

1111000001

1.713

Sytuacja analogiczna jak z poprzednim przykładem, z tą różnicą że tym razem bardzo uwidoczniły się skutki zwiększonego prawdopodobieństwa mutacji dla 0.3, przez co występują spore spadki wartości funkcji dostosowania w różnych pokoleniach na wykresie.

lp=50, N=10, pula=30; pk=0.7; pm=0.5

0x08 graphic

Wartość maksymalna :

nr. pokolenie

najw. wart. średniej wartości f-cji dostosow.

chromosom

fenotyp

20

9.358

0100100001

1.722

Po zwiększeniu mutacji do 0.5 można odnieść wrażenie, że jeszcze bardziej pogorszyła się wartość funkcji dostosowania dla najlepszego chromosomu. Biorąc pod uwagę losowość zmian mutacji i spore wahania wykresu to dla wskazanej ilości pokoleń nie jesteśmy w stanie do końca ocenić jak dobry byłby algorytm dla innego zestawu danych. Dlatego też prześledzimy działanie algorytmu dla większej ilości pokoleń.

lp=300, N=10, pula=30; pk=0.7; pm=0.05

0x08 graphic

Wartość maksymalna :

nr. pokolenie

najw. wart. średniej wartości f-cji dostosow.

chromosom

fenotyp

132

9.993

0100100001

1.722

Po zwiększeniu liczby pokoleń do 300 algorytm zachowuje się bardzo dobrze, wykres wartości funkcji dostosowania od liczby pokoleń nie jest zbytnio poszarpany, w przeciwieństwie do selekcji metodą ruletki.

Co prawda mutacja uwidacznia się wraz ze wzrostem ilości pokoleń i powoduje pewne spadki, ale jest to zjawisko naturalne i w dłuższej perspektywie czasowej można zaryzykować stwierdzenie,

że mutacja w tym wypadku nie jest parametrem strategicznym dla działania algorytmu.

PORÓWNANIE OBYDWU SELEKCJI

Na koniec przyjrzymy się jeszcze wykresom porównującym obydwie strategie :

metoda koła ruletki - kolor czerwony ; strategia elitarna - kolor purpurowy

lp=50, N=10, pula=30, pk=0.7, pm=0.00

0x08 graphic

Wartość maksymalna dla metody koła ruletki :

nr. pokolenie

najw. wart. średniej wartości f-cji dostosow.

chromosom

fenotyp

44

9.510

0011111110

1.659

Wartość maksymalna dla strategii elitarnej :

nr. pokolenie

najw. wart. średniej wartości f-cji dostosow.

chromosom

fenotyp

44

9.961

1111000001

1.713

lp=50, N=10, pula=30, pk=0.7, pm=0.05

0x08 graphic

Wartość maksymalna dla metody koła ruletki :

nr. pokolenie

najw. wart. średniej wartości f-cji dostosow.

chromosom

fenotyp

33

9.265

1011111110

1.661

Wartość maksymalna dla strategii elitarnej :

nr. pokolenie

najw. wart. średniej wartości f-cji dostosow.

chromosom

fenotyp

49

9.947

0100100001

1.722

lp=300, N=10, pula=30, pk=0.7, pm=0.1

0x08 graphic

Wartość maksymalna dla metody koła ruletki :

nr. pokolenie

najw. wart. średniej wartości f-cji dostosow.

chromosom

fenotyp

236

9.579

1111000001

1.713

Wartość maksymalna dla strategii elitarnej :

nr. pokolenie

najw. wart. średniej wartości f-cji dostosow.

chromosom

fenotyp

185

9.955

0100100001

1.722

WNIOSKI KOŃCOWE

Postaramy się teraz wyciągnąć ogólne wnioski, dla obydwu metod selekcji sztucznej inteligencji, z naszego projektu.

Na podstawie załączonych wykresów, dochodzimy do wniosku, iż strategia elitarna zdecydowanie lepiej sprawdza się w eksperymencie niż metoda koła ruletki. Dzieje się tak, ponieważ koło ruletki dopuszcza w kolejnych pokoleniach nawet najsłabsze osobniki (choć w mniejszym stopniu), podczas gdy strategia elitarna stara się wyeliminować te najgorsze już w pierwszych pokoleniach.

Po zwiększeniu liczby pokoleń widzimy tendencję do „poprawy” działania koła ruletki, przy czym kluczowy jest dobór odpowiednich parametrów krzyżowania i mutacji, ponieważ przy błędnych parametrach algorytm działa niestabilnie.

Z kolei na działanie selekcji elitarnej wpływa mutacja a nie krzyżowanie. Przy dużych wartościach mutacji (także dla większej liczby pokoleń), obserwujemy „chaotyczne” zmiany na wykresie, ale algorytm o wiele lepiej sobie z nimi radzi niż ruletka (szczególnie na ostatnich wykresach porównujących obydwie metody selekcji).

Nie bez znaczenia ma także szybkość działania samego algorytmu, gdzie strategia elitarna w o wiele szybszym tempie (niż koło ruletki) osiąga oczekiwane maksimum.



Wyszukiwarka

Podobne podstrony:
sprawozdanie 9 cz2 zad1
al lin zad1 rozw
pytania na sprawko, ZUT-Energetyka-inżynier, I Semestr, Materiały konstrukcyjne, Metale, 3. Stopy Cu
10 Sprawozdanie Cwiczenie ?danie?ektu Umacniania Wydzieleniowego Al Si Mg
2 definicje i sprawozdawczośćid 19489 ppt
PROCES PLANOWANIA BADANIA SPRAWOZDAN FINANSOWYC H
W 11 Sprawozdania
Wymogi, cechy i zadania sprawozdawczośći finansowej
Analiza sprawozdan finansowych w BGZ SA
W3 Sprawozdawczosc
Drucker Al Samorealizacja Poznanie Absolutu
1 Sprawozdanie techniczne
kitab al kafi
Karta sprawozdania cw 10
eksploracja lab03, Lista sprawozdaniowych bazy danych
2 sprawozdanie szczawianyid 208 Nieznany (2)
Fragmenty przykładowych sprawozdań

więcej podobnych podstron