Sunteți pe pagina 1din 8

CURSUL NR. 6.

REZOLVAREA PROBLEMELOR DE OPTIMIZARE PRIN


MATLAB-OPTIMIZATION TOOLBOX

Optimization toolbox (OT) este o colecţie de funcţii matematice dezvoltate în cadrul


limbajului MATLAB, care permite rezolvarea mai multor tipuri de probleme de
optimizare. Versiunea 2.2 utilizată poate rezolva (în ordinea creşterii nivelului de
complexitate):

-minimizări scalare: unde: , sintaxa: fmincon


-minimizări fără constrîngeri: , sintaxa: fminunc, fminsearch

-programare liniară: , aşa încît: ,

sintaxa: linprog

-programare pătratică: aşa încît:

sintaxa: quadprog

-minimizări cu constrîngeri: , aşa încît: ,


, sintaxa: fmincon

-atingerea obiectivului: , aşa încît:

, , sintaxa: fgoalattain

-minimax: , aşa încît: ,

, sintaxa: fminimax

-minimizări semi-infinite: , aşa încît: ,

, , sintaxa: fseminf
-rezolvarea sistemelor de ecuaţii liniare, sintaxa: \
-rezolvarea unei ecuaţii neliniare de o variabilă, sintaxa: fzero
-rezolvarea sistemelor de ecuaţii neliniare, sintaxa: fsolve
-aproximarea curbelor prin metoda celor mai mici pătrate:

-cele mai mici pătrate de tip liniar, m ecuaţii cu n variabile

sintaxa: \

1
-cele mai mici pătrate non-negative de tip liniar,

aşa încît , sintaxa: lsqnonneg

- cele mai mici pătrate de tip liniar, cu constrîngeri,

aşa încît: , sintaxa: lsqlin

-cele mai mici pătrate de tip neliniar, ,

aşa încît: , sintaxa: lsqnonlin

-aproximarea neliniară a curbelor, ,

aşa încît: , sintaxa: lsqcurvefit

În cele notate, s-au folosit convenţiile următoare:


-lierele mari, de ex A, sunt folosite pentru a nota matrici
-literele mici, de ex x, sunt folosite pentru a nota vectori sau variabila care este un
scalar
-pentru funcţii vectoriale se folosesc tot litere mari, (F pentru F(x))
-pentru funcţiile carereturnează scalari se folosesc litere mici (f pentru f(x))

Toate funcţiile din OT sunt fişiere MATLAB tip M-file, scrise în limbaj MATLAB,
care implementează tehnici, algoritmi specifici de optimizare. Oricare din ele poate fi
vizualizată în cod MATLAB folosind procedura: type function_name
Utilizarea mediului de programare MATLAB este recomandată şi din cauza extremei
sale flexibilităţi. oricînd utilizatorul poate extinde OT prin propriile sale aplicaţii sub
forma de M-file, ori poate combina OT cu alte toolbox-uri existente. Pentru cei
interesaţi de problematica optimizărilor si a aplicaţiilor practice din inginerie, este
important de reţinut faptul că există în prezent mai multe toolbox-uri gratuite,
elaborate în mediul universitar, care operează in MATLAB şi care au implementat şi
alte tehnici de optimizare, in special de optimizare globală: algoritmi genetici,
programare geometrica, metoda coloniei de furnici, ş.a.
In ceea ce priveşte formarea inginereasca, acomodarea si lucrul cu MATLAB, are şi
alte avantaje:
-rezolvarera şi editarea calculelor matematice
-dezvoltarea de algoritmi
-modelarea simularea, vizualizarea sistemelor tehnice

