Zadania i przykłady do wykonania

Transkrypt

Zadania i przykłady do wykonania
1
Zagadnienia Sztucznej Inteligencji (studia zaoczne III rok – Informatyka)
Zadania i przykłady do wykonania
Linki i literatura
[1]J.S. R. Jang, C.T. Sun, E. Mizutani, Neuro-Fuzzy and Soft Computing, Prentice Hall, 1997
http://neural.cs.nthu.edu.tw/jang/book/
[2] Rutkowska D., Piliński M., Rutkowski L., Sieci neuronowe, algorytmy genetyczne i systemy rozmyte,
Wydawnictwo Naukowe PWN, Warszawa 1999
[3] http://www.ncrg.aston.ac.uk/netlab/
[4] http://www.shef.ac.uk/acse/research/ecrg/gat.html pakiet Genetic Algorithm Toolbox (GA-Toolbox).
A. Modelowanie rozmyte
1. Funkcje przynależności
Zapoznaj się z M-plikami funkcyjnymi tri_mf.m, trap_mf.m, gbell_mf.m, gauss_mf.m [1].
Zapisano w nich często stosowane funkcje przynależności Wykresy tych funkcji można zobaczyć
uruchamiając M-plik disp_mf.m (rysunek 1).
%............................................Jyh-Shing Roger Jang, 6-28-93.
function y = tri_mf(x, parameter)
% TRI_MF Triangular membership function with three parameters.
%
TRI_MF(x, [a, b, c]) returns a matrix y with the same size
%
as x; each element of y is a grade of membership.
a = parameter(1); b = parameter(2); c = parameter(3);
if a > b,
error('Illegal parameters: a > b');
elseif b > c,
error('Illegal parameters: b > c');
elseif a > c,
error('Illegal parameters: a > c');
end
y = max(min((x-a)/(b-a), (c-x)/(c-b)), 0);
____________________________________________________________________________________________________
function y = trap_mf(x, parameter)
% TRAP_MF Trapezoidal membership function with four parameters.
%
TRAP_MF(x, [a, b, c, d]) returns a matrix y with the same size
%
as x; each element of y is a grade of membership.
a = parameter(1); b = parameter(2); c = parameter(3); d = parameter(4);
if a > b,
error('Illegal parameters: a > b');
elseif b > c,
error('Illegal parameters: b > c');
elseif c > d,
error('Illegal parameters: c > d');
end
y = max(min(min((x-a)/(b-a), (d-x)/(d-c)), 1), 0);
____________________________________________________________________________________________________
function y = gbell_mf(x, parameter)
% GBELL_MF Generalized bell-shaped membership function with three parameters.
%
GBELL_MF(x, [a, b, c]) returns a matrix y with the same size
%
as x; each element of y is a grade of membership.
a = parameter(1); b = parameter(2); c = parameter(3);
y = 1./(1+(((x - c)/a).^2).^b);
___________________________________________________________________________________
function y = gauss_mf(x, parameter)
%GAUSS_MF Gaussian membership function with two parameters.
%
GAUSSIAN(x, [sigma, c]) returns a matrix y with the same size
%
as x; each element of y is a grade of membership.
c = parameter(1);
sigma = parameter(2);
tmp = (x - c)/sigma;
y = exp(-tmp.*tmp/2);
1
2
Sprawdź (poprzez modyfikację pliku disp_mf.m), jaki wpływ na kształt funkcji przynależności mają ich
parametry.
Membership Grades
1
0.5
0
0
20 40 60 80 100
(c) Gaussian MF
1
0.5
0
(b) Trapezoidal MF
Membership Grades
Membership Grades
Membership Grades
(a) Triangular MF
0
20
40
60
80 100
1
0.5
0
0
20 40 60 80 100
(d) Generalized Bell MF
1
0.5
0
0
20
40
60
80 100
Rysunek 1. Wykresy funkcji przynależności – rezultat działania M-pliku disp_mf.m
2. Operacje na zbiorach rozmytych
Zapoznaj się z kodem źródłowym M-pliku fuzsetop.m [1], który ilustruje podstawowe operacje na
zbiorach rozmytych. Zapisz jakie są to operacje i algorytmy, które je realizują. Wykonaj te operacje dla
innych funkcji przynależności (poprzez modyfikację pliku fuzsetop.m).
3. Relacje i wnioskowanie rozmyte
Zapoznaj się z kodem źródłowym M-pliku fuzimp.m [1], który ilustruje relacje i implikacje rozmyte.
Wypisz wszystkie relacje i implikacje rozmyte pokazane w oknach graficznych, otwieranych przy
uruchomieniu tego pliku. Zapisz algorytmy, które realizują te relacje i implikacje rozmyte.
Sprawdź jak działa M-plik fuzimp.m dla innych funkcji przynależności.
4. Modele Mamdani
•
•
•
Zapoznaj się ze sposobem tworzenia i działania modelu Mamdani z jednym wejściem i jednym
wyjściem, poprzez uruchomienie i analizę kodu źródłowego pliku mam1.m[1] (odwzorowanie
funkcji jednej zmiennej). Zapisz reguły dla tego modelu.
Zapoznaj się ze sposobem tworzenia i działania modelu Mamdani z dwoma wejściami i jednym
wyjściem, poprzez uruchomienie i analizę pliku mam2.m[1] (odwzorowanie powierzchni – funkcji
dwóch zmiennych). Zapisz reguły dla tego modelu.
Poznaj metody defuzyfikacji (ostrzenia), dostępne w M-pliku funkcyjnym defuzzy.m – zapisz
ich wzory. W plikach mam1.m i mam2.m funkcja defuzzy jest wołana z option=1.
function out = defuzzy(x, mf, option) [1]
%DEFUZZY Defuzzification of MF.
% DEFUZZY(x, mf, option) returns a representative value of mf
% using different defuzzification strategies:
%
option = 1 ---> center of area
-> metoda środka ciężkości
%
option = 2 ---> bisecter of area
-> metoda środka sum
%
option = 3 ---> mean of max
-> metoda środka maksimum,
•
Sprawdź jaki wpływ na uzyskane odwzorowania funkcji i powierzchni, realizowane w plikach
mam1.m i mam2.m,mają:
różne metody defuzyfikacji (dostępne w M-pliku defuzzy.m)
różne funkcje przynależności i ich parametry.
2
3
•
Zapisz reguły dla modeli z M-plików mam1.m i mam2.m Określ jakie zastosowano metody
rozmywania i wnioskowania.
5. Modele Takagi-Sugeno
•
•
•
•
Zapoznaj się ze sposobem tworzenia i działania modelu Takagi-Sugeno z jednym wejściem i
jednym wyjściem, poprzez uruchomienie i analizę kodu źródłowego M-pliku sug1.m [1]
(odwzorowanie funkcji jednej zmiennej). Zapisz reguły dla tego modelu.
Zapoznaj się ze sposobem tworzenia i działania modelu Takagi-Sugeno z dwoma wejściami i
jednym wyjściem, poprzez uruchomienie i analizę kodu źródłowego M-pliku sug2.m [1]
(odwzorowanie powierzchni – funkcji dwóch zmiennych). Zapisz reguły dla tego modelu.
Zapoznaj się z metodami obliczania wartości wyjściowych (ostrych) w modelach Takagi-Sugeno
Na podstawie modeli Takagi –Sugeno, które zapisano w plikach sug1.m i sug2.m należy
utworzyć M-plik z modelem, który opisano poniżej i wykonać wizualizację jego powierzchni
wejścia-wyjścia.
Dany jest model Takagi –Sugeno zapisany dwiema regułami w postaci [2]:
IF (x1 jest DUŻE AND x2 jest ŚREDNIE) THEN y1 = 2 + 7x1 - 3x2
IF (x1 jest MAŁE AND x2 jest MAŁE) THEN y2= -2x1 +5x2
Wyznaczono sygnał wyjściowy modelu y dla x1= 2 i x2=3. Na podstawie rysunku 2 oraz
zakładając, że wartości wk (k= 1,2) są wyznaczane za pomocą operacji typu min,
otrzymuje się:
w1 = min(0.3; 0,7) = 0,3
w2 = min(0.75; 0,2) = 0,2
Rysunek 2. Funkcje przynależności dla rozpatrywanego modelu Takagi-Sugeno.
3
4
B. Sieci neuronowe
Przykład 1. Funkcje aktywacji neuronu zapisano w M-pliku activati.m [1]. Ich wykresy uzyskuje się
poleceniem: activati. Skopiować do swojego katalogu M-plik activati.m i przeanalizować jego
zawartość. Zmodyfikować plik wprowadzając parametr β. Wykonać wykresy funkcji dla różnych wartości
parametru β (beta).
Przykład 3. Model opreracji logicznej XOR. Tabela poniżej przedstawia odpowiedzi funkcji XOR dla
wszystkich możliwych danych wejściowych. Operacja logiczna XOR przyjmuje dwa parametry binarne i
przyjmuje wartości 0 lub 1.
X
1
1
0
0
Y
1
0
1
0
XOR
0
1
1
0
Zadanie polega na odwzorowaniu tej funkcji za pomocą sieci neuronowej.
1. Wykonać polecenie xordata (M-plik xordata.m [1]) i obejrzeć dane wejściowe dla symulacji
funkcji XOR.
2. Wykonać polecenie mlpdm2 (M-plik mlpdm2.m [1]) i zapoznać się z odwzorowaniem funkcji XOR
za pomocą wielowarstwowego perceptronu.
3. Skopiować i edytować M-plik mlpdm2.m. Zmodyfikować ten plik tak, aby realizowaną funkcją
logiczną była funkcja AND oraz OR.
4. Zmodyfikować wektor train_opt oraz mlp_config i przetestować różne architektury i parametry
algorytmu uczenia.
Pytania:
1. Czy funkcje AND oraz OR są liniowo separowalne?
2. Czy sieć jest w stanie nauczyć się odwzorowania funkcji XOR, AND, OR z jednym neuronem w
warstwie ukrytej? Sprawdzić to, modyfikując odpowiednie parametry w M-pliku mlpdm2.m
Przykład 4. Aproksymacja funkcji jednej zmiennej – z wykorzystaniem sieci MLP.
Do aproksymacji funkcji użyto sieci neuronowej typu wielowarstwowy perceptron (ang. multilayer
perceptron) tj. sieci MLP. Aproksymowana funkcja jest określona zestawem wartości:
x=(-1:.1:1)';
y=[-.9602 -.5770 -.0729 .3771 .6405 .6600 .4609 ...
.1336 -.2013 -.4344 -.5000 -.3930 -.1647 .0988 ...
.3072 .3960 .3449 .1816 -.0312 -.2189 -.3201]'
1. Poleceniem mlpdm1 uruchomić M-plik [1], który ilustruje proces aproksymacji funkcji.
2. Skopiować plik mlpdm1.m. Zapoznać się z jego zawartością oraz z możliwościami sterowania
architekturą sieci (wektor mlp_config) i przebiegiem procesu uczenia (wektor train_opt).
3. Zmodyfikować zbiór danych uczących tak, by aproksymować inną funkcję. Wypróbować różne
architektury sieci i parametry algorytmu uczenia.
Pytania:
1. Czy sieć o danej architekturze radzi sobie równie dobrze (lub równie źle) niezależnie od zbioru
danych uczących?
2. Jaki wpływ na jakość odwzorowania mają poszczególne parametry algorytmu uczenia?
Przykład 5. Funkcja Gaussa. Wykonaj wykres funkcji Gaussa korzystając z M-pliku funkcyjnego
gauss_mf.m [1]. Sprawdzić wpływ wartości jej parametrów (centrum c, wariancja δ) na jej kształt.
Przykład 6. Aproksymacja funkcji jednej zmiennej – z wykorzystaniem sieci RBF.
Aproksymowana funkcja jest określona zestawem wartości obliczonych ze wzoru jak poniżej [1]:
x = linspace(-1, 1, 51)';
y = 0.6*sin(pi*x) + 0.3*sin(3*pi*x) + 0.1*sin(5*pi*x);
trn_data = [x y];
Wykonać polecenie rbfndm1 i przeanalizować rezultaty aproksymacji funkcji.
4
5
W M-pliku rbfndm1.m zmienić: liczbę neuronów radialnych,
aproksymowaną funkcje i jej zakres.
Pytania:
1. Jaki wpływ mają dokonane zmiany na efekt uczenia?
2. Jaki algorytm uczenia jest zaimplementowany w rbfndm1.m?
parametr uczenia η (eta),
Przykład 7. Odwzorowanie funkcji XOR – z wykorzystaniem sieci RBF.
Wykonać polecenia: rbfnxor, rbfnxor1, rbfnxor2. Skopiować i edytować odpowiadające tym
poleceniom M-pliki [1].
1. Sprawdzić w jakich miejscach przestrzeni umieszczone są centra funkcji radialnych.
2. Zachowując te same centra funkcji radialnych zrealizować operację logiczną NOT XOR.
3. Zmienić położenia centrów funkcji radialnych i zmodyfikować pliki tak, aby nadal realizowana była
funkcja XOR.
Przykład 8. Wizualizacja sieci Kohonena na płaszczyźnie.
1. Poleceniem kfm2 uruchomić M-plik [1] ilustrujący uczenie sieci SOM. Sieć uczy się
przestrzennego rozkładu danych wejściowych na płaszczyźnie.
2. Wywołać polecenie kfm2 z parametrami 1 – 5 i zaobserwować efekt uczenia sieci za pomocą
danych uczących o różnym okładzie (trójkąt, koło itd.).
3. Edytować plik kfm2.m. Zmodyfikować parametry sieci (liczba neuronów w każdym wymiarze
sieci SOM) oraz parametry algorytmu uczenia sieci. Zaobserwować ich wpływ na zdolność sieci do
prawidłowego odwzorowania zbiorów danych uczących.
4. Zaprojektować własny rozkład danych uczących, przykładowo w postaci pokazanej na rysunku 3.
Rysunek 3. Przykładowy rozkład danych uczących.
Pytanie: Jakiego rodzaju sąsiedztwo zastosowano w M-pliku kfm2.m ?
Przykład 9. Przygotowanie danych uczących dla sieci MLP w pakiecie Netlab [3]
Przygotować dane uczące dla zadania aproksymacji funkcji sinus. Wykorzystać następujące polecenia:
x=0:0.1:5
x=x’, t=sin(x), datwrite(’sinusdata.dat’,x,t)
Utworzony plik „sinusdata.dat” może być użyty przez demtrain [3]. Zapisane w nim dane można
pobrać za pomocą funkcji datread. [x, t, nin, nout, ndata]=datread(filename)
Przykład 10. Aproksymacja funkcji jednej zmiennej – z wykorzystaniem sieci MLP. (dostępnych
poprzez funkcje pakietu Netlab [3]). Utworzyć sieć, która aproksymuje funkcję sinus w przedziale [0;6],
korzystając z funkcji mlp [3].
clear, net=mlp(1,4,1,'linear')
Zostaje utworzona nowa sieć z losowo zainicjowanymi wagami. W polach struktury o nazwie net zapisane
są parametry utworzonej sieci. Wartości pól struktury są dostępne przez jej nazwę (tu net).
Utworzyć dane uczące dla sieci:
x=0:0.1:6;
x=x'; y=sin(x);
Sprawdzić jak odpowiada sieć nie nauczona:
net_y = mlpfwd(net,x);
Wyświetlić dane uczące oraz odpowiedź sieci: plot(x,y,'r',x,y,'k+',x,net_y,'g')
Następnie sieć jest uczona przez 50 epok:
[net, err]=mlptrain(net,x,y,50)
Ponownie obliczane są odpowiedzi sieci i tworzony jest nowy wykres
net_y = mlpfwd(net,x); plot(x,y,'r',x,y,'k+',x,net_y,'g')
5
6
Przykład 11. Analiza wpływu architektury sieci na osiągnięte wyniki. Przetestować, wpływ
konfiguracji sieci na błąd aproksymacji wybranej funkcji, np.
f(x) = 0.6*sin(pi*x) + 0.3*sin(3*pi*x) + 0.1*sin(5*pi*x)
w przedziale [-1;1]
Przygotować plik z danymi uczącymi i wykonać ćwiczenie za pomocą interfejsu demtrain.
Pytania:
1. Dla jakiej liczby neuronów ukrytych sieć osiąga najmniejszy błąd?
2. Czy zawsze ze wzrostem liczby neuronów ukrytych otrzymujemy mniejszy błąd przy tej samej
liczbie iteracji?
3. Czy zmiana funkcji aktywacji ma wpływ na osiągnięte wyniki?
Jako że efekt uczenia zależy od początkowych wartości wag, trening należy powtórzyć kilkakrotnie dla
każdego ustawienia.
C. Algorytmy genetyczne
Przykład 1 - utworzenie populacji binarnej [4].
Chrom = crtbp(4,8) %utworzenie losowej populacji.
%Cztery osobniki po osiem bitów (cztery bity na zmienną)
Chrom =
1
0
1
0
1
1
0
0
1
0
1
1
1
1
0
0
1
1
0
1
0
0
1
0
0
0
0
1
0
0
0
1
FieldD =[4 4;-1 -1;10 10;1 1;0 0 ;1 1;1 1]; %zdefiniowanie macierzy FieldD
Phen=bs2rv(Chrom, FieldD) %przekształcenie macierzy binarnej na rzeczywistą
Phen =
6.3333
3.4000
7.8000
1.2000
10.0000
10.0000
4.1333
8.5333
Przykład 2 - jedna generacja (iteracja) klasycznego algorytmu genetycznego SGA [4].
ObjV = objfun1(bs2rv(Chrom,FieldD)); %objfun1 – funkcja celu
%wyliczenie wartości funkcji celu dla wszystkich osobników
%
FitnV = ranking(ObjV);
%ranking rozwiązań
%na podstawie wartości funkcji celu
SelCh = select('sus', Chrom, FitnV);
%selekcja metodą sus.
SelCh = recombin('xovsp',SelCh,0.7);
%krzyżowanie jednopunktowe z
%prawdopodobieństwem 0.7
SelCh = mutate('mut', SelCh, NaN, 0.3); %mutacja równomierna
ObjVSel = objfun1(bs2rv(SelCh,FieldD));%obliczenie wartości funkcji celu
%po działaniu operatorów genetycznych
[Chrom ObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel);
%zastąpienie starych populacji nowymi
6
7
Przykład 3
sga.m – jest demonstracyjnym M-plikiem z pakietu GA-Toolbox [4]. Zaimplementowano w tym pliku
klasyczny algorytm genetyczny SGA.
% sga.m – zawiera implementowany klasyczny algorytm genetyczny
NIND = 40;
MAXGEN = 300;
GGAP = .9;
NVAR = 20;
PRECI = 20;
%
%
%
%
%
Liczba osobników w populacji
liczba iteracji
Ile osobników jest tworzonych podczas selekcji
Liczba zmiennych optymalizowanej funkcji
Precyzja – ile bitów reprezentuje jedną zmienną
% Uworzenie macierzy opisującej populację
FieldD = [rep([PRECI],[1, NVAR]); rep([-512;512],[1, NVAR]);...
rep([1; 0; 1 ;1], [1, NVAR])];
% Utworzenie populacji - Inicjacja
Chrom = crtbp(NIND, NVAR*PRECI);
% Wyzerowanie liczników – wartości początkowe zmiennych sterujących
Best = NaN*ones(MAXGEN,1); % macierz najlepszej aktualnej populacji
gen = 0;
% licznik generacji (iteracji)
% Ocena początkowej populacji – Ocena przystosowania
ObjV = objfun1(bs2rv(Chrom,FieldD));
% Wyliczenie i wizualizacja najlepszego rozwiązania
Best(gen+1) = min(ObjV);
plot(log10(Best),'ro');xlabel('generation'); ylabel('log10(f(x))');
text(0.5,0.95,['Best = ', num2str(Best(gen+1))],'Units','normalized');
drawnow;
% Pętla Alorytmu
while gen < MAXGEN,
% Na podstawie funkcji przystosowanie określenie rankingu rozwiązań
FitnV = ranking(ObjV);
% Selekcja
SelCh = select('sus', Chrom, FitnV, GGAP);
% Zastosowanie operatorów genetycznych
SelCh = recombin('xovsp',SelCh,0.7);
SelCh = mut(SelCh);
% Krzyżowanie
% Mutacja
% Wyliczenie funkcji celu dla nowej populacji
ObjVSel = objfun1(bs2rv(SelCh,FieldD));
% Utworzenie nowej populacji
[Chrom ObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel);
% Zwiększenie licznika generacji (iteracj)
gen = gen+1;
% Aktualizacja wizualizacji zmian i zapis śladu najlepszego osobnika (Best)
Best(gen+1) = min(ObjV); %wyprowadzenie najlepszego chromosomu
plot(log10(Best),'ro'); xlabel('generation'); ylabel('log10(f(x))');
text(0.5,0.95,['Best = ', num2str(Best(gen+1))],'Units','normalized');
drawnow;
end
% End of GA
7
8
Pytania:
1.
2.
3.
4.
5.
6.
7.
Określ zasady działania algorytmu genetycznego.
Czym charakteryzuje się klasyczny algorytm genetyczny (SGA)?
Wyjaśnij zasady selekcji metodą koła ruletki
Na czym polega krzyżowanie jednopunktowe?
Jakie są najważniejsze parametry algorytmu genetycznego wpływające na jego działanie?
Wyjaśnij pojęcia: chromosom, gen, populacja.
Podaj różnice pomiędzy kodowaniem binarnym a rzeczywistym.
Zadanie 1.
Zapisz na kartce papieru tj. wykonaj ręczną symulację jednej generacji (iteracji) algorytmu
3
2
genetycznego dla zadania optymalizacji funkcji f(x)= 0.2*x +0.1*x -8*x. Optymalizacja polega na
znalezieniu wartości x∈[-6,6], dla której funkcja przyjmuje wartość minimalną.
1. Utwórz przykładową populacje 10 osobników. Zastosuj kodowanie binarne.
2. Wykonaj selekcję metodą koła ruletki – czy jest możliwe bezpośrednie zastosowanie tej metody?
3. Wykonaj krzyżowanie jednopunktowe
4. Wykonaj mutacje równomierną
Korzystając ze środowiska MATLAB wykonaj wykres powyższej funkcji i wyznacz jej wartość minimalną
w podanym zakresie, za pomocą funkcji fmin.
Zadanie 2.
Zapoznaj się z demonstracyjnym M-plikiem sga.m z pakietu GA-Toolbox [4]. Zaimplementowano w tym
pliku klasyczny algorytm genetyczny, z wykorzystaniem funkcji dostępnych w pakiecie GA-Toolbox.
Optymalizowaną funkcję, dla której poszukiwano minimum, zapisano w M-pliku objfun1.m
Korzystając z funkcji pakietu GA-Toolbox, zapisz w M-pliku program rozwiązujący problem określenia
minimum funkcji z zadania 1. Wykonaj testy dla następujących konfiguracji algorytmu genetycznego:
Nr testu
Wielkość
populacji
Liczba
generacji
Prawdopodobieństwo
krzyżowania
Prawdopodobieństwo
mutacji
1
20
100
0.7
0.1
2
20
100
0.7
0.01
3
20
100
0.7
0.005
4
20
100
0.5
0.1
5
20
100
0.5
0.01
6
20
100
0.5
0.005
7
20
100
0.3
0.1
8
20
100
0.3
0.01
9
20
100
0.3
0.005
10
40
100
0.7
0.005
11
40
200
0.7
0.005
Każdy test należy wykonywać 5-krotnie.
Jakie parametry algorytmu genetycznego dają najlepsze rezultaty?
Zmiany, którego parametru mają największy wpływ na wynik działania algorytmu genetycznego?
8
9
Zadanie 3.
Demonstracyjny M-plik sga.m [4] z pakietu GA-Toolbox, przetestuj dla funkcji Griewangk’a (M-plik
objfun8.m). Zastosuj następujące parametry algorytmu genetycznego:
• Kodowanie zmiennopozycyjne
• Selekcja sus (ang. stochastic universal sampling)
• Krzyżowanie wielopunktowe, arytmetyczne
• Mutacja
• Dobierz parametry zadania poprzez wykonanie testów z parametrami jak w tabelce dla zadania 2.
Każdy test należy wykonywać 5-krotnie
Przy jakich parametrach algorytmu genetycznego uzyskuje się najlepsze wyniki?
Zadanie 4.
Poleceniem MATLAB-a peaks, wykonaj wykres funkcji dwóch zmiennych „peaks”, zdefiniowanej w
M-pliku funkcyjnym peaks.m
Uruchom program plik demonstracyjny go_ga.m [1], który wykorzystuje algorytm genetyczny do
znalezienia maksimum tej funkcji. Zapoznaj się, z kodem źródłowym tego programu. Odszukaj miejsca
definiowania parametrów algorytmu genetycznego.
Sprawdź, jak zmieniają się wartości poszukiwanego maksimum funkcji - zmieniając: liczbę generacji,
wielkość populacji, prawdopodobieństwo krzyżowania i mutacji.
Czy parametry znalezione we wcześniejszych zadaniach jako najlepsze, również tu dają dobre wyniki?
Zaobserwuj jak zmieniają się wartości: najlepszego, średniego i najgorszego osobnika w populacji?
Wyjaśnij to zachowanie?
Wyznacz maksimum funkcji „peaks”, korzystając z funkcji MATLAB-a fmins (pamiętaj o
przekształceniu zadania do problemu minimalizacji).
Zadanie 5.
Problem komiwojażera jest formułowany następująco: należy znaleźć trasę komiwojażera, który chce
odwiedzić wszystkie miasta na swoim terytorium tylko raz i wrócić do punktu startu tak, aby była ona
najtańsza (najkrótsza). Przestrzeń rozwiązań zadania jest zbiorem permutacji n miast.
Plik demonstracyjny tsp.m [1]zawiera wizualizację tego zadania i implementację jego rozwiązania metodą
symulowanego wyżarzania.
Jak wygląda osobnik reprezentujący rozwiązanie tego problemu?
Jak wyliczyć wartość funkcji przystosowania?
Jak zaimplementować krzyżowanie i mutacje dla tego problemu?
Dla danych z pliku tsp.m (wzorując się na pliku go_ga.m ) napisz program w MATLAB-ie
rozwiązujący problem komiwojażera.
9