algorytmy ewolucyjne id 57660 Nieznany

background image

Zadana funkcja:

2

2

2

2

1

2

1

1

( )

100

1

f x

x

x

x

Rozpatrywany przedział funkcji:

1;1

x

 

Wykres funkcji:

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

 

min

1; 1 v

1;1

x

 

  

max

1;1 v

1; 1

x

 

-1

-0.5

0

0.5

1

-1

-0.5

0

0.5

1

0

50

100

150

200

250

300

350

400

450

background image

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;

background image

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:
algorytmy sortujace id 57762 Nieznany
Algorytmy obliczen id 57749 Nieznany
Algorytmy zadania id 51150 Nieznany (2)
algorytmy tekstowe id 57778 Nieznany (2)
3 3 BK Algorytmy parsingu id 34 Nieznany (2)
Algorytmy genetyczne 2 id 57672 Nieznany (2)
Algorytmy wyklad 1 id 57804 Nieznany
Algorytm Simplex id 57544 Nieznany (2)
Algorytmy wyklad 6 7 id 57806 Nieznany
ewolucja 3 id 166065 Nieznany
Algorytm RSA id 57542 Nieznany
Algorytmy wyklad 4 5 id 57805 Nieznany
algorytm simplex 3 id 57546 Nieznany
algorytm lvq id 57514 Nieznany (2)
ALGORYTM BANKOMATU id 57487 Nieznany (2)
algorytmy sortujace id 57762 Nieznany
Algorytmy obliczen id 57749 Nieznany
ALGORYTM id 57461 Nieznany
algorytmika id 57568 Nieznany (2)

więcej podobnych podstron