Sunteți pe pagina 1din 19

Laborator/Seminar 1

Rezolvare de probleme de optimizare folosind


functii MATLAB

1 Introducere
Datorita exploziei informationale din ultimele patru decade, algoritmii numerici
de optimizare au devenit indispensabili pentru abordarea diferitelor probleme
din domeniile ingineriei, fizicii, analizei numerice, teoriei sistemelor si controlu-
lui, prelucrarea semnalelor, invatare automata, etc. Precizand ca aceasta scurta
enumerare reprezinta doar o mica parte din domeniile de aplicatie ale algorit-
milor de optimizare, constatam ca teoria optimizarii este considerata un instru-
ment valoros in majoritatea domeniilor stiintifice.
In prezent avem la dispozitie algoritmi eficienti (rapizi) ce rezolva probleme
de optimizare convexe/neconvexe de dimensiuni mici si medii intr-un interval de
timp relativ scurt, insa multe dificultati si intrebari fara raspuns apar in cazul
problemelor de dimensiuni mari (e.g., cu dimensiune 107 − 109 ). Dimensiunile
problemelor intalnite in domeniile enumerate mai sus cresc cu fiecare an, astfel
incat se formuleaza relativ des probleme cu dimensiuni de zeci de milioane de
variabile. Astfel, algoritmii de optimizare raman un subiect de actualitate in
cercetarea moderna din matematica aplicata.
In continuare vom prezenta si formula principalele clase de probleme de
optimizare si in plus, functiile MATLAB cel mai des folosite pentru rezolvarea
numerica a acestor tipuri de probleme.

2 Mediul Matlab
Matlab (Matrix laboratory) este un mediu de calcul numeric si un limbaj de
programare de generatia a patra, dezvoltat de Mathworks. Mediul Matlab ofera
o interfata user-friendly pentru operatii cu matrici, implementare de algoritmi,
grafice de functii si date etc.
Inca de la sfarsitul anilor 0 70, Matlab a castigat o audienta larga in cadrul
academic si in comunitatea matematicii aplicate. Incepand cu dezvoltarea de
pachete de programe destinate problemelor numerice de algebra liniara, au fost
incluse si dezvoltate ulterior, functii (toolbox-uri) specializate in rezolvarea de
probleme de optimizare, rezolvarea de sisteme de ecuatii, modelare, identificare
etc.

1
Figure 1: Matlab.

Pachetul Optimization Toolbox furnizeaza algoritmi utilizati la scara larga,


destinati problemelor de optimizare standard si de mari dimensiuni. De aseme-
nea, pachetul include si functii ce rezolva probleme de optimizare structurate:
programare liniara, programare patratica, programare binara, probleme CMMP
neliniare, rezolvare de sisteme de ecuatii neliniare si optimizare multicriteriala.
Dificultatea problemelor de optimizare ce apara de cele mai multe ori in prac-
tica limiteaza capacitatea algoritmilor existenti la gasirea unei solutii aproxima-
tive corespunzatoare problemei date. De exemplu, problema de optimizare ce
presupune gasirea punctului global de maxim corespunzator functiei sinc(x) =
sin x
x este o problema dificil de rezolvat. Pentru motivarea acestei afirmatii se
poate observa usor in figura 2 ca functia prezinta o infinitate de maxime locale
(denivelarile de la baza “dealului”), despre care nu cunoastem a priori ca nu
sunt valori maxime globale.
Pentru a ilustra simplitatea cu care putem figura functiile in mediul Matlab,
prezentam mai jos secventa de cod care genereaza graficul 2.

[X,Y] = meshgrid(-10:0.25:10,-10:0.25:10);
f = sinc(sqrt((X/pi).^2+(Y/pi).^2));
surf(X,Y,f);
axis([-10 10 -10 10 -0.3 1])
xlabel(’{\bfx}’)
ylabel(’{\bfy}’)
zlabel(’{\bfsinc} ({\bfR})’)

3 Minimizare neconstransa
Problemele de optimizare neconstransa presupun minimizarea (maximizarea)
unei anumite functii obiectiv (criteriu) diferentiabila de doua ori prin inter-
mediul unui set de variabile de decizie, fara ca acestea sa respecte anumite
restrictii.
Se da functia obiectiv de minimizat (in general neliniara) f : Rn → R cu
variabila de decizie x ∈ Rn pentru care formulam urmatoarea problema de

2
sin x
Figure 2: Graficul functiei sinc(x) = x .

optimizare:
min f (x).
x∈Rn

Problema de optimizare se considera rezolvata daca s-a gasit un vector x∗ care


minimizeaza valoarea functiei f (·), adica f (x∗ ) ≤ f (x) pentru orice x ∈ Rn ,
precizand ca multimea in care se efectueaza cautarea (multimea fezabila) este
data de intreg spatiul Euclidian Rn .

3.1 Functii MATLAB


Pentru cazul in care functia obiectiv nu are o structura prestabilita sau o forma
particulara, sunt disponibile urmatoarele functii MATLAB pentru aproximarea
unui punct de minim local in cazul unei probleme neconstranse:
1. [...]= fminunc(...)
returneaza un punct de minim local al functiei introduse ca argument,
cu ajutorul informatiei de ordinul intai (gradient) si a celei de ordin doi
(hessiana). Sintaxa functiei are expresia:

