Sunteți pe pagina 1din 13

CURSUL NR. 7.

PREZENTAREA FUNCŢIILOR CONŢINUTE ÎN MATLAB-


OPTIMIZATION TOOLBOX

Există mai multe moduri de a grupa funcţiile conţinute in toolbox-ul de optimizare.


Pentru o prezentare cît mai sintetică vom accepta următoarele variante de clasificare a
funcţiilor dar şi a problemelor pe care acestea le rezolvă:
După problemele rezolvate:
-funcţii care rezolvă probleme de minimizare
-funcţii care rezolvă sisteme liniare şi neliniare de ecuaţii
-funcţii care rezolvă probleme liniare şi neliniare de aproximare a curbelor-fitting
-funcţii utilitare- prin ele se setează parametrii ori se regasesc anumiţi parametrii
-funcţii demo pentru probleme standard –medium scale
- funcţii demo pentru probleme complexe –large scale

Funcţiile care rezolvă probleme de optimizare sunt:


fgoalattain probleme minimizare tip multiobiectiv
fminbnd probleme minimizare tip scalare, neliniare cu limite ale domeniului
fmincon probleme minimizare neliniare cu constrîngeri
fminmax probleme minimizare tip minimax
fminsearch, fminunc probleme minimizare tip neliniar fară constrîngeri
fseminf probleme minimizare tip semi-infinite
linprog probleme minimizare tip programare liniară
quadprog probleme minimizare tip programare pătratică

Funcţii care rezolvă sisteme de ecuaţii:


\ se foloseşte simbolul \ pentru rezolvarea ecuaţiilor liniare
fsolve pentru rezolvarea ecuaţiilor neliniare
fzero pentru rezolvarea ecuaţiilor neliniare scalare

1
Funcţii care rezolvă probleme de aproxinare a curbelor –prin metoda celor mai
mici pătrate:
\ se foloseşte acest operator pentru metoda celor mai mici patrate în varianta liniara
şi fără constrîngeri
lsqlin metoda celor mai mici patrate în varianta liniara cu constrîngeri
lsqcurvefit aproximarea curbelor neliniare
lsqnonlin metoda celor mai mici patrate în varianta neliniara
lsqnonneg metoda celor mai mici patrate în varianta liniara şi non-negativă

Funcţii utilitare
fymult înmulţire cu baza fundamentală nenula a spaţiului vectorial
gangstr trasformă în zero elementele suficient de mici ale unor matrici specificate
optimget obţine valorile opţionale optimale ale parametrilor
optimset editează sau crează strcturile opţionale optimale ale parametrilor

Variabilele funcţiilor
Variabilele folosite de funcţiile din toolbox se grupează în două categorii : de intrare şi
de ieşire. În tabelele următor sunt marcate variabilele de intrare şi de ieşire dar şi
descrierea şi funcţiile care le folosesc :
VARIABILE DE INTRARE
Funcţii Descriere Se foloseşte la :
A, b Matricea A şi vectorul b sunt coeficienţii fgoalattain,
sistemului liniar de inecuaţii ce exprimă fmincon,
constrîngerile, respectiv vectorul fminimax,
corespunzător din partea dreaptă A  x  b fseminf, linprog,
lsqlin, quadprog
Aeq, beq Matricea Aeq şi vectorul beq sunt coeficienţii fgoalattain,
sistemului liniar de ecuaţii ce exprima fmincon,
restricţiile, respectiv vectorul din partea fminimax,
dreaptă Aeq  x  beq fseminf, linprog,
lsqlin, quadprog
C, d Matricea C şi vectorul d sunt coeficienţii lsqlin, lsqnonneg
sistemului liniar ce trebuie rezolvat, respectiv
vectorul din partea dreaptă
f Vectorul coeficienţilor pentru termenul liniar linprog, quadprog
din ecuaţia liniară f '  x sau din cea pătratică

