Documente Academic
Documente Profesional
Documente Cultură
1.1
Criteriul de performan care trebuie extremizat se mai numete funcie scop, funcie
obiectiv sau funcie criteriu fr impuneri de legturi sau/i restricii. Aceasta este o funcie
de n argumente reale, f ( x1, x2 ,...xn ) , a crei extremizare nseamn gsirea unui vector
T
x* = x1* x2* ... xn* n , corespunztor unui punct din spaiul n-dimensional, pentru
care funcia este optim (maxim sau minim). Maximizarea i minimizarea unei funcii nu
se deosebesc formal, ntruct maximul lui f se obine pentru minimul lui f.
Pentru n2, funcia obiectiv admite o reprezentare geometric, i anume:
bidimensional: y = f ( x1 ) este ecuaia unei curbe n planul ( x1, y ) ;
tridimensional: y = f ( x1, x2 ) este ecuaia unei suprafee n sistemul de coordonate
( x1, x2 , y ) (suprafaa de rspuns).
(1)
f ( x)
f '( x) = f ( x)
x1
f ( x)
f ( x)
...
x2
xn
Definiia 2:
(2)
1.2
2 f ( x)
2
x1
2
f ( x)
f "( x) = H ( x) x2x1
...
2 f ( x)
x x
n 1
2 f ( x)
2 f ( x)
...
x1x2
x1xn
2 f ( x)
2 f ( x)
...
x2xn
x22
...
...
...
2 f ( x)
2 f ( x)
...
xn x2
xn2
Principalele metode de optimizare parametric sunt sintetizate n tabelul 2.9; ele sunt
detaliate n paragrafele urmtoare. Cele dou mari clase de metode indirecte i directe se
deosebesc att principial, ct i din punctul de vedere al performanelor (viteza de
convergen, timpul de calcul i memoria necesar algoritmilor rezultai). Astfel, metodele
directe sunt n general mai lent convergente dect metodele indirecte, dar necesit un volum
de memorie mai mic. Nivelul admisibil al compromisului acceptat n ce privete
performanele este un factor n alegerea uneia sau alteia dintre metode.
A. indirecte
A.1 metode de gradient (Cauchy)
(folosesc valorile funciei A.2 metode Newton (de gradient de ordinul al II-lea)
f ( x ) i pe cele ale
A.3 metode ale direciilor conjugate
derivatelor ei)
B.1 metoda explorrii exhaustive
unidimensional
B. directe
B.2 metode de eliminare
multidimensional
(folosesc numai valorile
funciei f ( x ) , fr a le B.3 metode de cutare pe baz de hiperpoliedre (simplexuri)
exploratoare
utiliza pe cele ale
B.4 metode de cutare aleatoare (Monte Carlo)
derivatelor ei)
B.5 metode de cutare unidirecional (unidimensional)
metode de relaxare (Gauss)
Tabel 1
1.3
Metode indirecte
T
f ( x ) f x* + f ' x* x x*
(4)
T
T
T
1
f ( x ) f x* + f ' x* x x* + x x* f " x* x x*
2
( ) ( ) (
( ) ( ) (
) (
( ) (
Metodele Newton au o convergen mai bun dect cele de gradient simplu, dar prezint
inconvenientul unui timp de calcul i al unui volum de memorie mai mari, pentru c necesit
calculul matricei hessian la fiecare iteraie de cutare.
n formula (23) gradientul arat direcia ratei maxime de cretere a funciei f. Pe aceast
formul se bazeaz metoda celei mai mari pante (dac optimul este un maxim) sau metoda
celei mai abrupte coborri (dac optimul este un minim). Mai jos se prezint descrierea n
meta-limbaj a celui mai simplu algoritm de gradient (notaia |||| semnific norma vectorial).
Date de intrare: (tolerana suficient), x(0) (punctul iniial)
i0
Repet
#1. Se determin direcia de cutare la pasul i (dat de versorul asociat gradientului):
(5)
(i )
x(i +1) = x (i ) + p (i ) d (i )
i i+1
( )
Pn cnd f x (i ) .
Se observ c algoritmul de mai sus necesit cunoaterea a priori a tipului de extrem
cutat (maxim sau minim). Implementarea n Matlab se poate face sub forma unei funcii care
primete punctul de start al cutrii, x0 (la cazul general acesta este un vector) i tolerana
dorit, epsilon, i returneaz valoarea de extrem a unei funcii (la cazul general, vectoriale)
cunoscute, x, i numrul de iteraii n care s-a obinut aceasta, nr_it. S-a utilizat o variabil
local, itermax, pentru a fora ieirea din ciclare dac extremul nu poate fi gsit.
function [x,nr_it]=opt_grad(x0,epsilon)
nr_it=1;x_curent=x0;itermax=1500;%numr maxim de iteraii
h=0.001; %variaie utilizat n calculul gradientului
p=0.001;%se alege un pas constant de deplasare
for k=1:n,
v=zeros(1,n);v(k)=1;
grad_curent(k)=(f1(x0+h/2*v)-f1(x0-h/2*v))/h;
end;
3
while (norm(grad_curent)>=epsilon)&(nr_it<=itermax),
%implementarea formulei (2.29) folosind (2.28);
%pentru o funcie de maximizat se nlocuiete cu +
x_viitor=x_curent-p*grad_curent/norm(grad_curent);
for k=1:n,
v=zeros(1,n);v(k)=1;
grad_viitor(k)=(f1(x_viitor+h/2*v)-f1(x_viitor-h/2*v))/h;
end;
x_curent=x_viitor;
grad_curent=grad_viitor;
nr_it=nr_it+1;
end;
x=x_curent;
Funcia de mai sus face uz de apelul funciei Matlab norm, care calculeaz norma
vectorial sau matricial; ea realizeaz minimizarea unei funcii care trebuie s se afle n
fiierul f1.m; n particular ea poate fi o funcie scalar:
function y=f1(x)
y=5*x^2+2*x+13;
Valoarea n care se atinge minimul acestei funcii este 0.2, care se obine dup un
numr de iteraii mai mic sau mai mare, depinznd de condiia iniial i de pasul de
deplasare ales. ntr-adevr, apelul:
[x,nr_it]=opt_grad(1,1e-3)
produce rezultatele:
x =
-0.2000
nr_it =
1201
iar apelul:
[x,nr_it]=opt_grad(-1,1e-3)
Numrul mare de iteraii se datoreaz folosirii unui pas foarte mic (p=0.001); folosirea
unui astfel de pas se justific n cazul extremelor abrupte (creste ascuite sau vi
abrupte), unde componentele gradientului au variaii mari.
Algoritmul Fletcher-Reeves (metoda gradienilor conjugai) este o procedur puternic
de determinare a minimului local al unei funcii generale, f(x). De aceast dat, la fiecare
iteraie i se definete o nou direcie de cutare, p(i), ca o combinaie liniar ntre vectorul
gradient la iteraia curent, f(x(i)), i direciile de la iteraiile anterioare,
Etapele algoritmului sunt listate mai jos.
4
{p }
(i )
.
j j = 0,i 1
( ( ))
p (0) = f x (0)
) (
f x(i +1) = f x (i ) + p (i )
(8)
f x(i +1)
( )
f x ( i )
p (i )
) ( )
5. Dac f x(i +1) f x (i ) , atunci punctul de minim a fost gsit: x* x(i), STOP;
Execuia programului din linie de comand necesit iniializarea variabilei x0, punctul de
start al cutrii. De exemplu, pentru:
x0=1;fletreev
rezultatul:
nr_it =
2
minim =
-0.2000
arat o convergen mai rapid dect cea a metodei de gradient anterioare, implementat prin
funcia utilizator opt_grad.
Observaie:
1.4
Din clasa metodelor directe de cutare a optimului, cea mai simpl, dar i cea mai
costisitoare ca timp, este cea a explorrii exhaustive. Metodele de eliminare se folosesc cnd
funcia obiectiv are un singur optim (funcie unimodal); ele se bazeaz pe eliminarea unei
regiuni a domeniului de variaie a variabilelor independente care nu conine optimul.
Cutarea aleatoare (metoda Monte Carlo) const n evaluarea funciei obiectiv ntr-un
set de puncte generate pseudoaleator la fiecare iteraie a algoritmului. Domeniul de explorare
din jurul optimului aflat la fiecare iteraie se restrnge, pn cnd el devine mai mic dect cel
impus; astfel, optimul de la ultima iteraie se declar drept optim global.
Spre deosebire de metodele de gradient care efectueaz modificri simultane ce produc
deplasri n spaiul n-dimensional metodele de cutare unidimensional (Gauss) se
fondeaz pe modificarea succesiv a componentelor vectorului x. Aceste metode se mai
numesc i metode de relaxare sau de optimizare ciclic de-a lungul axelor de coordonate
(engl. cyclic coordinate search). Cutarea multidimensional este astfel transformat ntr-o
6
( i +1)
xk
Dac
) ( )
pp
i i+1
i se reia etapa 4;
altfel
( ) (
xkopt = xk(i 1)
k k+1
i se reia etapa 3 (se relaxeaz urmtoarea coordonat, k+1).
5. Se modific pasul p, nmulindu-l cu raia r<1: p pr.
Dac p , atunci s-a obinut extremul funciei, STOP; altfel se reia de la etapa 2.
Funcia Matlab de mai jos implementeaz algoritmul anterior pentru o funcie scop de o
variabil vectorial de o dimensiune oarecare (numele fiierului ce conine funcia scop este
transmis ca parametru de intrare, iar valorile funciei se evalueaz cu feval).
function [x_opt,nr_it]=opt_rlx(fct_scop,x0,pas_init,r,tol)
%optimizare parametric prin METODA RELAXRII
%fct_scop - irul de caractere ce desemneaz funcia de optimizat
7
%x0
%pas_init
%r
%
%tol
%iniializri
i=1;x(i,:)=x0;p=pas_init;
n=length(x0);
while (p>tol),
p0=p*r;p=p0;
k=1;d=zeros(1,n);
stop_global=0;inapoi=0;
while (~stop_global),
d(k)=1;j=0;
stop=0;
while (~stop)
if inapoi,
p=p/2;
inapoi=0;
end;
x(i+1,:)=x(i,:)+p*d;
j=j+1;
if feval(fct_scop,x(i+1,:))>feval(fct_scop,x(i,:)),
if j==1,
p=-2*p;
i=i+1;
x(i+1,:)=x(i,:)+p*d;
inapoi=1;
else stop=1;
x(i+1,:)=[];
i=i-1;
d(k)=0;
k=k+1;
p=p0;
end;
end;
i=i+1;
end;
if k<=n,
stop_global=0;
else stop_global=1;
end;
end;
8
end;
[nr_it n]=size(x);
x_opt=x(nr_it,:);
care descrie o suprafa (figura 2.9), i care are trei minime locale, calculabile analitic, situate
aproximativ n punctele de coordonate (0;1), (0.3117;1.419) i (4.8117;17.794).
Cele dou apeluri de mai jos arat c, din acelai punct de start, (1;3), dar cu alt pas
iniial (p=1, respectiv p=0.5), metoda relaxrii poate furniza rezultate semnificativ diferite.
[x_opt,nr_it]=opt_rlx('f',[-1 3],1,0.5,1e-6)
x_opt =
0.0000
1.0000
nr_it =
84
[x_opt,nr_it]=opt_rlx('f',[-1 3],0.5,0.5,1e-6)
x_opt =
0.3118
1.4191
nr_it =
407
f(x1,x2)
x2
Fig. 1
x1