x=fminunc(fun,x0)
x=fminunc(fun,x0,optiuni)
[x,val]=fminunc(...)
[x,fval,exitflag,output,grad,hessian]=fminunc(...)

• variabila fun reprezinta functia obiectiv differentiabila ce trebuie


furnizata ca o variabila de tip function handle. O variabila de tip
function handle poate fi, de exemplu, un fisier objfun.m care primeste
la intrare variabila de decizie x si returneaza valoarea functiei in
punctul x. Daca metoda de rezolvare a problemei cere si gradientul

3
functiei, iar optiunea GradObj este setata ’on’, atunci argumentul
fun furnizeaza, in plus, si valoarea gradientului in punctul x. Daca
metoda de rezolvare a problemei cere hessiana, iar optiunea Hessian
este setata ’on’, atunci argumentul fun furnizeaza, in plus, si val-
oarea hessianei in punctul x.
• x0 reprezinta punctul initial de unde porneste procesul de cautare al
minimului si trebuie furnizat ca un vector din Rn .
• variabila optiuni reprezinta setul de optiuni specific fiecarei rutine
MATLAB. Comanda optiuni=optimset(’fminunc’) afiseaza setul de
optiuni implicit. Fiecare dintre acestea se poate modifica in functie
de problema de minimizare. De exemplu, pentru setarea optiunii
GradObj pe on, comanda este optiuni.GradObj=’on’.

Pentru o documentare amanuntita introduceti in consola urmatoarea co-


manda:

help fminunc

2. [...]= fminsearch(...)
returneaza un punct de minim local al functiei introduse ca argument,
insa printr-o metoda diferita de cea folosita de fminunc si anume, metoda
Nedler-Mead, ce se foloseste de informatie de ordin zero (evaluarea func-
tiei). Sintaxa este similara cu cea prezentata mai sus pentru functia
fminunc.
Exemplu 1. Consideram problema de optimizare

min2 f (x) = ex1 (4x21 + 2x22 + 4x1 x2 + 2x2 + 1) .
x∈R

Sa se rezolve problema (sa se gaseasca un punct de minim local) utilizand rutina


fminunc, cu punctul de initializare x0 = [1, −1].
Rezolvare. Se creaza fisierul objfun.m ce va contine urmatoarea secventa de cod
function f=objfun(x)
f = exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1);
Se apeleaza rutina fminunc in urmatorul mod
x0=[-1,1];
optiuni=optimset(LargeScale,off);
[x,fval,exitflag,output]=fminunc(@objfun,x0,optiuni);

Exemplu 2. Consideram problema de optimizare

min f (x) (= cos 3πx + sin 2πx) .


x∈R

(a) Sa se rezolve problema (sa se gaseasca un punct de minim local) utilizand


rutina fminunc, cu punctul de initializare x0 = 0.
(b) Implementati metoda sectiunii de aur si rezolvati problema de mai sus.

4
Rezolvare: a) Se creaza fisierul objfun.m cu urmatoarea secventa de cod:
function f=objfun(x)
f = cos(3*pi*x) + sin(2*pi*x);
Se apeleaza rutina fminunc:
x0=0;
optiuni=optimset(LargeScale,off);
[x,fval,exitflag,output]=fminunc(@objfun,x0,optiuni);

b) Deoarece functia este periodica, de perioada 2π, putem aplica metoda


sectiunii de aur, a carei implementare este expusa in cele ce urmeaza:
Se creaza fisierul objfun.m
function f=objfun(x)
f = cos(3*pi*x) + sin(2*pi*x);
Se aplica metoda sectiunii de aur, in care se alege lungimea intervalului initial
egala cu 2π datorita periodicitatii functiei obiectiv f :
function [xst,fst]= goldsection(x,eps)

a=-pi;
b=pi;
lambda=a+0.382*(b-a);
miu=a+0.618*(b-a);

while ((b-a)>=eps)
if (objfun(lambda)<=objfun(miu))
b=miu;
else
a=lambda;
end
lambda=a+0.382*(b-a);
miu=a+0.618*(b-a);
end

if (objfun(lambda)<=objfun(miu))
fst=objfun(lambda);
xst=lambda;
else
fst=objfun(miu);
xst=miu;
end
Exemplu 3 (Interpolare polinomiala). O problema des intalnita in analiza
numerica si inginerie reprezinta aproximarea optima a unei functii neliniare cu
polinom de grad dat. Mai exact, fie functia neliniara f : R → R cu structura
necunoscuta, dorim aproximarea acesteia cu un polinom g : R → R,

g(z) = an z n + · · · + a1 z + a0 .

5
Datele cunoscute in legatura cu functia neliniara f reprezinta setul de perechi
(y1 , f (y1 )), . . . , (ym , f (ym )), unde scalarii yi ∈ R sunt dati.
Notand vectorul coeficientilor polinomului cu x = [a0 . . . an ]T , vectorul b =
[f (y1 ) . . . f (ym )]T , problema se reduce la gasirea vectorului optim de coeficienti
ce satisface relatia:
    
1 y1 . . . y1n a0 f (y1 )
1 y2 . . . y2n   a1   f (y2 ) 
    