2
x'  H  x  f '  x
fun Funcţia ce urmează să fie optimizată fgoalattain,
fminbnd,
fmincon,
fminimax,
fminsearch,
fminunc, fseminf,
fsolve, fzero,
lsqcurvefit,
lsqnonlin
goal Vectorul valorilor pe care funcţia obiectiv se fgoalattain
doreşte să le atingă. El are aceeasi dimensiune
ca şi numarul funcţiilor obiectiv
H Matricea coeficienţilor pentru termenii quadprog
patratici din ecuaţia pătratică x '  H  x  f '  x .
Matricea H trebuie să fie simatrică
lb, ub Vectorii (matricile) limită sus/jos fgoalattain,
-upper/lower fmincon,
Au aceeaşi dimensiune cu x. Dacă lb are mai fminimax,
puţine elemende decît x, să presupunem m, fseminf, linprog,
doar primele m elemente din x vor fi limitate lsqcurvefit,
jos. Variabilele care nu au limite impuse se lsqlin, lsqnonlin,
specifica prin -Inf pentru limita minimă şi Inf quadprog
pentru limita maximă. Astfel daca lb(i)=
-Inf, înseamnă că variabila x (i ) nu are limită
inferioară
nonlcon Funcţia poate considera astfel constrîngerile fgoalattain,
de tip inegalitaţi neliniare ori egalităţi fmincon,
fminimax

ntheta Numarul constrîngerilor de tip semi-infinit fseminf

options Structura opţională optimizată a parametrilor TOATE FUNCŢIILE

P1, P2, … Funcţii suplimentare date fun, nonlcon, fgoalattain,


seminfcon –dacă există- cînd funcţia de fminbnd,
optimizare cere şi aceste funcţii, de exmplu : fmincon,
f= feval(fun,x,P1,P2,…) fminimax,
[c, ceq]=feval(nonlcon,x,P1,P2,…) fminsearch,
[c,ceq,K1,K2,…,Kn,s]=… fminunc, fseminf,
feval(seminfcon,x,s,P1,P2,…) fsolve, fzero,
În acest fel aceeaşi functie fun, nonlcon, lsqcurvefit,
sau seminfcon poate rezolva un număr de lsqnonlin
probleme similare cu parametrii diferiţi, fară
să folosească variabile globale
seminfco Folosită la calculul constrîngerilor de tip fseminf
inegalităţi neliniare ori egalităţi şi la
n
constrîngeri semi-infinite
weight Vector de evaluare a atingerii funcţiilor fgoalattain

3
obiectiv
xdata, Datele de intrare şi datele de ieşire care se lsqcurvefit
ataşează unei ecuaţii
ydata
X0 Punctul de start. Poate fi un scalar, un vector Toate funcţiile mai
sau o matrice puţin
fminbnd

x1, x2 Intervalul în cadrul căruia funcţia este fminbnd


minimizată

VARIABILE DE IEŞIRE
Funcţii Descriere Se foloseşte la :
attainfacto Factorul de dobîndire al soluţiei x fgoalattain
r
exitflag Condiţia de ieşire TOATE FUNCŢIILE
fval Valoarea funcţiei obiectiv fun pentru soluţia fgoalattain,
x fminbnd, fmincon,
fminimax,
fminsearch,
fminunc, fseminf,
fsolve, fzero,
linprog, quadprog
grad Valoarea gardientului pentru fun la soluţia x. fmincon, fminunc
Dacă fun nu poate calcula funcţia gradient, el
se aproximează prin diferenţe finite.
hessian Valoarea hessianului lui fun la soluţia x. fmincon, fminunc
Pentru metodele tip large-scale dacă fun la nu
calculează hessianul, se folosesc diferenţele
finite.
jacobian Valoarea jacobianului lui fun la soluţia x. La lsqcurvefit,
fel, se folosesc diferenţele finite dacă nu se lsqnonlin, fsolve
poate calcula.
lambda Lagrageanul pentru soluţia x. Structura lui fgoalattain,
lambda este diferită pentru variantele de tipuri fmincon,
de restricţii fminimax,
fseminf, linprog,
lsqcurvefit,
lsqlin,
lsqnonlin,
lsqnonneg,
quadprog
maxfval max{fun(x)} la soluţia x fminimax