2
-analiza datelor, vizualizarea lor
-reprezentări grafice de tip ştiinţific şi tehnic
Aceste posibilităţi se obţin prin setul de toolbox-uri: Curve Fitting Toolbox, Data
Acquisition Toolbox, Database Toolbox, Financial Time Series Toolbox, Financial
Toolbox, GARCH Toolbox, LMI Control Toolbox, Neural Network Toolbox.
Şi cum proiectarea de calitate include imperativ etapa de optimizare optimization
toolbox acoperă şi aceasta cerinţă a proiectării.
Inainte de a analiza rezolvarea problemelor de optimizare prin opţiunea MATLAB-
OT, trebuie clarificat un aspect important. Avantajul principal al MATLAB-OT este
că proiectantul are rezolvată problema scrierii programelor pentru algoritmii de
optimizare. Şi atunci , ne intrebăm firesc, ce rămîne în sarcina utilizatorului? Rămîn
exact elementele ce ţin de formarea sa inginerească şi de experienţa de proiectare:
-elaborarea modelului matematic al problemei de optimizare (determinarea funcţiei
ori funcţiilor obiectiv, exprimarea corectă a înttregului set de restricţii, delimitarea cît
mai precisă a domeniului de căutare)
-simplificarea, cînd se impune, a modelului matematic iniţial
-stabilirea genului de problemă (liniară, neliniară, pătratică, cu sau fără constrîngeri)
-alegerea acelei funcţii din MATLAB-OT care poate rezolva cel mai bine problema
-completarea M-file-ului ales cu datele problei
-alegerea modului de afişare a rezultatelor
-analiza rezultatelor
Trebuie înţeles ca programele de tip CAD nu pot înlocui specialistul. Fie ca e vorba
de MATLAB, fie ca e vorba de programe de tip element finit, ele doar măresc viteza
de proiectare dar nu au cum să suplinească experienţa de proiectare ori cunoaşterea
teoretică a domeniului. Şi cum modelele matematice ori algoritmii de rezolvare conţin
seturi de erori intrinseci (simplificari, linearizări, erori de metodă), este nevoie ca in
final soluţia rezultată să fie validată de analiza specialistului.
Aşa cum utilizarea programelor grafice nu ne transformă în artişti plastici, designeri
ori arhitecţi, nici programele inginereşti în sine nu ne pot transforma în buni ingineri.
Ele doar îi ajută pe bunii ingineri.
Cele mai multe fumcţii, rutine de optimizare cer definirea unui M-file care să conţină
funcţia obiectiv. Se mai pot folosi şi obiecte online create din expresii MATLAB.
dacă se vrea maximizarea funcţiei obiectiv, trebuie să se negativeze funcţia obiectiv,
din f devine –f. În cazul în care nu toţi parametrii sunt cunoscuţi, se pot folosi

3
opţiunile de parametrii lipsă (defaul parameters) dar se pot schimba opţiunile prin
structura options.
MATLAB-OT clasifică algoritmii de optimizare în două categorii:
-algoritmii pe scala medie, algoritmi standard (medium scale)
-algoritmii pe scala largă (large scale)

Algoritmii standard (medium-scale algorithms)


Folosirea acestei denumiri semnifică faptul ca algoritmii din această primă clasă au
fost aleşi în funcţie de robusteţe şi de eficienţă. Ei reuşesc să rezolve cea mai mare
parte a problemelor de optimizare, aşa cum apar ele din aplicaţiile practice obişnuite.
Subrutinele care implementează structurile standard pot optimiza următoarele tipuri
de probleme:
-optimizări fără constrîngeri: folosesc metodele cvasi-Newton şi căutare liniară.
Funcţia fminunc oferă realizarea hessian-ului precum şi algoritmiicvasi-Newton ori
căutare liniară.
-optimizari neliniare prin metoda celor mai mici pătrate: implementează metodele
Gauss-newton şi Levenberg-Marquarand prin funcţiile lsqnonlin, lsqcurvefit
-sistene neliniare de ecuaţii: se rezolva prin implementarea metodelor Gauss-Newton,
Newton şi a intervalelor de încredere prin funcţia fsolve
-optimizări cu constrîngeri: metoda programării pătratice secvenţiale (Sequential
Quadratic Programming) SQP care foloseşte ecuaţii de tip Kuhn-Tuker este
implementată prin funcţiile fmincon, fminimax, fgoalattain, fseminf
-optimizări multiobiectiv: rezolvă probleme de tip obiective competitive folosind
metoda atingerii obiectivului şi imbunătăţiri ale metodei SQP în fgoalattain
În cele ce urmează vom prezenta succint elementele teoretice esenţiale ale metodelor
amintite.

Problemele de optimizare fara constrîngeri posedă o larga varietate de metode de


rezolvare, care folosesc sau nu informaţii obţinute din derivatele funcţiei obiectiv. Din
aceasta cauză, unele metode se numesc derivative.
Metoda cvasi-Newton
Dintre metodele derivative, cele mai raspindite sunt metodele cvasi-Newton. Ele
formulează la fiecare iteraţie modelul pătratic al problemei, de forma:

4
unde:
H este hessianul este o matrice pozitiv definită, simetrică
c este un vector constat
b este o constantă
Soluţia optimală a problemei apare cînd derivatele parţiale tind la zero, aşa încît:

Soluţia optimală poate fi scrisă sub forma:


Metoda Newton calculează direct matricea H

Metoda Newton calculează direct matricea H şi apoi urmăreşte direcţia descendentă


pentru localizarea minimului.
Calculul hessianului se face după metoda propusă de Brozden, Flecher, Goldfarb şi
Shanno (metoda BFGS):