Ax =  . .. .. ..   ..  ≈  ..  = b.
 .. . . .   .   . 
n
1 ym . . . ym an f (ym )

In termeni de optimizare obtinem urmatoarea problema de optimizare:



min
n+1
f (x) = kAx − bk2 ,
x∈R

unde vectorul b are componentele bi = f (yi ) pentru orice i = 1, . . . , m, iar vec-


torul variabilelor de decizie x este dat de coeficientii polinomului de aproximare.

Aratati ca problema de optimizare de mai sus este problema patratica (QP).


Fie functia neliniara f (x) = −5e2x + cos x − 1. Aproximati cu un polinom
de gradul 3 functia neliniara dupa modelul descris mai sus pentru punctele
y1 = −1, y2 = −1/2, y3 = 0, y4 = 1/2 si y5 = 1. Rezolvati problema de
optimizare cu ajutorul functiilor fminunc si quadprog. Comentati.

4 Minimizare constransa
Fie functia (in general neliniara) f : Rn → R, o problema de optimizare cu
constrangeri se formuleaza in urmatorul mod:

min f (x)
x∈Rn
s.l. Ax ≤ b
Aeq x = beq (1)
c(x) ≤ 0
ceq (x) = 0
l ≤ x ≤ u,

unde l, u, b, beq ∈ Rn , A ∈ Rm1 ×n , Aeq ∈ Rp1 ×n , iar c(x) : Rn → Rm2 , ceq (x) :
Rn → Rp2 sunt functii multidimensionale (vectori de functii), reprezentand
constrangerile neliniare.

Exemplu 4. Consideram urmatoarea problema de optimizare

min (x1 − 3)2 + (x2 − 2)2


x∈R2

s.l. x21 − x2 − 3 ≤ 0, x2 − 1 ≤ 0, −x1 ≤ 0.

Functia obiectiv si cele trei constrangeri de inegalitate sunt: f (x1 , x2 ) = (x1 −


3)2 + (x2 − 2)2 , g1 (x1 , x2 ) = x21 − x2 − 3, g2 (x1 , x2 ) = x2 − 1, g3 (x1 , x2 ) = −x1 .
Fig 3 ilustreaza multimea fezabila. Problema se reduce la a gasi un punct in

6
multimea fezabila cu cea mai mica valoare a lui (x1 − 3)2 + (x2 − 2)2 . Observam
ca punctele [x1 x2 ]T cu (x1 −3)2 +(x2 −2)2 = c sunt cercuri de raza c cu centru in
[3 2]T . Aceste cercuri se numesc multimile nivel sau contururile functiei obiectiv
avand valoarea c. Pentru a minimiza c trebuie sa gasim cercul cu cea mai mica
raza care intersecteaza multimea fezabila. Dupa cum se observa din Fig. 3, cel
mai mic cerc corespunde lui c = 2 si intersecteaza multimea fezabila in punctul
de optim x∗ = [2 1]T .

g3
4
contururi functie obiectiv

2 (3,2)
g
2
1

g1 punct optim (2,1)


−1
zona fezabila

−2

−3

−4

−5
−5 −4 −3 −2 −1 0 1 2 3 4 5

Figure 3: Solutia grafica a problemei de optimizare.

4.1 Functii MATLAB


Pentru cazul in care functia de minimizat(maximizat) nu are o structura presta-
bilita sau o forma particulara, pentru rezolvarea problemei de optimizare (1) este
disponibila functia MATLAB fmincon ce prezinta urmatoarea sintaxa:

x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,optiuni)
[x,fval,exitflag,output,lambda,grad,hessian] = fmincon(. . . ).

• variabila fun reprezinta functia obiectiv ce trebuie furnizata ca o variabila


de tip function handle. Daca metoda de rezolvare a problemei cere si gra-
dientul functiei, iar optiunea GradObj este setata ’on’, atunci argumentul
fun furnizeaza, in plus, si valoarea gradientului in punctul x. Daca metoda
de rezolvare a problemei cere hessiana, iar optiunea Hessian este setata
’on’, atunci argumentul fun furnizeaza, in plus, si valoarea hessianei in
punctul x.

• matricile si vectorii A, b, Aeq, beq, lb, ub definesc constrangerile liniare cu


structura prezentata in modelul (1).

7
• variabila de tip handle nonlcon returneaza constrangerile neliniare de
egalitate si inegalitate reprezentate in (1).
• x0 reprezinta punctul initial de unde porneste procesul de cautare al min-
imului si trebuie furnizat ca un vector din Rn .
• Variabila optiuni reprezinta setul de optiuni specific fiecarei rutine MATLAB.
Comanda optiuni=optimset(’fmincon’) afiseaza setul de optiuni im-
plicit. Fiecare dintre acestea se poate modifica in functie de problema de
minimizare. De exemplu, pentru setarea optiunii GradObj pe on, comanda
este optiuni.GradObj=’on’.

Pentru o documentare amanuntita introduceti in consola urmatoarea comanda:

help fmincon
Exemplu 5. Consideram problema de optimizare

