Sunteți pe pagina 1din 15

CURSUL NR. 8.

PREZENTAREA FUNCŢIILOR CONŢINUTE ÎN MATLAB-


OPTIMIZATION TOOLBOX-partea a doua

2. fminbnd
Scop: rezolvă probleme de optimizare de tip o singura variabila apartinind unui
interval determinat

aşa încît

unde sunt scalari iar f(x) returneaza un scalar


Sintaxa:
x = fminbnd(fun,x1,x2)
x = fminbnd(fun,x1,x2,options)
x = fminbnd(fun,x1,x2,options,P1,P2,...)
[x,fval] = fminbnd(...)
[x,fval,exitflag] = fminbnd(...)
[x,fval,exitflag,output] = fminbnd(...)

Descriere: fminbnd determina minimul unei functii intr-un inteval determinat

x = fminbnd(fun,x1,x2) returneaza o valoarea x care este un minim local al functiei


scalare descrise in fun pentru intervalul considerat
x = fminbnd(fun,x1,x2,options) minimizeaza tinind seama de parametrii de optimizare
specificati in structura options. Se foloseste optimset pentru a seta parametrii
optimizarii.
x = fminbnd(fun,x1,x2,options,P1,P2,...) are in vedere variabilele independente
suplimentare P1, P2, etc., care sunt trecute in functia obiectiv, fun. Se foloseste
options=[] ca placeholder daca nu se seteaza nici o optiune.
[x,fval] = fminbnd(...) returneaza valoarea functiei obiectiv calculata prin fun la
solutia x.
[x,fval,exitflag] = fminbnd(...) returneaza o valoare exitflag care descrie conditiile de
iesire din procedura fminbnd.
[x,fval,exitflag,output] = fminbnd(...) returneaza o structura output care contine
informatii despre optimizare.

1
Argumentele de intrare:
fun : functia de minimizat fun este o functie care accepta un scalar x si returneaza un
scalarand returns a scalar f, care este functia obiectiv evaluata, calculata in punctul x.
Functia se poate scrie astfel:
x = fminbnd(@myfun,x1,x2)
unde myfun este o functie MATLAB asa incit
function f = myfun(x)
f = ... % calculeaza valoarea functiei in x.
fun poate fi si un obiect inline
x = fminbnd(inline('sin(x*x)'),x1,x2);

Argumente de iesire: se prezinta elementele specifice pentru exitflag si output:


exitflag descrie conditiile de iesire, de oprire:
> 0 functia converge catre solutia x.
0 numarul maxim de functii evaluate sau numarul maxim de iteratii a fost depasit
< 0 functia nu converge catre solutia x.
output structura contine informatii despre optimizare, in cadrul urmatoarelor cimpuri:
iterations numarul de iteratii efectuate
funcCount numarul de functii evaluate
algorithm algoritmul folosir

Optiuni:
Display tipurile afisarii 'off' nu se afiseaza iesirea; 'iter' se afiseaza iesirea dupa fiecare
iteratie; 'final' se afiseaza doar iesirea finala.
MaxFunEvals numarul maxim permis pentru evaluarile functiei
MaxIter numarul maxim permis pentru iteratii
TolX limita tolerantei pentru x

Exemplu: sa se determine minimul functiei , din intervalul (0, 5)


-se scrie M-file-ul :

function f = myfun(x)
f = (x-3).^2 - 1;
-se apeleaza procedura de optimizare:

2
x = fminbnd(@myfun,0,5)
ea genereaza solutia x=3, pentru care se obtine minimul
Limitari de utilizare : procedura cere ca functia sa fie continua si ofera doar minimul
local. Se foloseste un algoritm de cautare bazat pe sectiunea de aur si interpolari de tip
parabolic. Daca solutia este aproape de granita domeniului de definitie, procedura
converge lent catre solutie.

3. fmincon
Scop: determina minimul unei functii neliniare, cu mai multe variabile, care are
constringeri de tip neliniar