output Conţine informaţii despre rezultatul TOATE FUNCŢIILE


optimizarii

residual Valoarea rezidualului pentru soliţia x lsqcurvefit,

4
lsqlin,
lsqnonlin,
lsqnonneg
resnorm Valoarea normei pătratice a rezidualului lsqcurvefit,
pentru soluţia x lsqlin,
lsqnonlin,
lsqnonneg

x Soluţia aflată prin funcţia de optimizare. Dacă TOATE FUNCŢIILE


exitflag>0, atunci este o soluţie, altfel x
este o valoarea a rutinei de optimizare care s-a
terminat prematur

Parametrii opţionale de optimizare


Se foloseşte aceeaşi structură de tabel pentru sistematizarea setului de parametrii, cu
observaşia că se introduce o coloană suplimentară care specifică dacă parametrii se
folosesc la funcţii tip large-scale L, medium-scale M sau la ambele tipuri A.
Nume param. Descriere L, Folosit de :
M
,A
DerivativeChek Compara gradientul ori M fgoalattain,fminco
jacobianul cu diferenţele finite n
fminimax, fminunc,
fseminf, fsolve,
lsqcurvefit,
sqnonlin
Diagnostics Afişează informaţii tip A Toate fminbnd,
diagnostic despre funcţiile ce fminsearch, fzero,
urmează să fie minimizate ori lsqnonneg
rezolvate
DiffMaxChange Variaţia maximă în valoarea M fgoalattain,
variabilelor pentru diferenţe fmincon,fminimax,
finite fminunc,fseminf,
fsolve,lsqcurvefit,
lsqnonlin
DiffMinChange Variaţia minimă în valoarea M fgoalattain,
variabilelor pentru diferenţe fmincon,fminimax,
finite fminunc,fseminf,
fsolve,lsqcurvefit,
lsqnonlin
Display Dacă valoare este off, nu se B Toate
prezintă ieşirile, daca este iter
se afişează după fiecare
iteraţie, dacă este final se
afişează doar la final iar dacă
este notify, se afişează doar

5
dacă funcţia nu converge
GoalsExactAchie Numarul de ţinte care trebuiesc M fgoalattain
ve atinse exact
GradConstr Gradientul pentru constrîngeri M fgoalattain,
neliniare fmincon,
fminimax
GradObj Gradientul pentru functia B fgoalattain,
obiectiv definită de utilizator fmincon, fminimax,
fminunc, fseminf
Hessian Dacă se setează on funcţia L fmincon, fminunc
foloseşte hessianul ori
informaţii despre (HessMult)
el pentru funcţia obiectiv. Dacă
se setează off hessianul se
aproximează prin diferenţe
finite.
HessMult Funcţia multiplicativă hessian L fmincon, fminunc,
definită de utilizator quadprog
HessPattern Modelul tip matrice rară– L fsolve, lsqcurvefit,
sparsity- a hessianului în lsqnonlin
varianta diferenţe finite.
Dimensiunea este n  n , unde
n este numarul de elemente din
x0, punctul de start.
Jacobian Dacă se setează on funcţia L fsolve, lsqcurvefit,
foloseşte jacobianul ori lsqnonlin
informaţii despre
(JacobMult) el pentru funcţia
obiectiv. Dacă se setează off
jacobianul se aproximează prin
diferenţe finite.
JacobMult Funcţia multiplicativă jacobian L fsolve, lsqcurvefit,
definită de utilizator lsqlin, lsqnonlin
JacobPattern Modelul tip matrice rară– L fsolve, lsqcurvefit,
sparsity- a jacobianului în lsqnonlin
varianta diferenţe finite.
Dimensiunea este n  n , unde
n este numarul de elemente din
x0, punctul de start.
LargeScale Foloseşte algoritmul tip large- B fmincon, fminunc,
scale fsolve,linprog,
lsqcurvefit, lsqlin,
lsqnonlin,
quadprog
LevenbergMarqu Alege alg Levenberg- M lsqcurvefit,
ardt Marquardt în loc de Gauss- lsqnonlin
Newton
LineSearchTipe Alege algoritmul line-search M fminunc, fsolve,
lsqcurvefit,lsqnonlin
MaxFunEvals Nr maxim de funcţii evaluate B fgoalattain,fminbn