min2 f (x) = ex1 (4x21 + 2x22 + 4x1 x2 + 2x2 + 1) .
x∈R
( !
x1 x2 − x1 − x2 + 1.5 ≤ 0
s.l. c(x) ≤ 0 ≡ .
−x1 x2 − 10 ≤ 0

Se rezolve local problema utilizand rutina fmincon, cu punctul de initializare


x0 = [1 1]T .

Rezolvare. Se creaza fisierul objfun.m ce defineste functia obiectiv si confun.m


in care se definesc constrangerile:
function f=objfun(x)
f = exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1);

function [c,ceq]=confun(x)
c=[x(1)*x(2)-x(1)-x(2)+1.5 -x(1)*x(2)-10];
ceq=[];
Se apeleaza rutina pentru minimizare cu restrictii:
x0=[-1,1];
optiuni=optimset(fmincon);
optiuni.LargeScale=off;
[x,fval]=fmincon(@objfun,x0,[],[],[],[],[],[],@confun,optiuni)

Exemplu 6 (Analiza statistica). Analiza datelor si interpretarea acestora intr-


un sens cat mai corect este preocuparea principala din domeniul statisticii.
Problema centrala de care se ocupa aceasta disciplina se formuleaza in urma-
torul mod: pe baza unei colectii de date cunoscute (reprezentate in figura prin
puncte), sa se realizeze predictia cu o eroare cat mai mica a unui alt set de
date partial cunoscut. In termeni matematici, aceasta problema presupune de-
terminarea unei directii de-a lungul careia elementele date (punctele) tind sa se
alinieze, astfel incat sa se poata predicta zona de aparitie a punctelor viitoare.

8
S-a constatat ca directia de cautare este data de vectorul singular al matricii for-
mate din colectia de puncte date, ce poate fi gasit prin intermediul urmatoarei
probleme de optimizare:

 
1 T T
maxn f (x) = x A Ax
x∈R 2
s.l. c(x) ≤ 0 (= kxk1 ≤ 1) ,

unde A ∈ Rm×n reprezinta matricea ale carei coloane [a1 . . . an ] sunt punctele
P
n
cunoscute initial, iar kxk1 = |xi |.
i=1
 
1 0.5 0
Considerand cazul particular in care se da matricea A = , rezol-
0 2 1
vati problema de mai sus cu ajutorul functiei fmincon, alegand punctul initial
x0 = [−1 − 2 0.5]T .

Rezolvare. Se creaza fisierele objfun.m si confun.m pentru functia obiectiv si


respectiv, pentru constrangeri :
function [f]=objfun(x)
f=x(1)^2+4.25*x(2)^2+x(3)^2+0.5*x(1)*x(2)+2*x(2)*x(3);

function [c,ceq]=confun(x)
c=abs(x(1))+abs(x(2))+abs(x(3));
ceq=[];
Apeleaza rutina pentru minimizare cu restrictii:
x0=[-1,-2,0.5];
optiuni=optimset(fmincon);
optiuni.LargeScale=off;
[x,fval]=fmincon(@objfun,x0,[],[],[],[],[],[],@confun,optiuni)

Reformulati problema de mai sus ca o problema patratica (QP) si o rezolvati


cu ajutorul functiei Matlab quadprog.

9
Exemplu 7 (Proiectare filtre). Una dintre cele mai importante probleme ale
ingineriei reprezinta proiectarea filtrelor cu raspuns la impuls prestabilit. Prin
notiunea de filtru intelegem un sistem dinamic liniar invariant in timp, care
de cele mai multe ori este definit de relatia de convolutie dintre doua semnale
discrete/continue:
Z ∞ X∞
y(t) = u(s)h(t − s)ds y(k) = u(i)h(k − i),
−∞ i=−∞

unde h este raspunsul la impuls corespunzator sistemului. Echivalent, in dome-


niul frecvential, transferul intrare-iesire pentru cazul continuu de mai sus se
reprezinta:
Y (ω) = H(ω)U (ω), −∞ < ω < ∞,
unde Y (ω), H(ω), U (ω) sunt transformatele Fourier corespunzatoare functiilor
y(t), h(t), u(t). Problema de sinteza a unui filtru presupune determinarea con-
figuratiei optime globale a unui bloc (colectie) de filtre cu functii de tranfer
cunoscute, astfel incat functia de transfer globala rezultata sa coincida cu una
prestabilita. Notand functia de transfer globala prestabilita cu T (ω), consid-
eram masurarea calitatii functiei de trasfer pe segmentul [ωmin , ωmax ]. Rezulta
urmatoarea problema de optimizare:
X
n
minn sup |T (ω) − xj Hj (ω)|,
x∈R ωmin ≤ω≤ωmax
j=0

unde Hj (ω) reprezinta functiile de transfer aferente filtrelor ce compun blocul.


O versiune mai abordabila, este urmatoarea aproximare a problemei de mai sus:
X
n
minn max |T (ωi ) − xj Hj (ωi )|,
x∈R 1≤i≤m
j=0

in care s-a recurs la alegerea unui numar finit m de puncte in intervalul [ωmin , ωmax ].

Aceasta ultima versiune se poate scrie in termenii unei probleme constranse:

min f (x, t) (= t)
x∈Rn ,t
 
  X
n
x ≡ |T (ωi ) −
s.l. A ≤b xj Hj (ωi )| ≤ t, ∀i = 1, . . . , m .
t
j=0