in conditiile:

unde: x, b, beq, lb, si ub sunt vectori,


A si Aeq sunt matrici,
c(x) and ceq(x) sunt functii care returneaza vectori,
f(x) functie care returneaza scalar.
f(x), c(x), and ceq(x) can be nonlinear functions.

Sintaxa:
x = fmincon(fun,x0,A,b)
x = fmincon(fun,x0,A,b,Aeq,beq)
x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub)
x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)
x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options,P1,P2, ...)
[x,fval] = fmincon(...)
[x,fval,exitflag] = fmincon(...)
[x,fval,exitflag,output] = fmincon(...)
[x,fval,exitflag,output,lambda] = fmincon(...)
[x,fval,exitflag,output,lambda,grad] = fmincon(...)

3
[x,fval,exitflag,output,lambda,grad,hessian] = fmincon(...)

Descriere: fmincon determina minimul unei functii scalare de mai multe


variabile, supusa constringerilor, procedura pornind de la un punct initial
estimat. Probleme rezolvate sunt astfel cele de tip optimizare neliniara
(programare neliniara).
x = fmincon(fun,x0,A,b) porneste din punctul initial x0 (care poate fi un scalar, vector
sau matrice) si determina minimul x al functiei descrisa in fun, care este supusa unui
sistem liniar de inecuati A*x <= b..
x = fmincon(fun,x0,A,b,Aeq,beq) minimizeaza fun supusa la ecuatiile liniare Aeq*x =
beq sau la A*x <= b. Se seteaza A=[] and b=[] daca nu exista inegalitati
x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub) defineste un set de limite inferioare si
superioare pentru variabilele de optimizare x,asa incit solutiile sa fie mereu in
domeniile definite prin lb <= x <= ub. Se seteaza Aeq=[] and beq=[] daca nu exista
egalitati, ecuatii.
x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon) problema este expusa la inecuatii
neliniare c(x) sau ecuatii ceq(x) definite in nonlcon. Procedura fmincon optimizeaza
asa incit c(x) <= 0 si ceq(x) = 0. Se seteaza lb=[] si/sau ub=[] daca nu exista definite
limitele.
x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options) procedura optimizeaza cu
parametrii de optimizare specificati in structura options. Se foloseste optimset pentru
a seta acesti parametrii.
x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options,P1,P2,...) transfera problema
dependenta de parametrii P1, P2, etc., direct functionalelor fun si nonlcon. Se folosesc
matrici goale, empty, drep placeholdere pentru A, b, Aeq, beq, lb, ub.
nonlcon si options if these arguments are not needed.
[x,fval] = fmincon(...) returneaza valoarea functiei oviectiv fun pentru solutia x.
[x,fval,exitflag] = fmincon(...) returneaza o valoare exitflag care descrie conditiile de
iesire, exit din functia fmincon.
[x,fval,exitflag,output] = fmincon(...) returneaza o structura output careofera
informatii despre optimizare
[x,fval,exitflag,output,lambda] = fmincon(...)returneaza o structura lambda a carei
cimpuri contine coeficientii lagrangeanului solutiei x.

4
[x,fval,exitflag,output,lambda,grad] = fmincon(...) returneaza valoarea gradientului lui
fun pentru solutia x.
[x,fval,exitflag,output,lambda,grad,hessian] = fmincon(...) returneaza valoarea
hessenianului lui fun pentru solutia x.

