Zadana funkcja:
2
2
2
f (x) =ð
(ð )ð
(ð )ð
åðéð100 x12 -ð x2 +ð x1 -ð1 Å‚ð
Ä™ðÅ›ð
ëðûð
1
Rozpatrywany przedział funkcji:
xÎð -ð1;1
Wykres funkcji:
450
400
350
300
250
200
150
100
50
0
-1
-0.5
1
0
0.5
0
0.5
-0.5
1
-1
Funckja ga patternsearch simulannealbnd
Liczba iteracji 10 100 10 100 10 100
Minimum globalne 0.02 0.0083 0.7349 0.1368 0.006 5e-7
Maksimum globalne 399.91 399.97 404 404 395.61 400
Czas poszukiwania rozw. [s] 0.1 0.09 0.02 0.06 0.01 0.03
xmin =ð 1;-ð1 v -ð1;1
[ð ]ð [ð ]ð
x =ð 1;1 v -ð1;-ð1
[ð ]ð [ð ]ð
max
Kod funkcji:
options=psoptimset('MaxIter',10);
clk=tic;
[Px_min Pf_min] = patternsearch(@rosen,[0 0],[],[],[],[],[-1 -1],[1 1],options);
Ptime=toc(clk);
[Px_max Pf_max] = patternsearch(@rosen_inv,[0 0],[],[],[],[],[-1 -1],[1
1],options);
clk=tic;
[Gx_min Gf_min] = ga(@rosen,2,[],[],[],[],[-1 -1],[1 1],[],options);
Gtime=toc(clk);
[Gx_max Gf_max] = ga(@rosen_inv,2,[],[],[],[],[-1 -1],[1 1],[],options);
clk=tic;
[Sx_min Sf_min]=simulannealbnd(@rosen,[-0 -0],[-1 -1],[1 1],options);
Stime=toc(clk);
[Sx_max Sf_max]=simulannealbnd(@rosen_inv,[-0 -0],[-1 -1],[1 1],options);
clc;
disp(['Funkcja ga: Min/Max = ' num2str(Gf_min) ' / ' num2str(-Gf_max) ' t= '
num2str(Gtime) 's' ]);
disp(['Funkcja Patternsearch: Min/Max = ' num2str(Pf_min) ' / ' num2str(-Pf_max)
' t= ' num2str(Ptime) 's' ]);
disp(['Funkcja Simulannealbnd: Min/Max = ' num2str(Sf_min) ' / ' num2str(-Sf_max)
' t= ' num2str(Stime) 's']);
function y = rosen(x)
%
% Rosenbrock function
% Matlab Code by A. Hedar (Nov. 23, 2005).
% The number of variables n should be adjusted below.
% The default value of n = 2.
%
n = 2;
sum = 0;
for j = 1:n-1;
sum = sum+100*(x(:,j).^2-x(:,j+1)).^2+(x(:,j)-1).^2;
end
y = sum;
function y = rosen_inv(x)
%
% Rosenbrock function
% Matlab Code by A. Hedar (Nov. 23, 2005).
% The number of variables n should be adjusted below.
% The default value of n = 2.
%
n = 2;
sum = 0;
for j = 1:n-1;
sum = sum+100*(x(:,j).^2-x(:,j+1)).^2+(x(:,j)-1).^2;
end
y = -sum;
Wnioski:
Aby uwzględnić wydajność algorytmów, dla każdego z nich przyjęto taką samą liczbę iteracji
100. Każdy z algorytmów poszukuje minimum funkcji w określonym obszarze dwóch zmiennych. Żeby
znalezć maksimum, skorzystano z funkcji rosen odbitej symetrycznie względem płaszczyzny x,y (tj.
f(x1,x2)*=-f(x1,x2) ) i dla tej funkcji poszukiwano minimum. Ekstrema poszukiwano dla przedziału <-
1,1>. Najlepszy z algorytmów okazał się algorytm symulowanego wyżarzania simulannealbnd, dzięki
któremu otrzymano najdokładniejsze wyniki oraz w najkrótszym czasie. Jednak przy zbyt małej
liczbie iteracji niekiedy otrzymywano duże błędy. Najgorzej pod względem dokładności spisał się
algorytm patternsearch, natomiast najmniej wydajnym jest algorytm ga.
Patternsearch jako jedyny z użytych algorytmów jest algorytmem determistycznym, tzn nie
zawiera elementów losowości. Skutkowało to tym, że każde wywołanie opisanej funkcji dawało te
same wyniki. Pozostałe algorytmy ga oraz simulannealbnd są algorytmami stochastycznymi
(zawierające elementy losowości). Każde kolejne poszukiwanie ekstremum funkcji za pomocą tych
algorytmów dawało inne wyniki. Wyniki te natomiast nie wiele się różniły od siebie.
Algorytm simulannealbnd wymaga większej liczby iteracji lecz jego wydajność jest na tyle
duża, że z powodzeniem można liczbę iteracji zwiększyć. Czas wykonania algorytmu simulannealbnd
dla 100 iteracji jest porównywalny z czasem wykonania algorytmu patternsearch dla 10 iteracji.
Wyszukiwarka
Podobne podstrony:
Zastosowanie algorytmów ewolucyjnych w grach logicznychAlgorytmy ewolucyjne cz402 Podstawowe typy algorytmów ewolucyjnychPodstawy algorytmów ewolucyjnych2013SEE algorytm ewolucyjnyalgorytmy ewolucyjne AGAlgorytmy genetyczne i procesy ewolucyjne Wykład 2Algorytmy genetyczne i procesy ewolucyjne Wykład 4Algorytmy genetyczne i procesy ewolucyjne Wykład 1Algorytmy genetyczne i procesy ewolucyjne Wykład 3Rzym 5 w 12,14 CZY WIERZYSZ EWOLUCJIanaliza algorytmow2009 12 Metaprogramowanie algorytmy wykonywane w czasie kompilacji [Programowanie C C ]6 6 Zagadnienie transportowe algorytm transportowy przykład 2Ewolucja Hedgehoga! Średniowiecze algoryzm sredniowiecznyEwolucja i zmienność genomu drożdży winiarskichS cerevisiaeAlgorytmy genetyczne a logika rozmytawięcej podobnych podstron