10
Se considera cazul particular ce cuprinde urmatoarele functii: T (ω) = cos ω 2 +
3 ω2 2ω
ω , H1 (ω) = 1+ω , H2 (ω) = 1+ω , H3 (ω) = ω 2 +ω+1 si vectorul ω̄ = [0.1 0.5 1 5 10].
Tinand cont ca valorile ωi reprezinta componentele vectorului ω̄, scrieti mod-
elul problemei de mai sus sub forma standard a unei probleme de programare
liniara si rezolvati problema cu ajutorul functiilor Matlab fmincon si linprog.
Comparati solutiile furnizate de cele doua functii Matlab.
Rezolvare. O simpla rescriere a functiei modul conduce transformarea problemei
generale la una standard de optimizare cu constrangeri liniare:
min t
x∈Rn ,t
X
n
s.l. − t ≤ T (ωi ) − xj Hj (ωi ) ≤ t, ∀i = 1, . . . , n.
j=0

In cazul general, pentru rezolvarea cu ajutorul functiei fmincon, compunem


parametrii corespunzatori constrangerilor liniare de inegalitate:
   
−H1 (ω1 ) −H2 (ω1 ) . . . −Hn (ω1 ) −1 −T (ω1 )
 H1 (ω1 ) H2 (ω1 ) . . . Hn (ω1 ) −1  T (ω1 ) 
   
 . .. ..   .. 
A= .. . . , b= . .
   
−H1 (ωn ) −H2 (ωn ) . . . −Hn (ωn ) −1  −T (ωn )
H1 (ωn ) H2 (ωn ) . . . Hn (ωn ) −1 T (ωn )
Pentru cazul particular din enunt avem:
   
−0.009 −0.181 −1.11 −1 −1.00
 0.009 0.181 1.11 −1  1.00 
   
 −0.16 −0.66 −1.75 −1  −1.093 
   
 0.16 0.66 1.75 −1  1.093 
   
 −0.5 −1.0 −3.0 −1  −1.54 
A=  0.5
, b=
 1.54  .

 1.0 3.0 −1
  
 −4.16 −1.66 −31 −1  −125.99 
   
 4.16 1.66 31 −1  125.99 
   
 −9.09 −1.818 −111 −1 −1000.86
9.09 1.818 111 −1 1000.86
Rezolvarea cazului particular este data de urmatoarele secvente de cod aferente
functiei obiectiv si constrangerilor:
function [f]=objfun(x,t)
f=t;
function [c,ceq]=confun(x)
c=[-0.009*x(1) -0.181*x(2) -1.11*x(3)-x(4)+1 ;
... ];
ceq=[];
Apeleaza rutina pentru minimizare cu restrictii:
x0=[-1,-2,0.5];
optiuni=optimset(fmincon);
optiuni.LargeScale=off;
[x,fval]=fmincon(@objfun,x0,[],[],[],[],[],[],@confun,optiuni)

11
4.2 Programare liniara
Pentru cazurile particulare de probleme de optimizare (e.g. functie obiectiv
liniara sau patratica), exista functii MATLAB specifice ce rezolva problemele de
optimizare aferente prin intermediul unor algoritmi dedicati clasei de probleme
respective.
Functia linprog rezolva probleme de programare liniara, ce vizeaza mini-
mizarea unei functii obiectiv liniare, in prezenta unui set de constrangeri liniare.
O problema de programare liniara se formuleaza in general dupa cum urmeaza:

min cT x
x∈Rn
s.l. Ax ≤ b
Aeq x = beq
l ≤ x ≤ u,

unde c, l, u ∈ Rn , b ∈ Rm , beq ∈ Rp , A ∈ Rm×n , Aeq ∈ Rp×n . Sintaxa functiei


linprog cuprinde:

x = linprog(c,A,b,Aeq,beq,lb,ub,x0,optiuni)
[x,fval,exitflag,output,lambda] = linprog(. . . ).

Pentru mai multe detalii consultati comanda

help linprog.
Exemplu 8 (Repartizare optimala a resurselor umane). O aplicatie posibila a
programarii liniare este alocarea de resurse, mai exact, repartizarea optimala a
resurselor umane (atribuire optima de joburi). Problema se formuleaza in felul
urmator:
Fie un numar de n persoane disponibile pentru m joburi. Valoarea atribuita
unei zile de lucru al persoanei i la un job j este definita de aij , pentru i =
1 . . . n, j = 1 . . . m. Problema se reduce la determinarea repartizarii optime de
job-uri ce maximizeaza valoarea lucrului total.
Atribuirea de job-uri consta in alegerea valorilor xij , pentru i = 1 . . . n,
j = 1 . . . m, ce reprezinta proportia din timpul persoanei i consumata pe job-ul
j. De aceea avem
X
m X
n
xij ≤ 1, xij ≤ 1, xij ≥ 0.
j=1 i=1

Prima relatie denota ca o persoana nu poate depasi 100% din timpul sau
lucrand. A doua relatie precizeaza ca unei singure persoane ii este permis sa
lucreze la un job la un moment dat. In final, a treia relatie interzice ca timpul
petrecut pe un job sa fie negativ.

12
In concluzie problema enuntata mai sus are urmatoarea formulare:
 