Argumentele de intrare:
fun functia de minimizat fun accepta un scalar x si returneaza un scalar f, ce
reprezinta functia obiectiv evaluata in punctul x. Functia fun se scrie:
x = fmincon(@myfun,x0,A,b)
unde myfun este o functie MATLAB:
function f = myfun(x)
f = ... % calculeaza valoarea functiei in x
fun poate fi calculata si in forma inline:.
x = fmincon(inline('norm(x)^2'),x0,A,b);
Daca gradientul lui fun poate fi calculat si in plus parametrul functiei GradObj este
'on', setat prin intermediul functiei options = optimset('GradObj','on'), atunci functia
fun trebuie sa returneze ca si al doilea argument al iesirii valoarea gardientului g, ca
un vector, calculat in punctul x. prin verificarea valorii lui nargout functia poate evita
calcului vectorului g cind fun este apelata doar cu un argument de iesire (in cazul in
care algoritmul de optimizare are nevoie doar de f si nu de g ):
function [f,g] = myfun(x)
f = ... % calculeaza valoarea functiei in x
if nargout > 1 % fun apelata doar cu doua argumente la iesire
g = ... % calculeaza valoarea gradientului in x
end
Gradientul contine derivatele partiale ale lui f in punctul x. Astfel componenta I a lui
g este derivata partiala f respectind in raport cu componenta i a lui x.
Daca matricea nessian se poate calcula si daca se seteaza parametrul Hessian 'on',
prin options = optimset('Hessian','on'), atunci functia fun trebuie sa returneze valoarea
hessianului H, care este o matrice simetrica in x , ca si el treilea argument de iesire.
Prin verificarea valorii lui nargoutse poate evita calculul lui H cind fun este apelata
doar cu unul sau doua argumente de iesire (in cazul in care algoritmul de optimizare
are nevoie de valorile lui f si g dar nu si de H).
function [f,g,H] = myfun(x)

5
f = ... % calculeaza valoarea functiei obiectiv in x
if nargout > 1 % fun apelata cu doua argumente de iesire
g = ... % gradientul functiei calculat in x
if nargout > 2
H = ... % hessianul evaluat in x
end
Matricea hessian este matricea derivatelor partiale de ordin doi al lui f in punctul x.
Astfel componenta (i, j) a lui H este derivata partiala a doua, in raport cu xi ,xj, .
Matricea hessian este prin definitia o matrice de tip simetric

nonlcon: functia calculeaza constringerile de tip inegalitati neliniare si


constringerile de tip ecuatii neliniare . Functia are ca intrare vectorul x si
returneaza doi vectori : c si ceq. Vectorul c contine inecuatiile neliniare evaluate in x
iar vectorul ceq ecuatiile neliniare evaluate in x. Functia nonlcon se poate scrie:
x = fmincon(@myfun,x0,A,b,Aeq,beq,lb,ub,@mycon)
unde mycon este o functie MATLAB de tip:
function [c,ceq] = mycon(x)
c = ... % calculeaza inecuatiile neliniare in x.
ceq = ... % calculeaza ecuatiile neliniare in x.
Daca gradientul constringerilor poate fi calculat si parametrul din GradConstr este
setat 'on', prin options = optimset('GradConstr','on') atunci functia nonlcon trebuie sa
returneza ca argumente de iesire, al treilea si al patrulea, GC, gradientul lui c(x), si
GCeq, gradientul lui ceq(x). Prin verificarea valorii lui nargout functia poate evita
calculul lui GC si GCeq daca nonlcon ieste apelata cu numai doua argumente la iesire
(caz in care algoritmul de optimizare are nevoie doar de valorile c si ceq si nu de GC
and GCeq).
function [c,ceq,GC,GCeq] = mycon(x)
c = ... % inecuatii neliniare in x
ceq = ... % ecuatii neliniare in x
if nargout > 2 % nonlcon apelata cu 4 iesiri
GC = ... % gradientul inecuatiilor
GCeq = ... % gradientul ecuatiilor
end

6
Daca nonlcon returneaza un vector c cu m componente iar x are lungimea n,unde n
este lungimea lui x0, atunci gradientul GC pentru c(x) ieste o matrice de dimensiune
n-by-m, unde GC(i,j) este derivata partiala a lui is c(j) in concordanta cu x(i) (asa incit
coloana j a lui GC este gradientul constringerii j de tip inecuatie c(j)). Similar, daca
ceq contine p ccomponente, gradientul GCeq al lui ceq(x) este o matrice de
dimensiunea n-by-px, where GCeq(i,j) este derivata partiala a lui is ceq(j) in
concordanta cu x(i) (asa incit coloana j a lui GCeq este gradientul constringerii j de tip
ecuatie ceq(j))

