Documente Academic
Documente Profesional
Documente Cultură
OPTIMIZAREA FUNCIILOR
Pure mathematics is, in its way, the poetry of logical ideas.
(Albert Einstein, 1879 - 1955)
local f(x)
global minimum f(x) x
minimum f(x) 0
0 x*
global x
maximum -f(x) local
maximum -f(x) solutii f(x)=0
minimum f(x)
- f(x) f'(x)=0
f''(x)>0
a) b)
Fig. 10.1. Optimizarea funciilor
a) optimizare global a funciei f(x)
b) maximul i minimul local al funciei f(x)
130
Capitolul 10 - OPTIMIZAREA FUNCIILOR
0 xminim
x se definete ca fiind raportul dintre partea mai
a x
x2 1 b lung i partea mai scurt a unei lungimi
d atunci cnd acest raport este egal i cu
raportul dintre ntreaga lungime i partea cea
y mai lung. Se poate scrie:
d iter2
l1 l1 l2
(10.2)
l2 l1
f(x)
Multiplicnd relaia (10.2) cu l1 / l2 se ajunge
la ecuaia:
2 1 0 (10.3)
care are ca soluie valoarea:
xminim 1 5
0 x 1,6180339887498948482 (10.4)
aiter2 x2 x1 b 2
d iter2 Interesant de observat faptul c inversul lui
adic 1/are exact aceleai zecimale ca
Fig. 10.4. Prima iteraie a metodei numrul nsui.
seciunii de aur: se observ c 1/ 0,61803398874989484820458683436.
f (x2 ) f (x1 ) i deci Algoritmul cutrii minimului n
xminim (x2 , b) ; pentru iteraia a
metoda seciunii de aur presupune
identificarea unui interval de incertitudine
doua se face aiter2 x2
[ a ,b ] n care caut numrul x care
minimizeaz funcia f(x). Se calculeaz apoi abscisele i ordonatele a dou puncte
intermediare x1 i x2 care se gsesc ntr-un raport de aur faa de lungimea
intervalului de cutare [ a ,b ] , i anume:
x1 a d (10.5)
x2 b d (10.6)
unde:
132
Capitolul 10 - OPTIMIZAREA FUNCIILOR
d ( 1 )( b a ) (10.7)
Funcia este evaluat n cele dou puncte x1 i x2 fiind posibile situaiile:
- f ( x1 ) f ( x2 ) , ceea ce nseamn c domeniul de cutare [ a , x2 ] poate fi
eliminat deoarece minimul functiei nu se afl aici; pentru iteraia urmtoare
intervalul de cutare devine [ x2 , b ] ceea ce nseamn aiter x2
sau:
- f ( x2 ) f ( x1 ) , ceea ce nseamn c domeniul de cutare [ x1 ,b ] poate fi
eliminat deoarece minimul functiei nu se afl aici; pentru iteraia urmtoare
intervalul de cutare devine [ a,x1 ] ceea ce nseamn biter x1 .
Etapele algoritmului cutrii minimului unei funcii prin metoda seciunii
de aur sunt descrise n etapele urmtoare:
Pasul 1:
Iniializare: Se consider acurateea 0 , se consider 1,6180339, se determin
intervalul iniial de incertitudine [ a1 ,b1 ] i se determin punctele iniiale
x11 a1 ( 1 )( b1 a1 ) i x21 b1 ( 1 )( b1 a1 )
Se evalueaz f ( x11 ) i f ( x21 ) .
Pasul 2:
Se compar valorile funciei de minimizat: Dac f ( x1i ) f ( x2i ) atunci se continu
cu pasul 3; dac f ( x1i ) f ( x2i ) atunci se trece la pasul 4.
Pasul 3:
Cazul 1. Dac bi x1i , atunci stop cu ieirea x2i ; altfel se calculeaz ai 1 x1i ,
bi 1 bi , x1i 1 x2i , f ( x1i 1 ) f ( x2i ) , x2i 1 bi ( 1 )( bi 1 ai 1 ) .
Se evalueaz f ( x2i 1 ) i se continu cu pasul 5.
Pasul 4:
Cazul 2. Dac x2i ai , atunci stop cu ieirea x1i ; altfel se calculeaz ai 1 x1i ,
bi 1 x2i , x2i 1 x1i , f ( x2i 1 ) f ( x1i ) , x1i 1 ai ( 1 )( bi 1 ai 1 ) .
Se evalueaz f ( x1i 1 ) i se continu cu pasul 5.
Pasul 5:
Se pune contorul i i 1 i se continu cu pasul 2.
133
Calcul numeric asistat Teorie i aplicaii n MATLAB
134
Capitolul 10 - OPTIMIZAREA FUNCIILOR
p( a ) c4 f ( a ) (10.14)
3 2
p( b ) c1( b a ) c2 ( b a ) c3 ( b a ) c4 f ( b ) (10.15)
p' ( a ) c3 f ' ( a ) (10.16)
p' ( b ) 3c1( b a )2 2c2 ( b a ) c3 ( b a ) f ' ( b ) (10.17)
Desigur, condiiile suficiente pentru minim sunt:
p' ( ) 3c1( a )2 2c2 ( a ) c3 0 (10.18)
i
p' ' ( ) 6 c1( a ) 2c2 0 (10.19).
n urma unor manipulri, se obine urmtaorea relaie pentru minimul
cutat:
w f'( a ) z
a (b a ) (10.20)
f ' ( b ) f ' ( a ) 2w
unde:
w z2 f ' ( a ) f ' ( b ) (10.21)
z s f'( a ) f'(b ) (10.22)
i:
f (b ) f ( a )
s 3 (10.23).
ba
(valoarea implicit fiind 10-4 ) sau la impunerea unui numr maxim de pai pentru
iteraiile de calcul.
Comanda fminbnd mai poate fi apelat cu sintaxa:
[x fval]=fminbnd(funcie,a,b,opiuni) astfel nct sunt calculate simultan
valoarea abscisei i valoarea ordonatei n punctul de minim al funciei din intervalul
[a b].
160
EXEMPLU 10.1 140
S se procedeze la cutarea 120
minimului funciei de mai jos n 100
intervalul a = 1 i b = 10, cu
80
algoritmul metodei seciunii de aur,
60
prin metoda interpolrii ptratice i
prin aplicarea funciei 40
corespunztoare n Matlab: 20
3 0
x
f( x) 5 x cos x (10.24)
10 -20
1 2 3 4 5 6 7 8 9 10
137
Calcul numeric asistat Teorie i aplicaii n MATLAB
functie=inline('x.^3/10-5*x.*cos(x)')
functie =
Inline function:
functie(x) = x.^3/10-5*x.*cos(x)
[xmin valfct]=fminbnd(functie,1,10)
Optimization terminated successfully:
the current x satisfies the termination criteria using OPTIONS.TolX
of 1.000000e-004
xmin = 6.0781
valfct = -7.2991
sau
>> [xmin valfct]=fminbnd(@(x) x^3/10-5*x*cos(x),1,10)
xmin = 6.078130801258789
valfct = -7.299118076660442
138
Capitolul 10 - OPTIMIZAREA FUNCIILOR
functie = -7.124652223036932
functie = -7.294852652145337
functie = -7.298712354070990
functie = -7.299117777390752
functie = -7.299118076660442
functie = -7.299118069439469
functie = -7.299118048842171
xmin = 6.078130801258789
valfct = -7.299118076660442
sau:
>> [xmin valfct]=fminbnd('functie',1,10)
cu acelai rezultat prezentat mai sus.
EXEMPLU 10.2
S se gseasc minimul funciei de mai jos, cu ajutorul funciei dedicate din Matlab
i rezolvare grafic pentru urmtoarele intervale de variaie a parametrilor
x [ 3, 3 ] i y [ 2, 2 ] .
f(x,y) 53 ( x y ) x y ( x2 y 2 )2 2 (10.25)
Soluie:
Trasarea graficelor funciei se face cu ajutorul comenzilor de mai jos:
x=linspace(-2,2,50)
y=linspace(-3,3,50)
% se genereaz reeaua de puncte
[X,Y]=meshgrid(x,y)
% se calculeaz valorile funciei n nodurile reelei
Z=5*X.^2-5*X.*Y+2.5*Y.^2-X-1.5*Y+10
subplot(1,2,1)
%se traseaz izolinii pentru suprafaa definita
cs=contour(X,Y,Z);colormap([0 0 0]);
clabel(cs);grid on
xlabel('x');ylabel('y')
subplot(1,2,2)
%se traseaz suprafata 3D
cs=surfc(X,Y,Z);colormap
zmin=floor(min(Z))
zmax=ceil(max(Z))
xlabel('x');ylabel('y')
139
Calcul numeric asistat Teorie i aplicaii n MATLAB
Din figura 10.7 se poate observa c funcia are un minim de ~10 n jurul valorilor
x 0 i y 0 ,5 .
Utilizarea comenzii fminsearch presupune:
fct102=inline('5*x(1).^2-5*x(1).*x(2)+2.5*x(2).^2-x(1)-1.5*x(2)+10')
fct102 =
Inline function:
fct102(x) = 5*x(1).^2-5*x(1).*x(2)+2.5*x(2).^2-x(1)-1.5*x(2)+10
[xmin,valfct]=fminsearch(fct102,[0 -0.5])
Optimization terminated successfully:
the current x satisfies the termination criteria using OPTIONS.TolX
of 1.000000e-004
and F(X) satisfies the convergence criteria using OPTIONS.TolFun of
1.000000e-004
xmin = 0.5000 0.8000
valfct = 9.1500
80
80
70
70
60
60
50
50
40
40
30
30
10 10
30 30
20 20 40 40
50 50
60 60
70 70
80
80
a) b)
Fig. 10.7. Reprezentrile grafice corespunztoare funciei de la exemplul 10.2
EXEMPLU 10.3
Fie funcia de trei variabile:
f(x,y, z) e x 5( y 2 z 9 x )2 (10.26).
S se gseasc valorile parametrilor pentru care valoare funciei este minim.
Soluie:
fct105=inline('exp(x(1))+5*(x(2)-2*x(3)+9*x(1))^2')
fct105 =
Inline function:
fct105(x) = exp(x(1))+5*(x(2)-2*x(3)+9*x(1))^2
[xmin,valfct]=fminsearch(fct105,[0.5 0.5 0.5])
Optimization terminated successfully:
the current x satisfies the termination criteria using OPTIONS.TolX
of 1.000000e-004
and F(X) satisfies the convergence criteria using OPTIONS.TolFun of
1.000000e-004
xmin = -59.0229 155.6969 -187.7546
valfct = 2.3264e-026
140