Xn Xm
min f (x) = aij xij 
x∈Rnm
i=1 j=1
 P m 

 xij ≤ 1,
   
 j=1 
s.l. Ax ≤ b ≡  Pn 
 xij ≤ 1,  .
   


i=1
xij ≥ 0
 
1 −1 0
Fie matricea coeficientilor aij data de 0.1 −5 2 , adica n = m = 3.
0 −1 −0.5
Rezolvati problema de mai sus cu ajutor functiei linprog.

4.3 Programare patratica


Functia quadprog rezolva probleme de programarea patratica, ce vizeaza min-
imizarea unei functii obiectiv patratice, in prezenta unui set de constrangeri
liniare. O problema de programare patratica se formuleaza in general dupa
cum urmeaza:
1 T
min x Qx + cT x
x∈Rn 2
s.l. Ax ≤ b
Aeq x = beq
l ≤ x ≤ u,

unde Q = QT ∈ Rn×n , c, l, u ∈ Rn , b ∈ Rm , beq ∈ Rp , A ∈ Rm×n , Aeq ∈ Rp×n .


Sintaxa functiei quadprog cuprinde:
x = quadprog(Q,c,A,b,Aeq,beq,lb,ub,x0,optiuni)
[x,fval,exitflag,output,lambda] = quadprog(. . . ).

Pentru mai multe detalii consultati comanda


help quadprog.
Exemplu 9 (Problema Google). Ca urmare a progreselor tehnologice recente,
motoarele de cautare (e.g. Google) au devenit un punct central de concentrare
cu scopul determinarii de algoritmi eficienti ce executa o cautare cat mai rapida.
Constatand ca o cautare eficienta presupune o clasificare cat mai strategica a
paginilor web, rezulta o reducere a problemei de cautare la una de clasificare a
acestor pagini
Problema de clasificare (“ranking”) se formuleaza usor in termeni de grafuri,
daca paginile web sunt interpretate ca noduri ale unui graf, iar muchiile ca
“link”-urile aferente dintre ele, tinand cont ca fiecare muchie are asociata o
pondere.
Daca notam cu E matricea de adiacenta a grafului, elementele acesteia re-
specta urmatoare regula: Eij este nenul daca exista o muchie directionata de

13
la i la j, altfel este nul. Daca tinem cont ca graful este ponderat si ca suma
ponderilor este egala cu 1, atunci matricea E va avea suma pe linii egala cu 1.
Matematic, problema de mai sus presupune gasirea unui vector propriu x
corespunzator valorii proprii 1, i.e. sa se determine x ∈ Rn astfel incat Ex = x.
Reformuland mai departe problema in termeni de optimizare avem:
 
1
min f (x) = kEx − xk 2
x∈Rn 2
s.l. Ax ≤ b (≡ x ≥ 0)
!
X
Aeq x = beq ≡ xi = 1 .
i

De cele mai multe ori matricea are dimensiuni foarte mari (e.g. 109 × 109 )
ceea ce face problem  foarte greu de rezolvat.

0.1 0 0 0.9
 0 0 0.5 0.5
Fie matricea E =  
0.2 0 0.2 0.6. Rezolvati problema cu ajutorul func-
0 0 0 1
tiei quadprog, folosind mai intai doar constrangeri de egalitate si apoi includeti
si constrangerile de inegalitate. Ce observati?

5 Exercitii rezolvate
1. Fie functiile f : R3 → R si g : R2 → R definite de:

f (x) = x31 x2 + 2x23 x1 − x2 x3 ,


g(x) = ex1 −x2 + e2x1 −1 − e2x2 −2 .

(a) Determinati expresiile gradientilor ∇f (x), ∇g(x).


(b) Determinati expresiile hessianelor ∇2 f (x), ∇2 g(x).

Rezolvare:
Pentru o functie diferentiabila de 2 ori f : Rn → R, reamintim definitiile
gradientului si hessianei:
 ∂f (x)   ∂ 2 f (x) ∂ 2 f (x)

∂x21
... ∂x1 ∂xn
 . 
∂x1
 
∇f (x) =  
 ..  , ∇2 f (x) = 

..
.
..
.
.

∂f (x) ∂ 2 f (x) ∂ 2 f (x)
∂xn ∂xn ∂x1 ... ∂x2n

14
a) Expresiile
 gradientilor  functiilor din enunt au forma:
3x21 x2 + 2x23  x −x 
e 1 2 + 2e2x1 −1
∇f (x) =  x31 − x3  ∇g(x) =
−ex1 −x2 − 2e2x2 −2
4x3 x1 − x2

b) Expresiile
 hessianelor functiilor
 din enunt au forma:
6x1 x2 3x21 4x3  x −x 
e 1 2 +4e2x1−1 −ex1−x2
∇2 f (x) =  3x21 0 −1  ∇2 g(x) =
−ex1−x2 ex1−x2 −4e2x2−2
4x3 −1 4x1
 2 
x + x3
2. Fie functia multidimensionala h : R3 → R2 , h(x) = 22 .
x1 + x2

(a) Determinati expresia Jacobianului ∇h(x).


(b) Aratati ca, in orice vector x ∈ R3 , Jacobianul calculat are coloanele
liniar independente.