Argumente de iesire:
exitflag descrie conditiile de iesire
>0 functia converge catre solutia x
0 numarul maxim de functii evaluate prin algoritm a fost depasit
<0 functia nu converge catre o solutie
lambda contine lagrangeanul pentru solutia x. Structura este:
lower limita inferioara lb
upper limita superioara ub
ineqlin inecuatii liniare
eqlin ecuatii liniare
ineqnonlin inecuatii neliniare
eqnonlin ecuatii neliniare
output contine informatii despre optimizare, avind structura:
iterations numarul de iteratii considerate
funcCount numarul evaluarilor functiei.
algorithm algoritm folosit
cgiterations numarul de iteratii tip PCG (doar pentru algoritmii tip large-
scale).
stepsize marimea finala a pasului (pentru algoritmii medium-scale).
firstorderopt masura optimului de ordin prim (pentru algoritmii tip large-
scale).

Optiuni:
LargeScale este posibila folosirea algoritmilor large-scale daca se seteaza pe 'on'.
si medium-scale daca se seteaza pe 'off'.

7
Parametrii folositi de algoritmii tip medium-scale si large-scale:
Diagnostics printeaza informatiile diagnostic despre functia minimizata
Display tipurile afisarii 'off' nu se afiseaza iesirea; 'iter' se afiseaza iesirea dupa fiecare
iteratie; 'final' se afiseaza doar iesirea finala.
GradObj gardientul pentru functia obiectiv definite de utilizator. Se foloseste la
aplicatiile de tip large scale si este optionala folosirea la cele standard, medium scale
MaxFunEvals numarul maxim permis pentru evaluarile functiei
MaxIter numarul maxim permis pentru iteratii
TolCon limita tolerantei pentru incalcarea constringerilor
TolFun limita tolerantei pentru valorile functiei
TolX limita tolerantei pentru x

Parametrii folositi doar in algoritmii tip large-scale


Hessian daca este setat 'on', atunci fmincon foloseste hessianul definit in fun sau
informatii despre hessian daca folosim HessMult. Daca se seteaza 'off', fmincon
aproximeaza hessianul folosind diferente finite.

HessMult construita pentru functia hessian multiplicator. Pentru problemele large-


scale aceata functie calculeaza matricea hessian produs H*Y fara a calcula forma
actuala H. Functia are forma W = hmfun(Hinfo,Y,p1,p2,...) unde Hinfo si parametrii
aditionali p1,p2,...contin matricile folosite pentru a calcula H*Y. Primul argument
trebuie sa fie acelasi cu al treilea argument returnat de functia obiectiv fun.
[f,g,Hinfo] = fun(x,p1,p2,...). Parametrii p1,p2,...sunt aceeasi parametrii aditionali
care au fost la fmincon (si la fun) : fmincon(fun,...,options,p1,p2,...). Y este o matrice
care are numarul de linii egal cu dimensiunea problemei W = H*Y desi H nu este
formata explicit. fmincon foloseste Hinfo pentru a calcula preconditionarea.
Obs: 'Hessian' trebuie setat pe 'on' pentru ca Hinfo sa treaca de la fun la hmfun.

HessPattern modelul de tip rar al hessianului pentru diferente finite.Daca nu este


convenabil calculul matricei de tip rara a hessenianul H in fun, pentru metodele large-
scale din fmincon se poate aproxima H prion metoda diferentelor finite. In cel mai
defavorabil caz, cind structura nu este cunoascuta, se poate seta HessPattern sa fie o
matrice tip dens, si la fiecare iteratie se calculeaza intreaga aproximare prin diferente

