Sunteți pe pagina 1din 3

TEM

TEHNICI DE OPTIMIZARE

PRODAN ANA
Grupa 1201A

1.S se fac un program care minimizeaz funcia


f(x1,x2)=x12+6x22+(3x2-1)2+x1x2+1 folosind metoda gradienilor conjugai.

Metoda gradienilor conjugai este derivat din metoda direciilor conjugate,


avnd mai multe variante, dintre care am ales varianta Fletcher si Reeves.
Algoritmul metodei este urmtorul:
-> se alege punctul iniial x0, se calculeaz r0= f (x0) i se stabilete prima direcie
p0= - r0;
-> se calculeaz pasul urmtor folosind relaia de recuren x k+1=xk+ kpk, in care:
lungimea pasului de deplasare

se stabilete folosind formula suplimentara de

calcul pentru pasul optim :


=-

direcia de deplasare pk se calculeaz dupa formula pk =-rk+k-1pk-1, unde


1

-> se repet a doua etap pn se atinge precizia aleas.


Program:
h = 10e-6;
eps = 10e-5;
x1 = 1;
x2 = 2;
x= [x1;x2];
r11 = (f((x1+h),x2)-f(x1,x2))/h;
r21 = (f(x1,x2+h)-f(x1,x2))/h;
H11 = (f(x1+2*h,x2)-2*f(x1+h,x2)+f(x1,x2))/(h^2);
H12 = (f(x1+h,x2+h)-f(x1,x2+h)-f(x1+h,x2)+f(x1,x2))/(h^2);
H22 = (f(x1,x2+2*h)-2*f(x1,x2+h)+f(x1,x2))/(h^2);
H=[H11 H12; H12 H22];
rk=[r11;r21];

k-

pk=-rk;
teta = -(rk'*pk)/(pk'*H*pk);
x = x + teta*pk;
while norm(rk)>eps
x1=x;
r=rk;
x1=x(1);
x2=x(2);
r11 = (f((x1+h),x2)-f(x1,x2))/h;
r12 = (f(x1,x2+h)-f(x1,x2))/h;
H11 = (f(x1+2*h,x2)-2*f(x1+h,x2)+f(x1,x2))/(h^2);
H12 = (f(x1+h,x2+h)-f(x1,x2+h)-f(x1+h,x2)+f(x1,x2))/(h^2);
H22 = (f(x1,x2+2*h)-2*f(x1,x2+h)+f(x1,x2))/(h^2);
H=[H11 H12; H12 H22];
rk=[r11;r12];
beta=(rk'*rk)/(r'*r);
pk=-rk+beta*pk;
teta = -(rk'*pk)/(pk'*H*pk);
x = x + teta*pk;
end;
fprintf('Metoda gradientilor conjugati cu pasi optima calculati cu
formula:');
x
fprintf('Functia fminunc:');
x=fminunc(@(x) x(1)^2+6*x(2)^2+(3*x(2)-1)^2+x(1)*x(2)+1,[1,2]);
x'

2.S se caute analitic minimul funciei


f(x1,x2)=x12+2x1x2+2x22-2x1-3x2
cu restriciile:

x1+x2 2
3x1+2x2 3
x1

x2

0.