unde:

Startul este , o matrice siemtrică, pozoitivă, de exemplu matricea identică, I.


Pentru a evita inversarea matricei H, se poate folosi o metodă de aproximare directă a
lui la fiecare pas. O procedura răspîndită este formula DFP (propusă de
Davidon,Flecher,Powell), unde se foloseşte formula din metoda BFGS dar inlocuind
cu .
Pentru fiecare iteraţie, k, căutarea liniară se realizează în direcţia:

Metoda căutarii liniare


Mai multe metode pentru problemele cu constrîngeri ori fară, folosesc subprobleme,
subdomenii care determină o direcţie de căutare unde soluţia este estimată să se afle.
Minimul se obţine prin proceduri de căutare (Fibonacci, secţiunea de aur) sau prin
metode care presupun interpolări ori extrapolări de tip pătratic ori cubic. Metodele

5
polinomiale aproximează un numar de puncte prin polinoame unidimensiuonale a
căror minim poate fi exprimat uşor. Interpolarea înseamnă ca minimum se află in zona
determinată de punctele alese. Extrapolarea nu este o metodă recomandată pentru
minimizarea funcşiilor neliniare. Interpolarea polinomială este metoda care dă cele
mai bune rezultate pentru funcţiile obiectiv de tip continuu. Iteraţiile sunt de forma:

unde:
este iteraţia curentă
d este direcţia de căutare
este un parametru scalar ce reprezintă pasul , distanţa pînă la minim
Interpolarea pătratică
Presupune ca setul de date să fie aproximate printr-o funcţie unidimensională de
forma:

unde un extrem are loc la un pas de lungime:

Punctul poate fi un maxim ori un minim. Este un minim cînd este pozitiv.
Determinarea coeficienţilor poate fi obţinută folosind combinaţii a trei
gradienţi ori funcţii de evaluare.
Date 3 puncte neuniforme şi asociindu-le valorile funcţiiei

, minimum rezultat din aproximarea pătratică este:

unde:

Pentru ca interpolarea să fie performantă, trebuie ca

,
Interpolarea cubică
Funcţia unidimensională folosită este:

6
iar extremul local este rădăcina ecuaţiei pătratice:

O formulă generală se obţine fiind luate două puncte , gradienţii

corespunzători în raport cu x, şi valorile corespunzătoare ale

funcţei in cele două puncte

unde:

Implementarea metodei cvasi-Newton


Algoritmul metodei are doua etape:
-determinarea direcţiei de căutare (recalcularea hessianului)
-procedura de căutare liniară
Direcţia de căutare se obţine prin una din metodele BFGS (Brozden, Flecher,
Goldfarb, Shanno) ori DFP (Davidon,Flecher,Powell), prezentate anterior.
Pentru cei interesaţi vom oferi in cadrul bibliografiei explicitarea metodelor amintite,
pe care , în linii generale, le-am prezentat în paragrafele anterioare.
Optimizarea prin metoda celor mai mici pătrate
Acest tip de problemă obţine minimul unei funcţii ca o sumă de pătrate:

In cazul optimizării controlului, problema se formulează astfel:

unde şi sunt funcţii scalare


Dacă integrala este discretizată, atunci se scrie:

unde şi includ ponderile scemei pătratice. Iar vectorul este:

7
La astfel de probleme, reziduul are posibilitatea sa fie neglijabil la punctul
de optim deoarece traiectoriile prin care se ajunge la acel punct sunt realizabile. Cînd

reziduul tinde la zero şi matricea , unde

jacobianul lui
gradientul vector al lui
hessenianul lui
Pînă cînd este suficient de mic, se foloseşte metodele Gauss-Newton ori
Levenberg-Marquardt pentru a determina direcţia de căutare a optimului
Metoda Gauss-Newton
Direcţia de căutare este dată pentru fiecare iteraţie de soluşia problemei de tip
cele mai mici pătrate:

Direcţia obţinută este cea rezultată din metoda Newton, cînd termenul este
ignorat. Se constată că metoda Gauss-Newton oferă o mai bună convergenţă, fiind
necesare cam 40-50 de iteraţii, faţă de 140 iteraţii la metoda BFGS. În cazul în care
termenul este semnificativ şi nu poate fi anulat, metoda Gauss-Newton este
dificil de aplicat şi se apelează la metoda Levenberg-Marquardt.
Metoda Levenberg-Marquardt
La această metodă, direcţia de căutare este dată ca soluţie a sistemului liniar de
ecuaţii:

unde scalarul k delimitează marimea şi direcţia lui . Dacă k , direcţia este


identică celei obţinute prin metoda Gauss-Newton

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