8
finite. Aceata metoda poate fi foarte dificila pentro problemele tip large-scale si din
acest motiv se apeleaza la structurile matriceale de tip matrici rare.
MaxPCGIter numarul maxim de iteratii tip PCG (preconditioned conjugate gradient)
PrecondBandWidth limita superioara a domeniului preconditionat pentru PCG. Pentru
unele probleme marirea domeniului reduce numarul de itaratii PCG..
TolPCG limita abaterii pentru oteratiile PCG
TypicalX valorile tipice ale lui x .

Parametrii folositi doar de algoritmii medium-scale


DerivativeCheck compara gradientii functiei obiectiv si ai constringerilor cu
derivatele de tip diferente finite
DiffMaxChange variatia maxima din variabile pentru gradientii diferentelor finite
DiffMinChange variatia minima din variabile pentru gradientii diferentelor finite.

Exemplu: Determinati valorile lui x care minimizeaza functia , avind ca


punct de start x = [10; 10; 10] , in prezenta constringerilor:
Se scrie la inceput M-file-ul care returneaza valoarea scalara f a functiei evaluate in x.
function f = myfun(x)
f = -x(1) * x(2) * x(3);
Apoi se rescriu constringerile, ca un sistem de 2 inecuatii:

Deoarece ambele sunt liniare, se pot formula in scriere matriceala , unde:

Se alege un puct de start si se apeleaza procedura de optimizare :

x0 = [10; 10; 10]; % punctul de start


[x,fval] = fmincon(@myfun,x0,A,b)
Dupa 66 de iteratii, se obtine solutia:
x=
24.0000
12.0000
12.0000
iar valoarea functiei este:
fval =-3.4560e+03

9
iar constringerile de tip inecuatii liniare
A*x-b= -720

4. fminimax
Scop: rezolvă probleme de tip minimax:

aşa încît

unde: x, b, beq, lb, si ub sunt vectori,


A si Aeq sunt matrici,
c(x) and ceq(x) sunt functii care returneaza vectori,
f(x) functie care returneaza scalar.
f(x), c(x), si ceq(x) pot fi functii neliniare

Sintaxa:
x = fminimax(fun,x0)
x = fminimax(fun,x0,A,b)
x = fminimax(fun,x0,A,b,Aeq,beq)
x = fminimax(fun,x0,A,b,Aeq,beq,lb,ub)
x = fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)
x = fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
x = fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options,P1,P2,...)
[x,fval] = fminimax(...)
[x,fval,maxfval] = fminimax(...)
[x,fval,maxfval,exitflag] = fminimax(...)
[x,fval,maxfval,exitflag,output] = fminimax(...)
[x,fval,maxfval,exitflag,output,lambda] = fminimax(...

Descriere:

10
fminimax minimizeaza cea mai defavorabila valoare dintr-un set de functii cu mai
multe variabile, pornind dintr-un punct initial estimat. Functiile minimizate pot fi
supuse restrictiilor.
x = fminimax(fun,x0) procedura pornesteste din punctul de start x0 si determina
solutia minimax x a functiei descrise in fun.
x = fminimax(fun,x0,A,b) rezolva probleme tip minimax care au restrictii de tip
inecuatii liniare A*x <= b.
x = fminimax(fun,x,A,b,Aeq,beq) rezolva probleme tip minimax care au restrictii de
tip ecuatii liniare Aeq*x = beq. Se seteaza A=[], b=[] daca nu exista inecuatii.
x = fminimax(fun,x,A,b,Aeq,beq,lb,ub) procedura defineste limitele
superioare/inferioanare ale variabilelor de proiectare, de design, x, astfel incit solutia
sa fie in domeniul lb <= x <= ub.
x = fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon) rezolva probleme tip minimax care
au restrictii de tip inecuatii neliniare c(x) sau ecuatii de tip ceq(x) definite in nonlcon.
Procedura fminimax opyimizeaza asa incit c(x) <= 0 and ceq(x) = 0. Se seteaza lb=[] ,
ub=[] daca nu sunt specificate granitele domeniului.
x = fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options) procedura optimizeaza
folosind parametrii specificati in structura options. Se utilizeaza optimset pentru
setarea parametrilor.
x = fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options,P1,P2,...)
procedura transmite problema dependenta de parametrii P1, P2, etc., direct functiilor
fun si nonlcon. Transfera matrici goale si place-holdere in cazul in care nu exista A, b,
Aeq, beq, lb, ub, nonlcon, options –daca argumentele acestea nu sunt necesare.
[x,fval] = fminimax(...) returneaza valoarea functiei obiectiv fun pentru solutia x.
[x,fval,maxfval] = fminimax(...) returneaza maximul valorii functiei pentru solutia x
[x,fval,maxfval,exitflag] = fminimax(...) returneaza o valoare exitflag care descrie
conditiile de iesire din procedura fminimax.
[x,fval,maxfval,exitflag,output] = fminimax(...) returneaza structura output care
contine informatii despre optimizare.
[x,fval,maxfval,exitflag,output,lambda] = fminimax(...) returneaza structura lambda
care contine multiplicatorii lagrange ai solutiei x.