6
d,
fmincon, fminimax,
fminsearch,
fminunc,fseminf,
fsolve,lsqcurvefit,
lsqnonlin
MaxIter Numarul maxim de iteraţii B Toate cu excepţia
fzero şi lsqnonneg
MaxPCGIter Numarul max de iteraţii ale L fmincon, fminunc,
PCG fsolve, lsqcurvefit,
lsqlin, lsqnonlin,
quadprog
MeritFunction Foloseşte functia merit- M fgoalattain,
multiobiectiv în detrimentul fminimax
celei cu un singur obiectiv
fmincon
MinAbsMax Numarul de F (x ) pt a min cel M fminimax
mai dificil caz în valoare
absolută
NonlEqnAlgorithm Alege alg L-M sau G-N in loc M fsolve
de trust-region alg
PrecondBandWid Limita superioara a L fmincon, fminunc,
th preconditionarii pentru PCG fsolve,lsqcurvefit,
lsqlin,lsqnonlin,
quadprog
TolCon Încheierea toleranţei pentru B fgoalattain,fminco
depaşirea constrîngerii n,fminimax,
fseminf
TolFun Încheierea toleranţei pentru B fgoalattain,fminco
valorile funcţiei n
fminimax,
fminsearch,
fminunc, fseminf,
fsolve,
linprog (large-scale
only),
lsqcurvefit,
lsqlin (large-scale
only),
lsqnonlin,
quadprog (large-
scale only)
TolPCG Încheierea toleranţei pentru L fmincon, fminunc,
iteraţia PCG fsolve,
lsqcurvefit, lsqlin,
lsqnonlin,
quadprog
TolX Încheierea toleranţei pentru x B Toate funcţiile cu
excepţia

7
medium-scale
algorithms linprog,
lsqlin şi quadprog
TypicalX Valorile tipice pentru x. L fmincon, fminunc,
Lungimea vectorului este egală fsolve,lsqcurvefit,
cu muărul de elemente din lsqlin,lsqnonlin,
punctul de start x0. quadprog

PREZENTAREA FUNCŢIILOR CARE REALIZEAZĂ MINIMIZARI

1. fgoalattain
Scop: rezolvă probleme de optimizare multiobiectiv de tip atingerea ţintei -goal
attainment-

aşa încît

unde x, weight, goal, b, beq, lb, şi ub sunt vectori, A si Aeq sunt


matrici,iar c(x),ceq(x),
F(x) sunt funcţii care returnează vectori. F(x), c(x), şi ceq(x)pot fi
funcţii neliniare.
Sintaxa:

8
Descriere: fgoalattain rezolvă proble de minimizare de tip multiobiectiv.

x = fgoalattain(fun,x0,goal,weight) face ca funcţia obiectiv – fun- să atingă


obiectivul prin mofificarea lui x , pornind de la valoare de start x0, modificarea fiind
weight
x = fgoalattain(fun,x0,goal,weight,A,b) rezolvă problema daca e supusă la
inegalităţil liniare de tip A  x  b
x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq) rezolvă problema daca e
supusă la un sistem de ecuaţii liniare Aeq  x  beq . Setează A   , B    dacă nu
există inegalităţi.
x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub) problema
defineşte limitele superioare şi inferioare ale variabilelor de optimizare, asa încît
soluţia este de tipul lb  x  ub.
x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon)
problema este supusă la inecuaţii neliniare c(x) sau ecuaţii neliniare ceq(x) definite
în nonlcon. Funcţia optimizează aşa încît c( x)  0, ceq  0 . Se setează
lb   , ub    dacă nu există limite specificate variabilelor.
x=
fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon,...options,P
1,P2,…)