Rezolvare:  ∂h 
1 (x) ∂h2 (x)
∂x1 ∂x1
 ∂h1 (x) ∂h2 (x) 
a) Din definitia Jacobianului ∇h(x) =  ∂x2 ∂x2 
, avem
∂h1 (x) ∂h2 (x)
∂x3 ∂x3 .
 
0 2x1
∇h(x) = 2x2 1 .
1 0

b) Din definitia proprietatii de liniar independenta avem ca: doi vectori


u, v ∈ Rn sunt liniar independenti daca nu exista un scalar α 6= 0 astfel
incat u = αv. Aceasta proprietate este evidenta observand ca se obtin
zerourile din coloanele Jacobianului functiei h doar cand fixam α = 0.

3. Fie urmatoarea problema de optimizare:

min x31 + x32


x∈R2

s.l. (x1 + x2 )2 ≤ 0,
x1 x32 = −1.

(a) Precizati care sunt constrangerile de egalitate si care sunt cele de


inegalitate.
(b) Determinati analitic punctul de optim si valoarea optima.
Rezolvare:
a) Se observa ca inegalitatea (x1 +x2 )2 ≤ 0 este echivalenta cu (x1 +x2 )2 =
0. Concluzionam ca nu exista constrangeri de inegalitate.
b)Din punctul a) rezulta ca x1 + x2 = 0 si facand sistem cu cea de-a doua
constrangere, concluzionam ca multimea fezabila este formata dintr-un
singur punct si anume (x1 , x2 ) = (1, −1). Evident, punctul de optim este
dat de (x∗1 , x∗2 ) = (1, −1), iar valoarea optima f ∗ = 0.

15
P
n
4. Fie functia f : ∆n → x, f (x) = ln xT Ax, unde ∆n = {x ∈ Rn : xi =
i=1
1, xi ≥ 0, ∀i = 1, . . . , n}, A ∈ Rn×n este matrice simetrica si pozitiva.

(a) Determinati expresia gradientului ∇f (x) si a hessianei ∇2 f (x).


(b) Determinati constanta Lipschitz a gradientului functiei f .
Rezolvare:
a) Expresia gradientului este data de ∇f (x) = 2Ax
xT Ax
, iar a hessianei
T
2Ax Ax−(2Ax)(2Ax) T T
∇ f (x) =
2
(xT Ax)2
= − 2A
xT Ax
4Ax
xT Ax
Ax
xT Ax
.
b) Gradientul este continuu in sens Lipschitz daca urmatoarea inegalitate
are loc:
k∇f (x) − ∇f (y)k2 ≤ Lkx − yk2 , ∀x, y ∈ ∆n .
Echivalent, aceasta proprietate se exprima si in termenii matricii hessiene:

k∇2 f (x)k2 ≤ L, ∀x ∈ ∆n .

T
Obervam ca matricea (2Ax)(2Ax)
(xT Ax)2
este pozitiv semidefinita, de aceea avem
urmatoarea marginire a normei hessianei:
2A
k∇2 f (x)k ≤ k k, ∀x ∈ ∆n .
xT Ax
Mai mult, remarcam ca
X   1  
min xT Ax = min Aij xi xj ≥ min min Aii kxk2 = min Aii .
x∈∆n x∈∆n
i,j
x∈∆n i N i

De aici obtinem o aproximare a constantei Lipschitz corespunzatoare gra-


dientului functiei din enunt:
2A
k∇2 f (x)k ≤ N k k = L.
min Aii
i

5. Fie P ∈ Rn×n o matrice simetrica si inversabila. Aratati ca functia


1 T
f (x) = x P x + xT b
2
are valoare minima (i.e. este marginita inferior) daca si numai daca P  0.
Mai mult, in cazul in care este marginita, aratati ca punctul de minim x∗
este unic si x∗ = −P −1 b.

Rezolvare. Observam ca
1 T  1 1
x + P −1 b P x + P −1 b = xT P x + bT x + bT P −1 b.
2 2 2

16
De aici rezulta,
1 T 1 T  1
f (x) = x P x + bT x = x + P −1 b P x + P −1 b − bT P −1 b.
2 2 2
Presupunem ca P are o valoare proprie negativa, e.g. −λ(undeλ > 0)
si notam vectorul propriu asociat valorii proprii negative cu u. Atunci,
pentru orice α ∈ R, α 6= 0, considerand x = αu − P −1 b si tinand cont de
relatia P u = −λu, avem
1 T  1
f (x) = x + P −1 b P x + P −1 b − bT P −1 b
2 2
1 T 1 T −1
= αu P αu − b P b
2 2
1 2 1
= − λα kuk2 − bT P −1 b.
2
2 2

In final, observam ca λ > 0 si avem libertatea de a alege α oricat de mare,


de unde rezulta ca functia nu are minimum (i.e. minimum-ul se atinge la
−∞). Pentru ca functia sa aiba minimum este necesat ca P  0.
Pentru a arata ultima parte a rezultatului, din reformularea lui f (x) de
mai sus:
1 T  1
f (x) = x + P −1 b P x + P −1 b − bT P −1 b,
2 2
 T 
remarcam ca 2 x + P −1 b P x + P −1 b ≥ 0, deci minimum-ul functiei
1