Argumente de iesire: se prezinta fun si nonlcon

11
fun functia ce urmeaza sa fie minimizta accepta la intrare vectorul x si returneaza sub
forma vectorului F, functia obiectiv evaluata in x. Functia fun poate fi scrisa:
x = fminimax(@myfun,x0) unde: myfun este o functie MATLAB de forma :
function F = myfun(x)
F = ... % calculeaza valorile functiei in x
Sau functia fun poate fi definita ca obiect inline
x = fminimax(inline('sin(x.*x)'),x0);
Pentru a minimiza cea mai defavorabila valoare ale oricaruia din elementele
vectorului F(x) ( min{max abs{F(x)} } ), se impart aceste obiective intre primele
elemente ale lui F si se foloseste optimset tpentru a seta parametrii MinAbsMax sa
aibe numarul acestor obiective.
Daca gradientul functiei obiectiv poate fi calculat si parametrul lui GradObj este setat
'on', prin functia options = optimset('GradObj','on') atunci functia fun trebuie sa
returneze ca al doilae argument de iesire, gradientul G, care este o matrice, calculat in
x. Prin verificarea valorii lui nargout functia poate calcula G cind myfun este apelata
cu doau un singur argument la iesire i (caz in care procedura are nevoie de valoarea
lui F dar nu si de G).
function [F,G] = myfun(x)
F = ... % calculeaza valorile functiei in x
if nargout > 1 % doua argumente de iesire
G = ... % gradient calculat in x
end
nonlcon: functia calculeaza constringerile de tip inegalitati neliniare si
constringerile de tip ecuatii neliniare . Functia are ca intrare vectorul x si
returneaza doi vectori : c si ceq. Vectorul c contine inecuatiile neliniare evaluate in x
iar vectorul ceq ecuatiile neliniare evaluate in x. Functia nonlcon se poate scrie:
x = fmincon(@myfun,x0,A,b,Aeq,beq,lb,ub,@mycon)
unde mycon este o functie MATLAB de tip:
function [c,ceq] = mycon(x)
ceq = ... % calculeaza ecuatiile neliniare in x.
Daca gradientul constringerilor poate fi calculat si parametrul din GradConstr este
setat 'on', prin options = optimset('GradConstr','on') atunci functia nonlcon trebuie sa
returneza ca argumente de iesire, al treilea si al patrulea, GC, gradientul lui c(x), si
GCeq, gradientul lui ceq(x). Prin verificarea valorii lui nargout functia poate evita