9
transferă problema dependentă de parametrii P1, P2…direct funcţiilor fun,
nonlcon. Se setează matrici vide în locul A, b, Aeq,beq,lb,ub,nonlcon si
options dacă aceste argumente nu sunt cerute.
[x,fval] = fgoalattain(...) returnează valorile funcţiei obiectiv calculate in fun,
ca şi soluţie x
[x,fval,attainfactor] = fgoalattain(...) returnează factorul de atingere,
attainment la solutia x
[x,fval,attainfactor,exitflag] = fgoalattain(...) returnează valoarea exitflag
care descrie condiţia de oprire a algoritmului
[x,fval,attainfactor,exitflag,output] = fgoalattain(...) returnează structura
output care conţine informaţii despre optimizare
[x,fval,attainfactor,exitflag,output,lambda] = fgoalattain(...) returnează
structura lambda care conţine lagrageanul soluţiei x

Variabilele de intrare
fun : este funcţia minimizată, acceptă un vector x şi returnează un vector F, funcţia
obiectiv evaluată in x.
x = fgoalattain(@myfun,x0,goal,weight)
unde myfun este o funcţie MATLAB
sau fun poate fi un obiect inline
x = fgoalattain(inline('sin(x.*x)'),x0,goal,weight);
goal: vector al valorilor pe care functia obiectiv vrem să le atingă. Vectorul are
aceeasi lungime ca şi numarul de obiective conţinute F returnate de fun. Functia
fgoalattaint minimizează valorile în vectorul F pentru a atinge valorile date prin ,goal
nonlcon: functia calculeaza constringerile de tip inegalitati neliniar e c( x)  0 si
constringerile de tip ecuatii neliniare ceq  0 . 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.
options se va explica separate, in paragraf dedicat

Argumente de iesire
exitflag descrie conditiile de iesire
>0 functia converge catre solutia x

10
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 valorilor functiei evaluate la solutia x maxfval =
max{fun(x)}.
output contine informatii despre optimizare, avind structura:
iterations numarul de iteratii considerate
funcCount numarul evaluarilor functiei.
algorithm algoritm folosit

Optiuni: parametrii de tip optiune folositi de procedura fminimax. Se poate folosi


optimset pentru a schimba valorile cimpurilor in structura options.

DerivativeCheck compara gradientii functiei obiectiv ori ale functiilor


obiectiv cu diferentele finite.
Diagnostics se tiparesc informatii despre functia ce tebuie optimizata ori
despre sistemele de rezolvat
DiffMaxChange schimbarile maxime acceptate in variabile pentru
diferente finite
DiffMinChange schimbarile minime acceptate in variabile pentru diferente
finite
Display tipurile afisarii 'off' nu se afiseaza iesirea; 'iter' se afiseaza iesirea
dupa fiecare iteratie; 'final' se afiseaza doar iesirea finala.
GradConstr gradientul pentru constringerile definite de utilizator
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

11
MaxFunEvals numarul maxim permis pentru evaluarile functiei
MaxIter numarul maxim permis pentru iteratii
MeritFunction se foloseste daca este cazul functiilor multiobiectiv, s-a setat
'multiobj'. Se foloseste fmincon merit function daca este cazul
unei singure functii obiectiv si s-a setat 'singleobj'.
MinAbsMax Numarul de F(x) pentru a minimiza cel mai
defavorabil caz-valori absulute
TolCon limita tolerantei pentru incalcarea constringerilor
TolFun limita tolerantei pentru valorile functiei
TolX limita tolerantei pentru x

Exemplu: aflati valorile lui x care minimizeaza maximul lui


 f 1 ( x), f 2 ( x), f 3 ( x), f 4 ( x), f 5 ( x) , unde :

Întâi se scrie M-file-ul care calculează cele 5 funcţii

Apoi se apeleaza rutina de optimizare, de tip minimax:

După şapte iteraţii, soluţia este:

12
13

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