se atunci cand x + P −1 b = 0.

6 Exercitii propuse
1. Calculati expresiile gradientului si hessianei corespunzatoare urmatoarelor
functii:
• f (x) = x21 − x22 − 2x23 + 2x2 x3 + 3x1 x2 .
• f (x) = x31 + x2 x23 .
• f (x) = ex1 x2 + ex2 x3 + ex3 x1 .
• f (x) = x1 ln x1 + x2 ln x2 + x3 ln x3 .
2. Aratati ca functia f (x) = x21 + 2x22 − 2x23 − x2 x3 + 3x1 x2 . are gradientul
continuu in sens Lipschitz in raport cu norma Euclidiana, i.e. satisface
proprietatea: exista L > 0 astfel incat
k∇f (x) − ∇f (y)k2 ≤ Lkx − yk2 , ∀x, y ∈ R3 .
Determinati constanta Lipschitz L.
3. Se considera urmatoarea problema de optimizare:
min f (x1 , x2 )
x∈Rn
s.l. 2x1 + x2 ≥ 1,
x1 + 3x2 ≥ 1
x1 ≥ 0, x2 ≥ 0.

17
Desenati multimea fezabila. Pentru fiecare functie obiectiv de mai jos,
determinati multimea optima si valoarea optima:
• f (x1 , x2 ) = x1 + x2 .
• f (x1 , x2 ) = −x1 − x2 .
• f (x1 , x2 ) = x1 .
• f (x1 , x2 ) = max{x1 , x2 }.
• f (x1 , x2 ) = x21 + 9x22 .
4. Se considera problema de optimizare:

min (x1 − 4)2 + (x2 − 2)2


x∈Rn

s.l. 4x21 + 9x22 ≤ 36,


x21 + 4x22 = 4
2x1 ≥ −3

a) Desenati schema multimii fezabile, multimile izonivel ale functiei obiec-


tiv si identificati punctul de optim pe grafic.
b) Repetati punctul a) inlocuind in enuntul problemei minimizarea cu
maximizarea.
5. O fabrica furnizeaza 4 tipuri de produse. Unul dintre materialele brute
necesare pentru fabricatie se afla in cantitate redusa, fiind disponibila de-
cat o cantitate R de material. Pretul de vanzare al produsului i este Si
per kilogram. Mai mult, fiecare kilogram de produs i consuma o cantitate
ai de material brut (cel in cantitate redusa). Costul de productie a xi kilo-
grame din produsul i, excluzand costului materialului in cantitate redusa,
este de ki x2i , unde ki > 0 este cunoscut. Dezvoltati un model matematic
pentru problema.
6. Presupuneti ca cererile d1 , . . . , dn pentru un anumit produs in intervalul a
n perioade de timp sunt cunoscute. Cererea in timpul perioadei j poate fi
satisfacuta din cantitatea produsa xj pe parcursul perioadei sau din stocul
magaziei. Orice exces de productie poate fi stocat in magazie. Cu toate
astea, magazia care o capacitate limitata K, iar costul stocarii unei unitati
de la o perioada la alta este c. Costul productiei pe parcursul perioadei
j este f (xj ), pentru j = 1, . . . , n. Daca stocul initial este I0 , formulati
problema ca un program neliniar.
7. Intr-o localitate se urmareste amplasarea optima a unui numar de de-
pozite in vecinatatea magazinelor. Fie un numar de n magazine, cu poz-
itii si cereri cunoscute. Magazinul i se afla in pozitia (ai , bi ) si dispune
de o cerere(grad de solicitare al produselor) ri . Cererile vor fi satisfacute
cu ajutorul a m depozite cu capacitati cunoscute. Folosind urmatoarele
notatii:
• (xi , yi ) = pozitia necunoscuta a depozitului i, ∀i = 1, . . . , m.
• ci = capacitatea depozitului i, ∀i = 1, . . . , m.
• dij = distanta de la depozitul i la magazinul j, ∀i = 1, . . . , m, j =
1, . . . , n.

18
• wij = unitati transportate de la depozitul i la magazinul j, ∀i =
1, . . . , m, j = 1, . . . , n,
modelati problema de gasire a pozitiilor optime corespunzatoare depozitelor.
Pentru masurarea distantelor in plan, se poate folosi norma Euclidiana
(norma 2) sau orice alta norma, cu conditia sa fie precizata.

8. Fie matricile X, Y, Z ∈ Rn×n , sa se arate egalitatea:

Tr(XY Z) = Tr(ZXY ) = Tr(Y ZX).

9. Fie matricea simetrica Q ∈ Rn×n .


(a) Determinati expresia valorilor proprii extreme λmin si λmax sub forma
valorilor optime corespunzatoare unor probleme de optimizare necon-
stransa.
(b) Determinati expresia valorilor proprii λmin si λmax sub forma valorilor
optime corespunzatoare unor probleme de optimizare constransa.
10. Fie x ∈ Rn , pentru norma k·k, definim norma duala: kxk∗ = min hx, yi.
kyk≤1
Sa se demonstreze urmatoarele relatii, pentru orice x ∈ Rn :
• kxk∗1 = kxk∞
• kxk∗∞ = kxk1
• kxk∗2 = kxk2 .

19