2 OPTIMIZACIONI PROBLEMI EZ OGRANIČENJA · promenljivima jednaki su nula Rešavanjem prethodnih jednačina dobijaju se ekstremne tačke od kojih neke mogu biti optimalne. Rezavanje
Post on 23-Oct-2019
1 Views
Preview:
Transcript
2 OPTIMIZACIONI PROBLEMI BEZ OGRANIČENJA Matematičk i zapis neograničenog optimizacionog problema glasi
min ( )x
f x (15)
gde vektor 1 2
T
nx x x x predstavlja optimizacione promenljive, a ( )f
predstavlja funkciju cilja (kriterijumsku funkciju).
Cilj je da se odredi vektor x tako da je vrednost funkcije cilja minimalna. Ovaj
optimizacioni problem predstavlja minimizacioni problem.
Maksimizacioni problem (funkcija ( )f treba da dosegne maksimalnu vrednost)
rešava se preko minimizacionog problema koristeći funkciju ( )f .
35
2.1 ANALITIČKA REŠENJA I METODE ZA GRAFIČKO REŠAVANJE
MINIMIZACIONOG PROBLEMA Iz matematike je poznato da dovoljni uslovi za neograničeni optimizacioni
problem glase: u optimalnoj tački x prvi izvodi funkcije cilja po optimizacionim
promenljivima jednaki su nula
Rešavanjem prethodnih jednačina dobijaju se ekstremne tačke od kojih neke
mogu biti optimalne.
Rezavanje ovih jednačina može biti teško u slučaju optimizacionih problema sa
većim brojem promenljivih.
Grafičkim metodama mogu se rešiti optimizacioni problemi sa jednom i dve
promenljive, dok sa tri i više promenljivih ne mogu.
36
Primer 7. Koristeći grafičke i analitičke metode ispitati optimalnost funkcije iz
Primera 1.
Rešenje.
1. Analitičko rešenje
syms t
y=exp(-3*t)*sin(4*t+2)+4*exp(-0.5*t)*cos(2*t)-0.5;
y1=diff(y,t); % odredjuje prvi izvod
figure, ezplot(y1,[0,4]), grid % crta prvi izvod
t1=vpasolve(y1,t,1.5); % odredjuje prvu nulu prvog izvoda
t2=vpasolve(y1,t,3); % odredjuje drugu nulu prvog izvoda
y2=diff(y1); % odredjuje drugi izvod
y2_1=subs(y2,t,t1); % odredjuje vrednost 2. izvoda u prvoj
% ekstemnoj tacki
y2_2=subs(y2,t,t2); % odredjuje vrednost 2. izvoda u drugoj
% ekstemnoj tacki
37
if y2_1 < 0
fprintf('Maksimum: (%6.2f,%6.2f)\n',t1, subs(y,t,t1))
else
fprintf('Minimum: (%6.2f,%6.2f)\n',t1, subs(y,t,t1))
end
if y2_2 < 0
fprintf('Maksimum: (%6.2f,%6.2f)\n',t2, subs(y,t,t2))
else
fprintf('Minimum: (%6.2f,%6.2f)\n',t2, subs(y,t,t2))
end
figure, ezplot(y,[0,4]), grid % crta funkciju
hold on
plot(t1,subs(y,t,t1),'o',t2,subs(y,t,t2),'o') % oznacava tacke
% minimuma i maksimuma
hold off
38
39
2.2 NUMERIŠKO REŠAVANJE OPTIMIZACIONIH PROBLEMA BEZ OGRANIČENJA
U Matlabu i Optimization Toolbox podržane su redom sledeće funkcije za
neograničenu optimizaciju: fminsearch, fminunc.
40
Primer 8a. Odrediti minimum funkcije
Rešenje.
1. Korišćenje fminsearch()
syms x
% Anonimna funkcija
f=@(x)(x(1)^2-2*x(1))*exp(-x(1)^2-x(2)^2-x(1)*x(2));
% Pocetni uslov
x0=[2; 1];
% Rešavanje optimizacije
xmin=fminsearch(f,x0);
% Prikaz rezultata
xmin
fprintf('Minimalna vrednost: %10.6f \n',f(xmin))
41
2. Korišćenje fminunc()
syms x
% Anonimna funkcija
f=@(x)(x(1)^2-2*x(1))*exp(-x(1)^2-x(2)^2-x(1)*x(2));
% Pocetni uslov
x0=[2; 1];
% Rešavanje optimizacije
OPT=optimset; % uzima podrazumevane vrednosti za options
OPT.Display='iter'; % Prikazuje vrednosti tokom iteracija
xmin = fminunc(f,x0,OPT);
% Prikaz rezultata
xmin
fprintf('Minimalna vrednost: %10.6f \n',f(xmin))
42
MINIIZACIJA FUNKCIJE ZADATE POMOĆU M-FAJLA
x0=[2; 1];
xmin = fminsearch(@fun_cilja1,x0);
xmin
fprintf('Minimalna vrednost: %10.6f \n',fun_cilja1(xmin))
function f = fun_cilja1(x)
f=(x(1)^2-2*x(1))*exp(-x(1)^2-x(2)^2-x(1)*x(2));
end
43
2.3 GLOBALNI I LOKALNI MINIMUMI
Globalni minimum funkcije y = f (x) na intervalu [ , ]a b je najveća vrednost
koju funkcija y = f (x) postiže na tom intervalu.
Analogno se definiše i globalni maksimum.
44
Primer 9. Posmatrajmo funkciju
Nacrtati ovu funkciju i izračunati tačke minimuma iz različitih početnih uslova.
Rešenje.
f=@(t)exp(-2*t).*cos(10*t)+exp(-3*(t+2)).*sin(2*t);
fplot(f,[0 4])
t0=0.2; [t1,f1]=fminsearch(f,t0)
t0=0.8; [t2,f2]=fminsearch(f,t0)
t0=1.5; [t3,f3]=fminsearch(f,t0)
t0=2.2; [t4,f4]=fminsearch(f,t0)
hold on
plot(t1,f1,'o',t2,f2,'o',t3,f3,'o',t4,f4,'o')
hold off
Zaključ: Za različite početne tačke, dobijaju se različite optimalne tačke.
Dobijene optimalne tačke nazivaju se lokalni minimumi. Globalni i lokalni
minimumi se mogu prikazati na krivoj.
45
U Matab-u (Global Optimization Toolbox) postoje specijalizovane funkcije za
nalaženje globalnog minimuma, kao što su: patternsearch, ga i GlobalSearch.
46
2.4 REŠAVANJE OPTIMIZACIONIH PROBLEMA KORIŠĆENJEM
GRADIJENATA FUNKCIJE Kada brzina konvergencije optimizacionog problema postane spora, mogu se koristiti informacije o gradijentu funkcije kako bi se ovaj proces ubrzao.
Primer 10. Za datu funkciju naći minimum.
Rešenje.
% Grafik funkcije
[x,y]=meshgrid(0.5:0.01:1.5);
z=100*(y.^2-x).^2+(1-x).^2;
contour3(x,y,z,100),
zlim([0,310])
f=@(x)100*(x(2)-x(1)^2)^2+(1-x(1))^2;
ff=optimset;
ff.TolX=1e-10;
ff.TolFun=1e-20;
47
%Poziv funkcije bez koriscenja gradijenta
x=fminunc(f,[0;0],ff)
% Odredjivanje gradijenta
syms x1 x2;
f=100*(x2-x1^2)^2+(1-x1)^2;
J=jacobian(f,[x1,x2])
% Poziv funkcije sa gradijentom
ff.GradObj='on';
x=fminunc(@fun_sa_Jacobian,[0;0],ff)
% Funkcija + gradijent
function [y,Gy]=fun_sa_Jacobian(x)
y=100*(x(2)-x(1)^2)^2+(1-x(1))^2;
Gy=[-400*(x(2)-x(1)^2)*x(1)-2+2*x(1); 200*x(2)-
200*x(1)^2];
end
48
Grafik funkcije z=100*(y.^2-x).^2+(1-x).^2 dobijen pomoću contour3.
49
3 OPTIMIZACIONI PROBLEMI SA OGRANIČENJIMA Ukoliko nametnemo ograničenja po promenljivim, dobija se sledeći
optimizacioni problem sa ograničenjima
gde ispod min stoje ograničenja.
Opšti opis optimizacionog problema glasi
gde je 1 2
T
nx x x x vektor promenljivih, a ( ) 0G x predstavlja ograničenje.
Ograničenja mogu biti tipa nejednakosti ili jednakosti, koja mogu biti linearna
ili nelinearna. Takođe postoje ograničenja po slobodnim promenljivim.
Oblast rešenja x koja zadovoljava ograničenja ( ) 0G x naziva se “dopustivi
region” (feasible region).
50
3.1 REŠAVANJE PROBLEMA LINEARNOG PROGRAMIRANJA Problemi linearnog programiranja predstavljaju specijalni slučaj ograničenih
problema programiranja čija funkcija cilja, kao i ograničenja su linearne
funkcije po x .
Opšti matematički opis je:
Ograničenja su podeljena na:
linearna ograničenja tipa jednakosti eq eq
A x B ,
linearna ograničenja tipa nejednakosti Ax B
ograničenja po promenljivim m M
x x x
Postoji veliki broj algoritama za ovu vrstu optimizacije. Simpleks algoritam je
jedan od najefikasnijih i implementiran je u Matlab funkciji linprog().
51
, , , ,eq eq
f A b A b imaju isto značenje kao u opisu optimizacionog problema, dok
su: ,m M
x lb x ub
52
Primer 12. Rešiti sledeći problem linearnog programiranja
Rešenje.
f=[-2 -1 -4 -3 -1];
A=[0 2 1 4 2; 3 4 5 -1 -1];
B=[54; 62];
Ae=[]; Be=[];
xm=[0, 0, 3.32, 0.678, 2.57];
xM=[inf, inf, inf, inf, inf];
ff=optimset;
ff.TolX=1e-15;
ff.TolFun=1e-10;
ff.TolCon=1e-9;
[x,f_opt,flag,izlaz]=linprog(f,A,B,Ae,Be,xm,xM,ff)
Primer 13. Rešiti sledeći problem linearnog programiranja
53
Rešenje.
% Uzimamo negativnu funkciju zbog max
f=-[3/4,-150,1/50,-6];
A=[1/4,-60,-1/50,9; 1/2,-90,-1/50,3]; B=[0;0];
Aeq=[]; Beq=[];
xm=[-5;-5;-5;-5];
xM=[Inf;Inf;1;Inf];
ff=optimset;
ff.TolX=1e-15; ff.TolFun=1e-10; TolCon=1e-9;
[x,f_opt,flag,izlaz]=linprog(f,A,B,Aeq,Beq,xm,xM,[0;0;0;0],ff)
54
3.2 REŠAVANJE PROBLEMA KVADRATNOG PROGRAMIRANJA Problemi kvadratnog programiranja su druga kategorija jednostavnih
optimizacionih problema sa ograničenjima.
U kvadratnom programiranju, funkcija cilja je kvadratna funkcija promenljive
x . Ograničenja su još uvek linearna.
Opšta forma kvadratnog programiranja je
Ovde se sa Tx Hx opisuju članovi tipa 2
ix i
i jx x .
U Matlabu postoji funkcija quadprog() koja rašava problem kvadratnog
programiranja.
55
x0 – početna vrednost za rešenje
56
Primer 14. Rešiti sledeći problem kvadratnog programiranja
Rešenje.
Najpre zapisujemo funkciju cilja u pogodnom obliku
% Uzimamo dvostruke koeficijente zbog (1/2)x’*H*x
H=diag([2,2,2,2]);
f=[-2,-4,-6,-8];
A=[1,1,1,1; 3,3,2,1];
B=[5;10];
Aeq=[]; Beq=[];
lb=[0 0 0 0];
[x,f_opt]=quadprog(H,f,A,B,Aeq,Beq,lb,[],[])
57
3.3 REŠAVANJE OPŠTIH NELINEARNIH OPTIMIZACIONIH PROBLEMA Opšti oblik nelinearnog optimizacionog problema je:
gde je 1 2
T
nx x x x vektor promenljivih, a
( ) 0G x predstavlja ograničenja koja mogu biti tipa nejednakosti (linearna,
nelinearna), tipa jednakosti (linearna, nelinearna) i ograničenja po slobodnim
promenljivim.
Prema tome, opšti oblik nelinearnog optimizacionog problema izgleda:
58
U Matlabu postoji funkcija fmincon() za rešavanje nelinearne optimizacije.
fun - m-funkcija ili anonimna funkcija kojom se opisuje funkcija cilja.
x0 - početna vrednost za rešenje.
A, b – linearna ograničenja tipa nejednakosti
Aeq, beq - linearna ograničenja tipa jednakosti
lb, ub – ograničenja po promenljivim
nonlcon - m-funkcija za opisivanje nelinearnih ograničenja:
prvi izlaz ove funkcije predstavlja nelinearna ograničenja tipa nejednakosti,
drugi izlaz ove funkcije predstavlja nelinearna ograničenja tipa jednakosti.
59
Primer 15. Rešiti sledeći problem nelinearnog programiranja
Rešenje 1.
f=@(x)1000-x(1)*x(1)-2*x(2)*x(2)-x(3)*x(3)-x(1)*x(2)-x(1)*x(3);
x0=[1;1;1];
xm=[0;0;0]; xM=[];
A=[]; B=[];
Aeq=[]; Beq=[];
[x,f_opt,c,d]=fmincon(f,x0,A,B,Aeq,Beq,xm,xM,@opt_con1)
function [c,ceq]=opt_con1(x)
% Nelinearna ogranicenja
% Ogranicenja tipa jednakosti
ceq=[x(1)*x(1)+x(2)*x(2)+x(3)*x(3)-25; …
8*x(1)+14*x(2)+7*x(3)-56];
c=[]; % Ogranicenja tipa nejednakosti
end
60
Rešenje 2. Pošto je drugo ograničenje tipa jednakosti linearno, ono se može
izbaciti iz nelinearnih ograničenja
ceq=[x(1)*x(1)+x(2)*x(2)+x(3)*x(3)-25; 8*x(1)+14*x(2)+7*x(3)-56];
i pridružiti linearnim ograničenjima.
f=@(x)1000-x(1)*x(1)-2*x(2)*x(2)-x(3)*x(3)-x(1)*x(2)-x(1)*x(3);
x0=[1;1;1];
xm=[0;0;0]; xM=[];
A=[]; B=[];
Aeq= [8,14,7]; Beq= 56;
[x,f_opt,c,d]=fmincon(f,x0,A,B,Aeq,Beq,xm,xM,@opt_con2)
function [c,ceq]=opt_con2(x) % Nelinearna ogranicenja
% Ogranicenja tipa jednakosti
ceq=x(1)*x(1)+x(2)*x(2)+x(3)*x(3)-25;
c=[]; % Ogranicenja tipa nejednakosti
end
61
Primer 16. Rešimo nelinearni problem iz Primera 15 koristeći gradijent.
Rešenje. Odredimo Jakobijan za funkciju cilja
syms x1 x2 x3;
f=1000-x1*x1-2*x2*x2-x3*x3-x1*x2-x1*x3;
J=jacobian(f,[x1,x2,x3])
Rezultat je:
J =
[ - 2*x1 - x2 - x3, - x1 - 4*x2, - x1 - 2*x3]
Program:
x0=[1;1;1]; xm=[0;0;0]; xM=[]; A=[]; B=[]; Aeq=[]; Beq=[];
x,f_opt,c,d]=fmincon(@opt_fun2,x0,A,B,Aeq,Beq,xm,xM,@opt_con1)
function [c,ceq]=opt_con1(x) % Nelinearna ogranicenja
% Ogranicenja tipa jednakosti
ceq=[x(1)*x(1)+x(2)*x(2)+x(3)*x(3)-25; 8*x(1)+14*x(2)+7*x(3)-56];
c=[]; % Ogranicenja tipa nejednakosti
end
function [y,Gy]=opt_fun2(x) % funkcija i njen Jakobijan
y=1000-x(1)*x(1)-2*x(2)*x(2)-x(3)*x(3)-x(1)*x(2)-x(1)*x(3);
Gy=[-2*x(1)-x(2)-x(3); -4*x(2)-x(1); -2*x(3)-x(1)];
end
62
3.4 OPTIMIZACIJA UZ POMOĆ GRAFIČKOG INTERFEJSA Da bi pokrenuli grafičku aplikaciju za optimizaciju koristimo funkciju
optimtool
Kao rezultat izvršavanja ove funkcije kreira se grafički prozor
63
64
Primer. Odrediti minimuma sledeće funkcije
pod uslovima
koristeći grafički interfejs. Početno pogađanje je
13x i
21x .
funkcija cilja
nelinearne nejednakosti
linearne nejednakosti
ograničenje
65
Rešenje.
1. Korak: Pišemo m-funkciju cilja objecfun.m:
function f = objecfun(x)
f = x(1)^2 + x(2)^2;
end
2. Korak: Pišemo m-funkciju nelinearnih ograničenja nonlconstr.m (sadrži ograničenja tipa nejednakosti i jednakosti):
function [c,ceq] = nonlconstr(x)
% Nelinearna ogranicenja
% Ograničenja tipa nejednakosti (<=0)
c = [-x(1)^2 - x(2)^2 + 1;
-9*x(1)^2 - x(2)^2 + 9;
-x(1)^2 + x(2);
-x(2)^2 + x(1)];
% Ogranicenja tipa jednakosti ne postoje
ceq = [];
end
66
3. Korak: Podešavamo i izvršavamo optimizacioni problem pomoću grafičkog interfejsa
67
68
69
70
Izborom opcije iz menija File/Generate Code može se snimiti Matlab programski kod u obliku m-funkcije koju smo nazvali Fun_minimizacija.m.
Ovaj kod vrši prethodu optimizaciju, pri čemu zahteva
1. početno pogađanje x0=[3; 1],
2. definisanje ciljne funkcije objecfun.m, 3. funkcije nelinearni nejednakosti nonlconstr.m 4. parametre linearnih nejednakosti Aineq=[-1 -1]; bineq=[-1]
5. parametre ograničenja lb=[0.5 -inf]
x0=[3; 1];
Aineq=[-1 -1];
bineq=[-1];
lb=[0.5 -inf];
[x,fval,exitflag,output,lambda,grad,hessian] =
Kod(x0,Aineq,bineq,lb)
71
top related