12
calculul lui GC si GCeq daca nonlcon ieste apelata cu numai doua argumente la iesire
(caz in care algoritmul de optimizare are nevoie doar de valorile c si ceq si nu de GC
and GCeq).
function [c,ceq,GC,GCeq] = mycon(x)
c = ... % inecuatii neliniare in x
ceq = ... % ecuatii neliniare in x
if nargout > 2 % nonlcon apelata cu 4 iesiri
GC = ... % gradientul inecuatiilor
GCeq = ... % gradientul ecuatiilor
end
Daca nonlcon returneaza un vector c cu m componente iar x are lungimea n,unde n
este lungimea lui x0, atunci gradientul GC pentru c(x) ieste o matrice de dimensiune
n-by-m, unde GC(i,j) este derivata partiala a lui is c(j) in concordanta cu x(i) (asa incit
coloana j a lui GC este gradientul constringerii j de tip inecuatie c(j)). Similar, daca
ceq contine p ccomponente, gradientul GCeq al lui ceq(x) este o matrice de
dimensiunea n-by-px, where GCeq(i,j) este derivata partiala a lui is ceq(j) in
concordanta cu x(i) (asa incit coloana j a lui GCeq este gradientul constringerii j de tip
ecuatie ceq(j))

Optiuni:
exitflag descrie conditiile de iesire
>0 functia converge catre solutia x
0 numarul maxim de functii evaluate prin algoritm a fost depasit
<0 functia nu converge catre o solutie
lambda contine lagrangeanul pentru solutia x. Structura este:
lower limita inferioara lb
upper limita superioara ub
ineqlin inecuatii liniare
eqlin ecuatii liniare
ineqnonlin inecuatii neliniare
eqnonlin ecuatii neliniare
maxfval maximul dintre valorile functiei evaluate la solutia x, vare este, maxfval =
max{fun(x)}.
output contine informatii despre optimizare, avind structura:

13
iterations numarul de iteratii considerate
funcCount numarul evaluarilor functiei.
algorithm algoritm folosit

Optiuni : parametrii optionali ai procedurii fminimax sunt DerivativeCheck,


Diagnostics, DiffMaxChange, DiffMinChange, Display, GradConstr, GradObj,
MaxFunEvals, MaxIter, MeritFunction, MinAbsMax, TolCon, TolFun, TolX

Exemplu:
Determinati valorile care minimizeaza maximul valorilor setului de functii
, unde :

Se scrie intii M-file-ul care calculeaza cele 5 functii in x :


function f = myfun(x)
f(1)= 2*x(1)^2+x(2)^2-48*x(1)-40*x(2)+304; % functiile obiectiv
f(2)= -x(1)^2 - 3*x(2)^2;
f(3)= x(1) + 3*x(2) -18;
f(4)= -x(1)- x(2);
f(5)= x(1) + x(2) - 8;
Se apeleaza procudura de optimizare:
x0 = [0.1; 0.1]; % se alege un punct de start
[x,fval] = fminimax(@myfun,x0)
Dupa sapte iteratii, se obtine solutia :
x=
4.0000
4.0000
fval = 0.0000 -64.0000 -2.0000 -8.0000 -0.0000
Numarul maxim de functii obiectiv pentru care cea mai defavorabila valoare a lui F
sunt munimizate este setat in parametrul MinAbsMax folosit de optimset. Aceste
obiective trebuiesc puse in priemele elemente ale lui F. Astfel, in cadrul problemei,

14
care cere valorile lui x pentru care se minimizeaza maximul valorii absolute a setului
de functii , se apeleaza procedura fminimax cu
comenzile :
x0 = [0.1; 0.1]; % se alege punctul de start
options = optimset('MinAbsMax',5); % se minimizeaza valorile absolute
[x,fval] = fminimax(@myfun,x0,[],[],[],[],[],[],[],options);
Dupa sapte iteratii, solutie este :
x=
4.9256
2.0796
fval =
37.2356 -37.2356 -6.8357 -7.0052 -0.9948
Daca constringerile de tip ecuatii nu formeaza un sistem independent, aceasta se
detecteaza in rezolvarea de tip quadratic, care este folosita de procedura si se
printeaza dependent daca parametrul Display este setat pe iter.

15

S-ar putea să vă placă și