Sunteți pe pagina 1din 12

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, fminimax,
constrîngerile, respectiv vectorul fseminf, linprog,
corespunzător din partea dreaptă lsqlin, quadprog
Aeq, beq Matricea Aeq şi vectorul beq sunt coeficienţii fgoalattain,
sistemului liniar de ecuaţii ce exprima fmincon, fminimax,
restricţiile, respectiv vectorul din partea fseminf, linprog,
dreaptă 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ă sau din cea pătratică

fun Funcţia ce urmează să fie optimizată fgoalattain, fminbnd,

2
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ă .
Matricea H trebuie să fie simatrică
lb, ub Vectorii (matricile) limită sus/jos fgoalattain,
-upper/lower fmincon, fminimax,
Au aceeaşi dimensiune cu x. Dacă lb are mai fseminf, linprog,
puţine elemende decît x, să presupunem m, lsqcurvefit,
doar primele m elemente din x vor fi limitate lsqlin, lsqnonlin,
jos. Variabilele care nu au limite impuse se quadprog
specifica prin -Inf pentru limita minimă şi Inf
pentru limita maximă. Astfel daca lb(i)= -Inf,
înseamnă că variabila 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, fmincon,
optimizare cere şi aceste funcţii, de exmplu : fminimax,
f= feval(fun,x,P1,P2,…) fminsearch,
[c, ceq]=feval(nonlcon,x,P1,P2,…) fminunc, fseminf,
[c,ceq,K1,K2,…,Kn,s]=… fsolve, fzero,
feval(seminfcon,x,s,P1,P2,…) lsqcurvefit,
În acest fel aceeaşi functie fun, nonlcon, sau lsqnonlin
seminfcon poate rezolva un număr de
probleme similare cu parametrii diferiţi, fară
să folosească variabile globale
seminfcon Folosită la calculul constrîngerilor de tip fseminf
inegalităţi neliniare ori egalităţi şi la
constrîngeri semi-infinite
weight Vector de evaluare a atingerii funcţiilor fgoalattain
obiectiv
xdata, ydata Datele de intrare şi datele de ieşire care se lsqcurvefit
ataşează unei ecuaţii
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

3
minimizată

VARIABILE DE IEŞIRE
Funcţii Descriere Se foloseşte la :
attainfactor Factorul de dobîndire al soluţiei x fgoalattain
exitflag Condiţia de ieşire TOATE FUNCŢIILE
fval Valoarea funcţiei obiectiv fun pentru soluţia xfgoalattain,
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,


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

4
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,fmincon
jacobianul cu diferenţele finite 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
dacă funcţia nu converge
GoalsExactAchieve Numarul de ţinte care trebuiesc M fgoalattain
atinse exact
GradConstr Gradientul pentru constrîngeri M fgoalattain, fmincon,
neliniare fminimax
GradObj Gradientul pentru functia B fgoalattain, fmincon,
obiectiv definită de utilizator fminimax, fminunc,

5
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 , 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 , 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
LevenbergMarquardt Alege alg Levenberg- M lsqcurvefit, lsqnonlin
Marquardt în loc de Gauss-
Newton
LineSearchTipe Alege algoritmul line-search M fminunc, fsolve,
lsqcurvefit,lsqnonlin
MaxFunEvals Nr maxim de funcţii evaluate B fgoalattain,fminbnd,
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,

6
lsqlin, lsqnonlin,
quadprog
MeritFunction Foloseşte functia merit- M fgoalattain, fminimax
multiobiectiv în detrimentul
celei cu un singur obiectiv
fmincon
MinAbsMax Numarul de 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
PrecondBandWidth Limita superioara a L fmincon, fminunc,
preconditionarii pentru PCG fsolve,lsqcurvefit,
lsqlin,lsqnonlin,
quadprog
TolCon Încheierea toleranţei pentru B fgoalattain,fmincon,fmi
depaşirea constrîngerii nimax, fseminf
TolFun Încheierea toleranţei pentru B fgoalattain,fmincon
valorile funcţiei 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
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

7
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:

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
x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq) rezolvă problema daca e supusă la un
sistem de ecuaţii liniare . Setează dacă nu există
inegalităţi.

8
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

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 . Se setează dacă nu există
limite specificate variabilelor.
x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon,...options,P1,P2,…)
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

9
nonlcon: functia calculeaza constringerile de tip inegalitati neliniar e 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.
options se va explica separate, in paragraf dedicat

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
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

10
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
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


, unde :

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

11
Apoi se apeleaza rutina de optimizare, de tip minimax:

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

12

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