algorytmy ewolucyjne

Zadana funkcja:

Rozpatrywany przedział funkcji:

Wykres funkcji:

Funckja ga patternsearch simulannealbnd
Liczba iteracji 10 100 10
Minimum globalne 0.02 0.0083 0.7349
Maksimum globalne 399.91 399.97 404
Czas poszukiwania rozw. [s] 0.1 0.09 0.02


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 znaleźć 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:
5 Charakterystyka algorytmów ewolucyjnych i genetycznych 3 doc
Algorytmy Ewolucyjne
Podstawy algorytmów ewolucyjnych2013
Algorytmy ewolucyjne cz4
algorytmy ewolucyjne id 57660 Nieznany
22 Gecow, Algorytmy ewolucyjne i genetyczne, ewolucja sieci zlozonych i modele regulacji genowej a m
5 Charakterystyka algorytmów ewolucyjnych i genetycznych
5 Charakterystyka algorytmów ewolucyjnych i genetycznych 2
5 Charakterystyka algorytmów ewolucyjnych i genetycznych
5 Charakterystyka algorytmów ewolucyjnych i genetycznych 4
Algorytmy ewolucyjne 2
Algorytmy Ewolucyjne wx algorytmy genetyczne
algorytmy ewolucyjne AG

więcej podobnych podstron