Sunteți pe pagina 1din 38

Matematici asistate de calculator

Rezolvarea numeric a problemelor de optimizare

Cap. 9. REZOLVAREA NUMERIC A PROBLEMELOR


DE OPTIMIZARE
9.1. Definirea unei probleme de optimizare
n sens larg, optimizare nseamn [D5], [I1] aciunea de stabilire, pe
baza unui criteriu prestabilit, a celei mai bune decizii ntr-o situaie dat cnd
sunt posibile mai multe decizii, precum i aciunea de implementare a deciziei
stabilite precum i a rezultatului acesteia.
n sens restrns, optimizare nseamn doar aciunea de stabilire a celei
mai bune decizii (soluii), numite decizie optimal (soluie optimal).
Enunul unei probleme de optimizare (PO) n sens restrns trebuie s
conin dou elemente:
A) modelul mediului la care se refer situaia dat,
B) criteriul de optimizare.
Rezolvarea unei PO presupune existena unui al treilea element, i anume:
C) metoda de optimizare.
n cele ce urmeaz vor fi fcute referiri la aceste trei elemente.
A) Modelul mediului. Modelul mediului caracterizeaz procesul cauzal din
cadrul mediului la care se refer PO i reprezint elementul pe baza cruia sunt
estimate efectele diferitelor decizii care pot fi luate n considerare.
Modelul mediului conine patru categorii de relaii:
1) Ecuaiile procesului la care se refer PO, n diferite forme
exprimate ca modele matematice ale proceselor. n cadrul acestora apar trei
tipuri de mrimi:
a) Variabile n timp:
- de intrare (comand), u U Rm,
- de stare, x X Rn,
- de ieire, y Y Rp.
b) Variabila independent timp:
t T0f R pentru sisteme cu timp continuu (SC);
t T0f = {tk0, tk0+1, , tkf} = {tk | k = k0, , kf Z} R
pentru sisteme cu timp discret (SD).
Domeniul T0f se numete interval de optimizare (orizont de timp). n
anumite probleme orizontul de timp este finit: T0f = [t0, tf] R, cu t0 i tf finite
pentru SC, respectiv k0 i kf finite pentru SD, iar n altele este infinit: T0f =
[t0,) R, cu t0 finit pentru SC, respectiv k0 finit, kf infinit pentru SD.
Momentul t0 (tk0) se numete moment iniial i tf (tkf) se numete
moment final.
c) Constante n timp (parametri):
- parametri constructivi (de proiectare), pc Pc Rqc,
- parametri de acordare (funcionali), pa Pa Rqa.
2) Domeniile admise pentru mrimile care apar n ecuaiile procesului.
Acestea au fost prezentate anterior, (U, X, Y, T0f, Pc, Pa).
3) Condiiile iniiale i finale care se asociaz capetelor (bornelor) t0
(tk0) i tf (tkf) ale orizontului de timp pe care a fost definit PO. Aceste condiii
se refer de regul la mrimile de stare:

113

Matematici asistate de calculator

Rezolvarea numeric a problemelor de optimizare

x(t0) = x0, x(tf) = xf


i, mai rar, la mrimile de ieire:
y(t0) = y0, y(tf) = yf,
domeniile corespunztoare avnd expresiile:
x0 X0 X, xf Xf X, respectiv:
y0 Y0 Y, yf Yf Y
i purtnd denumirile:
- X0, Y0 varietate (domeniu) iniial (de lansare),
- Xf, Yf varietate (domeniu) final (int).
4) Condiiile suplimentare impuse mrimilor care apar n ecuaiile
procesului. Aceste condiii sunt datorate particularitilor situaiei n care se
afl mediul considerat. Ele pot fi exprimate printr-un sistem de ecuaii algebrice
i / sau difereniale (cu diferene) i / sau inecuaii algebrice i / sau integrale i
/ sau difereniale (cu diferene), valabil pe ntregul orizont de timp T0f sau
numai la anumite momente ale acestuia.
n cazul utilizrii unor ecuaii, condiiile suplimentare sunt numite
restricii de tip egalitate (RTE). Pe de alt parte, n cazul utilizrii unor
inecuaii, condiiile suplimentare sunt numite restriii de tip inegalitate (RTI).
Se numete proces admisibil sau traiectorie global admisibil orice
soluie a sistemelor de ecuaii ale procesului menionate la punctul 1), care
aparine integral domeniilor admise i care satisface condiiile iniiale, finale i
suplimentare impuse. Se noteaz cu 0f mulimea proceselor admisibile, care
are expresia (9.1.1):
0f = {{x(t), u(t), , pa} | x X, u U, , pa Pa, t T0f;
x0 X0, , yf Yf;
g(x, ..., pa) = 0, h(x, ..., pa) 0, t T0f;
g0(x0, ..., y0) = 0, gf(xf, ..., yf) = 0},

(9.1.1)

n care cu g(x, ..., pa) = 0, g0(x0, ..., y0) = 0 i gf(xf, ..., yf) = 0 au fost exprimate
RTE, iar cu h(x, ..., pa) 0 au fost exprimate RTI.
B) Criteriul de optimizare. Criteriul de optimizare este exprimat n general prin
funcia obiectiv (numit i funcie criteriu sau funcie cost i abreviat FO) i
reflect atitudinea fa de FO, imprimat de problema de optimizare (PO).
FO servete la evaluarea numeric a diferitelor decizii, iar atitudinea
fa de FO trebuie s specifice sensul de variaie dorit al FO, minimizare sau
maximizare.
Funcia obiectiv este de regul o funcional notat cu J:
J : 0f R ,

(9.1.2)

care asociaz fiecrui proces admisibil = {x(t ), u(t ), ! , p a } 0 f un numr


real prin care este apreciat calitatea absolut a procesului n raport cu
mulimea 0 f .
Pentru sistemele cu timp continuu, forma general a FO este (9.1.3):
J (t 0 , x 0 , t f , x f , x(t ), u (t ), p c , p a ) =
tf

= (t 0 , x 0 , t f , x f ) + E (x(t ), u (t ), t )dt .

(9.1.3)

t0

Termenul , numit component de tip Mayer, evalueaz calitatea


capetelor traiectoriei.

114

Matematici asistate de calculator

Rezolvarea numeric a problemelor de optimizare

Termenul integral, numit component de tip Lagrange, evalueaz


parcursul traiectoriei pe care evolueaz procesul considerat. n consecin, se
vorbete de criteriu de tip Mayer, corespunztor FO (9.1.4):
J = (t0 , x0 , t f , x f ) ,

(9.1.4)

care penalizeaz capetelor traiectoriei i de criteriu de tip Lagrange,


corespunztor FO (9.1.5):
tf

J=

E (x(t ), u(t ), t )dt ,

(9.1.5)

t0

care penalizeaz parcursul traiectoriei i de criteriu de tip Bolza,


corespunztor FO (9.1.3), care penalizeaz traiectoria n ansamblu.
Pentru sistemele cu timp discret, forma general a FO (de tip Bolza)
este:
J (t k 0 , x k 0 , t kf , x kf , x k , u k , p c , p a ) =
= (t h 0 , x k 0 , t kf , x kf ) +

k f 1

E k (x k , u k ) ,

(9.1.6)

k = k0

aspectele de terminologie de la cazul cu timp continuu fiind valabile i n cazul


cu timp discret.
O funcie obiectiv discret poate fi obinut dintr-o FO continu prin
discretizare.
n funcie de precizarea sau nu a orizontului de timp, exist probleme
de optimizare dinamic (POD), pentru care precizarea orizontului de timp e
fundamental i probleme de optimizare staionar (POS), pentru care
precizarea orizontului de timp nu e necesar nici pentru modelul mediului i
nici pentru FO i n care intereseaz doar regimul staionar al sistemului
dinamic. n cazul POS, FO au expresia (9.1.7):
J = (x, u) .

(9.1.7)

C) Metoda de optimizare. Metoda de optimizare reprezint ansamblul de


mijloace utilizate pentru determinarea deciziei optimale pe baza modelului
mediului i a FO.
Considernd o problem de optimizare pentru care singura variabil
(singurul element programabil) este reprezentat (reprezentat) de comanda u(t)
(pentru SC) sau uk (pentru SD), adic o problem de conducere optimal, se
zice comand (decizie) optimal acea funcie de comand u (t ) U sau
u k U , t T0 f , k = k 0 , k f 1 , care extremizeaz FO J n sensul cerut de

criteriul de optimizare.
Mulimea U reprezint mulimea comenzilor admisibile, adic
mulimea funciilor de comand care apar n mulimea 0 f a proceselor
admisibile. Dac mulimea U este compact, n cazul minimizrii poate fi
exprimat rezultatul:
u = arg min J (u), u U .

(9.1.8)

Altfel spus, comanda optimal este acea funcie de comand admisibil care
minimizeaz funcia obiectiv J.
n cazul sistemelor discrete, n care comanda optimal este reprezentat
de un ir de vectori {u k 0 , u k 0 +1 , ! , u kf 1 } aplicat secvenial la intrarea

115

Matematici asistate de calculator

Rezolvarea numeric a problemelor de optimizare

procesului condus, este vorba despre probleme de optimizare n mai muli


pai.
n particular, exist probleme de optimizare ntr-un singur pas, care
din punct de vedere matematic nu se deosebesc de POS. Acestea sunt cunoscute
i sub numele de probleme de programare matematic, liniar, neliniar
(ptratic, convex).
Pentru PO cu mai multe variabile / elemente programabile (de
exemplu, tf, xf i u) elementele programabile optimale sunt definite similar.
Din punct de vedere al implementrii comenzii optimale exist
probleme de conducere optimal n circuit deschis i n circuit nchis, situaii
n care se vorbete despre funcii de comand (decizie) optimal
(independente de starea / ieirea procesului condus) respectiv de legi de
comand (decizie) optimal, u = u (t , x) sau u = u k ( x k ) .
Observaii:
1. Orice problem de maximizare poate fi transformat ntr-o
problem de minimizare prin schimbarea semnului FO.
2. ntr-o PO valoarea FO e mai puin important, conteaz doar ca
valoarea sa s fie minim.
Enunul unei PO poate fi exprimat sub urmtoarea form general:
A : v = arg min J = B( v) , supus la RTE, RTI,
v

(9.1.9)

n care v este soluia optimal, v reprezint variabilele problemei (elementele


programabile, exprimate sub form vectorial), A este nlocuit cu denumirea
PO, B este nlocuit cu expresia FO i v trebuie s aparin mulimii soluiilor
admisibile, ceea ce nseamn c trebuie s verifice RTE i RTI.
n paragrafele urmtoare vor fi prezentai algoritmi de rezolvare
numeric a unor clase de probleme de optimizare.

9.2. Aspecte introductive privind rezolvarea numeric a problemelor


de programare matematic fr restricii
Poblemele de optimizare fr restricii (probleme fr restricii, PFR)
au urmtoarea form general:
PFR : v = arg min J = f ( v ), v R n .

(9.2.1)

Pentru rezolvarea PFR (9.2.1) vor fi considerate numai metodele


numerice de descretere (de relaxare), adic metodele care duc la descreterea
valorii funciei obiectiv f la fiecare iteraie conform relaiei:
f ( v k +1 ) < f ( v k ), k = 0,1,... ,

(9.2.2)

unde k este numrul iteraiei curente.


n general, metodele de relaxare au urmtoarea structur recurent:
v k +1 = v k + s k d k , k = 0,1,... ,

(9.2.3)

n care vectorul dk Rn reprezint direcia de deplasare (de cutare) din


punctul curent vk, iar scalarul sk > 0 este lungimea pasului de cutare (de
deplasare).
Rescrierea relaiei (9.2.3) sub forma:
v k +1 v k = v k = s k d k , k = 0,1,... ,

(9.2.4)

116

Matematici asistate de calculator

Rezolvarea numeric a problemelor de optimizare

arat c aproximaia urmtoare, vk+1, se obine efectund asupra lui vk o corecie


vk determinat exclusiv de direcia dk i de pasul sk, adoptate la iteraia k.
n general, algoritmii de rezolvare numeric a PFR au urmtoarea
form (de exemplu, [I1]):
Fie v0 Rn o estimaie iniial a minimului.
Etapa 0 (iniializare). Se iniializeaz k = 0.
Etapa 1 (test de convergen). Dac sunt satisfcute condiiile de
convergen, algoritmul este terminat cu soluia vk.
Altfel, se trece la etapa 2.
Etapa 2 (determinarea direciei de cutare). Se calculeaz direcia de
cutare, dk.
Etapa 3 (calculul lungimii pasului). Se calculeaz lungimea pasului
k
s >0 astfel nct (a se vedea relaiile (9.2.2) i (9.2.3)):
f ( v k + s k d k ) < f ( v k ), k = 0,1,... .

(9.2.5)

Etapa 4 (actualizarea estimaiei minimului). Se efectueaz:


v v + s k d k , k = k + 1 i se trece la etapa 1.
Pentru convergena algoritmului ctre un minim local v* al funciei
obiectiv f trebuie impuse condiii att asupra lui f ct i asupra alegerii lui dk i
sk. Condiiile impuse funciei obiectiv sunt:
a) f este de clas C2 (de dou ori continuu difereniabil),
b) mulimea { v0 Rn | f(v) f(v0) } este nchis i mrginit.
Referitor la alegerea lui dk i sk, trebuie satisfcut condiia (9.2.5). n
plus, trebuie asigurat la fiecare iteraie o descretere suficient a lui f, iar dk
nu trebuie s fie ortogonal pe gradientul fv(vk). n aceste condiii, gradienii
obinui la iteraiile procedurii satisfac condiia (9.2.6):
k

|| f v ( v k ) ||= 0
lim
k

(9.2.6)

Observaie: n algoritmul prezentat a fost utilizat pentru gradientul


lui f calculat n punctul v* (este vorba despre derivata unei funcii scalare f de
variabil vectorial v) notaia urmtoare:
f
f v (v* ) =
v1

f
v 2

f
, v = [v1

v n v = v *

v2

T
! vn ] .

(9.2.7)

Datorit necesitii reducerii volumului de memorie i efortului de


calcul n vederea implementrii algoritmului prezentat, la fiecare iteraie, k,
informaia disponibil pentru stabilirea valorilor lui dk i sk este strict limitat i
are caracter local, adic se refer la valorile funciei f i eventual ale primelor
derivate ale acesteia n punctul curent vk. Din acest punct de vedere, metodele
de relaxare expuse n continuare i care difer ntre ele prin algoritmii de
alegere a parametrilor dk i sk, pot fi clasificate dup cum urmez:
A. Metodele de ordinul zero. Aceste metode necesit doar calculul valorilor FO
f n punctul vk i, eventual, n cteva puncte vecine (de explorare). Din aceast
categorie fac parte, spre exemplu, urmtoarele:
- metodele de cutare ciclic dup direciile axelor de coordonate,
- variantele mbuntite ale acestora de tip Hooke-Jeeves,
- metodele de direcii conjugate (Rosenbrock, Powell, Fletcher-Reeves
.a.),
- metoda simplex n varianta Nedler-Mead,

117

Matematici asistate de calculator

Rezolvarea numeric a problemelor de optimizare

metodele de cutare aleatoare care includ cele bazate pe algoritmi


genetici, cele de clire simulat (simulated annealing), etc.
Dei sunt relativ simple i uor de implementat, metodele de ordinul
zero nu sunt utilizate n problemele de conducere (decizie) optimal datorit
incapacitii de explorare a structurii particulare a acestor clase de probleme de
optimizare.
B. Metodele de ordinul I (de cutare liniar). Aceste metode necesit calculul
valorii FO i al gradientului acesteia n punctul curent vk. Din aceast categorie
fac parte:
- metodele de gradient,
- metodele de gradient conjugat,
- metodele de metric variabil.
Metodele de cutare liniar realizeaz un compromis favorabil ntre
simplitate i eficien, fiind utilizate cel mai des n practic.
C. Metodele de ordinul II (de tip Newton). Aceste metode necesit calculul
valorii FO, al gradientului i hessianului acesteia precum i inversarea
hessianului n punctul curent vk.
Observaie: Derivata a doua a unei funcii reale f de variabil vectorial
v, calculat n punctul v*, are forma unei matrici ptratice numit matricea lui
Hess (hessian):
2 f

2
v1
2 f

*
f vv ( v ) = v 2 v1
"
2
f
v n v1

2 f
v1v 2
2 f
v 22
2 f
v n v 2

2 f

v1 v n
2 f

"
, v = [v1
v 2 v n

2 f
"
v n2 v = v *
"

v2

T
! vn ] .

(9.2.8)

Dei sunt relativ complicate, metodele de tip Newton asigur o vitez


de convergen ridicat i o precizie ridicat de gsire a punctului de optim, v .
Observaie: n cele ce urmeaz vor fi utilizate notaiile consacrate:
f

= f ( v k ), f

k +1

= f ( v k + s k d k ), g k = f v ( v k ), G k = f vv ( v k ) .

(9.2.9)

9.3. Rezolvarea problemelor de programare matematic fr


restricii cu metode de cutare liniar
n acord cu paragraful anterior, trebuie asigurat descreterea valorii
FO f la fiecare iteraie. n acest scop, dk va fi aleas ca direcie de descretere
(de coborre) n v., adic satisfcnd condiia (9.3.1):
(g k ) T d k < 0, k = 0,1,... .

(9.3.1)

Dac dk este direcie de descretere, atunci exist un s > 0 astfel nct:


f ( v k + s d k ) < f ( v k ), k = 0,1,... .

(9.3.2)

n continuare vor fi discutate metode de calcul al (alegere a) pasului


de cutare sk care asigur o descretere suficient n f(vk).
A. Metode de cutare liniar exact. Aceste metode urmresc determinarea
valorii optimale a pasului de cutare sk, notat cu s k , din condiia realizrii
minimului fuciei obiectiv f n direcia dk:

118

Matematici asistate de calculator

Rezolvarea numeric a problemelor de optimizare

f ( v k + s k d k ) = min f ( v k + s d k ) .

(9.3.3)

s 0

Pentru rezolvarea problemei de optimizare (9.3.3) se consider pentru


simplitate funcia:
f 1 : R R, f 1 ( s ) = f ( v k + s d k ) f ( v k ) .

(9.3.4)

Deci condiia (9.3.3) poate fi scris sub forma simpl (9.3.5) de problem cu
restricii de tip egalitate (PRE):
PRE : s k = arg min f 1 ( s ) .

(9.3.5)

s 0

Pentru rezolvarea problemei (9.3.5) pot fi folosite metode specifice de


minimizare unidimensional. Aceste metode (de ordinul zero sau I) se bazeaz
fie pe explorare direct, fie pe interpolare.
A.1. Metode de explorare direct. Aceste metode constau n identificarea n
prealabil a unui interval [a0, b0] R+ care conine punctul de minim s k , urmat
de reducerea iterativ a lungimii acestui interval pn la alegerea unei precizii
impuse > 0 de localizare a lui s k . Dintre aceste metode sunt amintite:
- metoda seciunii de aur utilizeaz numai valori ale funciei f1,
- metoda biseciei este recomandat atunci cnd derivata funciei f1
poate fi calculat relativ simplu,
- metoda irului lui Fibonacci asigur realizarea unei lungimi minime
Li a intervalului n care se afl s k pentru fiecare i dat.
n continuare va fi prezentat metoda seciunii de aur, care asigur
avantajele de precizie satisfctoare, simplitate i stabilitate n raport cu erorile
de rotunjire.
Se presupune c funcia f1 este convex. Algoritmul metodei seciunii
de aur construiete ntr-un numr finit de pai un interval (de lungime cel mult
egal cu ) care conine punctul de minim s k . Pornind de la o aproximaie
iniial de forma [0, c], n etapele 1 6 este determinat un interval iniial [a0,
b0] care conine pe s k . Apoi acest interval este contractat progresiv pn la
satisfacerea condiiei de precizie Li , unde Li reprezint lungimea intervalului
[ai, bi], Li = bi ai, care conine pe s k . n final este obinut punctul de minim ca
medie aritmetic a limitelor intervalului de cutare:
s k = s =

a i + bi
.
2

(9.3.6)

Considernd c sunt date numerele c > 0 i > 0 i definind:


F=

1 + 5
3 5
, G = 1 F =
,
2
2

(9.3.7)

algoritmul metodei seciunii de aur const n urmtorii pai:


1. Se calculeaz f1(c).
2. Dac f1(c) 0, atunci a0 = 0, b0 = 0 i urmeaz salt la pasul 7.
3. Se iniializeaz j = 1, d1 = c.
4. Se calculeaz dj+1 = dj + c.
5. Se calculeaz f1(dj+1).
6. Dac f1(dj+1) f1(dj), atunci se iniializeaz limitele actuale ale intervalului de
cutare a0 = dj, b0 = dj+1 i urmeaz salt la pasul 7.
Altfel, se nlocuiete j cu j + 1 i se revine la pasul 4.
7. Se iniializeaz i = 0.

119

Matematici asistate de calculator

Rezolvarea numeric a problemelor de optimizare

8. Se calculeaz Li = bi ai.
Dac Li , atunci se calculeaz s k =

a i + bi
i algoritmul este terminat.
2

Altfel, se trece la pasul 9.


9. Se calculeaz ui = ai + FLi, vi = ai + GLi, f1(ui), f1(vi).
10. Dac f1(ui) < f1(vi), atunci se actualizeaz limitele intervalului de cutare:
ai+1 = ai, bi+1 = vi, apoi se nlocuiete i cu i + 1 i se revine la pasul 8.
Altfel, se actualizeaz limitele intervalului de cutare conform altei
formule: ai+1 = ui, bi+1 = bi, apoi se nlocuiete i cu i + 1 i se revine la pasul 8.
Observaii: 1. La fiecare iteraie i este de fapt necesar o singur
evaluare a funciei f.
2. Urmrind paii algoritmului, se constat c Li+1 = GLi, deci lungimea
intervalului scade n progresie aritmetic avnd raia G specific metodei
seciunii de aur.
A.2. Metode de interpolare. n ipoteza c funcia f1 este neted, cele mai
eficiente metode se bazeaz pe aproximarea lui f1 cu o funcie f* relativ simpl,
iar minimul acestei funcii poate fi calculat mai uor dect minimul lui f1 i
poate fi utilizat iterativ ca o estimaie a minimului funciei f1. De regul, f1 este
aleas o funcie polinomial de grad mic (doi sau trei), iar metoda de
minimizare este numit metoda interpolrii polinomiale (ptratice, respectiv
cubice).
Este preferat interpolarea ptratic atunci cnd sunt disponibile doar
valorile funciei sau atunci cnd este complicat evaluarea derivatei
direcionale a funciei f1, conform formulei obinute din (9.3.4):
'
f 1 (s) = f v T ( v k + s d k ) d k .

(9.3.8)

n aceast situaie funcia f* are expresia:


f * ( s) = c 2 s 2 + c1 s + c 0 , c 2 > 0 ,

(9.3.9)

cu abscisa punctului de minim:


s * =

c1
.
2c 2

(9.3.10)

Pentru determinarea coeficienilor din (9.3.9) sunt necesare trei valori


calculate pentru abscisele sk, sk1 i sk2, astfel c expresia explicit a minimului
devine:
s * = { f * ( s k 2 )[(s k ) 2 ( s k 1 ) 2 ] + f * ( s k 1 )[(s k 2 ) 2 ( s k ) 2 ] +
+ f * ( s k )[(s k 1 ) 2 ( s k 2 ) 2 ]} /{ f * ( s k 2 )( s k s k 1 ) +
*

+ f (s

k 1

)( s

k 2

s ) + f ( s )( s

k 1

k 2

(9.3.11)

)}

Aceast valoare va fi considerat ca o nou aproximare, sk+1, a minimului


funciei f1 i algoritmul este repetat pn la convergen. Exceptnd prima
iteraie, la fiecare iteraie metoda de interpolare ptratic necesit o evaluare a
FO.
Metodele robuste de minimiare unidimensional combin metoda
interpolrii polinomiale cu metodele de cutare care asigur reducerea
intervalului de incertitudine n care se afl minimul. Metodele din aceast
categorie sunt cunoscute sub numele de metode protejate.
Intrepolarea cubic este recomandat atunci cnd evaluarea derivatei
funciei f1 (gradientului lui f) nu este complicat.

120

Matematici asistate de calculator

Rezolvarea numeric a problemelor de optimizare

B. Metode de cutare liniar aproximativ. Aceste metode sunt utilizate n


majoritatea cazurilor cnd este urmrit doar asigurarea unei reduceri suficent
de mici a FO f n lungul direciei de cutare dk. n acest caz este dorit
realizarea unui compromis ntre efortul necesar determinrii unei valori ct mai
bune sk la fiecare iteraie i avantajul creat prin reducerea numrului de operaii
aritmetice. Una din metodele practice de minimizare aproximativ impune ca
derivata direcional n punctul ( v k + s k d k ) s fie suficent de mic n raport cu
cea din punctul v k :
| f v T ( v k + s k d k ) d k | (g k ) T d k ,

(9.3.12)

cu 0 < 1. Valoarea constantei determin precizia cu care sk aproximeaz


pe s k . Precizia crete pe msura scderii lui (pentru = 0 se obine cazul
particular al cutrii liniare exacte).
Pentru garantarea unei descreteri suficiente poate fi impus
suplimentar o condiie de forma (9.3.13):
f

k +1

s k (g k ) T d k ,

(9.3.13)

cu 0 < < 1/2.


Valorile uzuale pentru constantele i sunt:
10 5 10 1 , < < 1 .

(9.3.14)

n baza relaiilor (9.3.12) i (9.3.13) rezult o variant a algoritmului


metodei protejate de cutare liniar aproximativ. Algoritmul este destinat
calculul lungimii pasului i actualizrii minimului conform etapelor 3 i 4 ale
algoritmului general prezentat n paragraful 9.2 i const n parcurgerea
urmtorilor pai:
1. Se iniializeaz sk = s > 0.
2. Dac valoarea curent a lui sk satisface (9.3.12), atunci urmeaz salt la pasul
5.
Altfel, se trece la pasul 3.
3. Dac f v T ( v k + s k d k ) d k > 0 , atunci se determin o nou valoare a lui sk
utiliznd, de exemplu, interpolarea cubic i urmeaz salt la pasul 2.
Altfel, se trece la pasul 4.
4. Cazul f v T ( v k + s k d k ) d k < 0 .
Se nlocuiete v k cu ( v k + s k d k ) i se actualizeaz valoarea lui sk cu o formul
de extrapolare, prin nlocuire cu csk, n care 2 < c < 10. Urmeaz salt la pasul
2.
5. Dac valoarea curent sk satisface (9.3.13), atunci s k = s k i algoritmul este
terminat.
Observaii: 1. n algoritmul prezentat sunt repetate intepolarea i
extrapolarea pn la satisfacerea simultan a ambelor condiii, (9.3.12) i
(9.3.13).
2. O alegere a unei valori mici pentru (de exemplu, = 104) conduce
n majoritatea cazurilor la satisfacerea condiiei (9.3.13) atunci cnd (9.3.12)
este deja satisfcut.
C. Metoda Armijo. Aceast metod se bazeaz n principal pe condiia de
descretere suficient exprimat sub forma relaiei (9.3.13), echivalent cu:
f

k +1

s k (g k ) T d k .

(9.3.15)

121

Matematici asistate de calculator

Rezolvarea numeric a problemelor de optimizare

Condiia (9.3.15) poate fi interpretat grafic (fig.9.1) prin necesitatea ca


n planul <s, f> diferena f k +1 f k (notat cu (1)) s fie situat sub dreapta de
ecuaie f = s k (g k ) T d k (notat cu (2)). n fig.9.1 au fost marcate mulimile de
valori acceptabile pentru sk.
Algoritmul metodei Armijo const n paii prezentai n continuare:
1. Se efectueaz iniializarea: sk = s > 0. Se alege , 0 < < 1.
2. Dac valoarea curent a lui sk satisface (9.3.13), atunci s k = s k i algoritmul
este terminat.
Altfel, se trece la pasul 3.
3. Se actualizeaz valoarea lui sk prin nlocuire cu sk i urmeaz salt la pasul
2.

Fig.9.1. Punerea problemei n cazul metodei Armijo.


D. Metodele cvasi-Newton. Prin dezvoltarea n serie Taylor a funciei
f ( v k + s k d k ) n vecintarea punctului v k i reinerea doar a termenilor de
ordinul nti i doi, rezult:
f (v k + s k d k ) f

+ (g k ) T s k d k + (1 / 2)( s k d k ) T G k ( s k d k ) =

= f

+ (g k ) T s k d k + (1 / 2)( s k ) 2 (d k ) T G k d k

(9.3.16)

Minimul expresiei (9.3.16) poate fi obinut dac urmtoarea funcie de


variabil independent dk (direcia de cutare):
: R n R, (d k ) = (g k ) T s k d k + (1 / 2)(s k ) 2 (d k ) T G k d k ,

(9.3.17)

i atinge minimul. Anulnd gradientul lui , se obine punctul staionar d k *


care satisface sistemul de ecuaii liniare (9.3.18):
d k * (d k * ) = s k g k + ( s k ) 2 G k d k * = 0 s k G k d k * = g k .

(9.3.18)

n acest context, o metod de minimizare cu direcia de cutare optimal d k *


definit de (9.3.18) este numit metod Newton, soluia d k * este numit
direcie Newton, iar sistemul de ecuaii liniare (9.3.18) este numit ecuaie
Newton.
Metodele cvasi-Newton construiesc iterativ o aproximare Bk, pozitiv
definit, cu notaia Bk > 0, a matricei hessian Gk, fr a calcula explicit pe Gk.
Direcia de cutare d k este determinat ca soluie a unui sistem analog lui
(9.3.18):
s k B k d k = g k ,

(9.3.19)

n care pasul de cutare sk este determinat cu una din metodele de cutare


liniar descrise la punctele A, B i C.
Se introduce notaia:
t k = v k +1 v k = s k d k ,

(9.3.20)

122

Matematici asistate de calculator

Rezolvarea numeric a problemelor de optimizare

pentru vectorul care exprim modificarea n vk la iteraia k. Pentru modificri


mici n vk poate fi scris urmtoarea relaie aproximativ:
f v ( v k +1 ) f v ( v k ) f vv ( v k +1 )( v k +1 v k ) .

(9.3.21)

Notnd:
y k = f v ( v k +1 ) f v ( v k ) = g k +1 g k

(9.3.22)

i innd seama de faptul c Bk+1 este o aproximaie pentru hessianul f vv ( v k +1 ) ,


relaia (9.3.21) se transform n ecuaia cvasi-Newton:
B k +1t k = y k .

(9.3.23)

Pentru Bk+1 este impus n general i condiia de a fi simetric i pozitiv


definit n vederea asigurrii unei direcii dk de descretere pentru f. Spre
exemplu, poate fi impus condiia ca Bk+1 s fie soluia urmtoarei PO:
k+1
PRE : B k +1 = arg min || B k +1 B k || F supus la B simetric i
B k +1

Bk+1 satisface (9.3.23),

(9.3.24)

n care ||A||F reprezint norma Frobenius ponderat F a matricei


A = (a ij ) i =1, n , cu expresia:
j =1, m

|| A || F =

a ij 2

(9.3.25)

i =1 j =1

Atunci B k +1 este dat de formula Powell-simetric-Broyden:


B k +1 = B k +

1
k T

(t ) t k

[(y k B k t k )(t k ) T + t k (y k B k t k ) T ]

(y k B k t k ) T t k
[(t k ) T t k ] 2

.
k

(9.3.26)

k T

t (t )

Prin utilizarea unor alte variante de norme Frobenius ponderate rezult


dou formule cunoscute:
- formula Davidon-Fletcher-Powell:
B k +1 = B k +

1
k T

(y ) t k

[(y k B k t k )(y k ) T + y k (y k B k t k ) T ]

(y k B k t k ) T t k
[(y k ) T t k ] 2

;
k

(9.3.27)

k T

y (y )

- formula Broyden-Fletcher-Goldfarb-Shanno:
B k +1 = B k +

1
k T

(y ) t

y k (y k ) T

1
k T

k k

(t ) B t

B k t k (t k ) T B k ;

(9.3.28)

ambele au proprietatea c dac Bk > 0 i (y k ) T t k > 0 , atunci B k +1 > 0 .


Determinarea direciei de cutare dk presupune rezolvarea unui sistem
de ecuaii liniare la fiecare iteraie. De aceea, primele versiuni ale metodelor
cvasi-Newton au fost formulate n funcie de inversa hessianului, Hk = (Gk)1.
n aceste condiii, direcia de cutare este obinut prin rescrierea ecuaiei
(9.3.18):
d k = ( s k ) 1 H k g k ,

(9.3.29)

iar condiia cvasi-Newton (9.3.23) devine:

123

Matematici asistate de calculator

Rezolvarea numeric a problemelor de optimizare

H k +1 y k = t k .

(9.3.30)

Problema principal n implementarea algoritmilor dedicai metodelor


cvasi-Newton const n pstrarea pozitivitii matricelor Bk sau Hk.
Algoritmul de calcul al punctului de minim v al funciei obiectiv f prin metoda
cvasi-Newton cu pas variabil este alctuit din urmtorii pai:
0. Se alege un punct iniial v0 Rn.
1. Se iniializeaz k = 0.
2. Se calculeaz g k = f v ( v k ) .
Dac || g k ||= 0 , atunci v = v k i algoritmul este oprit.
Altfel, se trece la pasul 3.
3. Se calculeaz Bk cu una din metodele cunoscute.
Dac Bk > 0, atunci se trece la pasul 4.
Altfel, se calculeaz d k = g k i urmeaz salt la pasul 5.
4. Se determin direcia dk rezolvnd sistemul liniar B k d k = g k .
5. Se determin pasul sk utiliznd unul din algoritmii prezentai n paragrafele A
sau B.
6. Se calculeaz v k +1 = v k + s k d k , se actualizeaz k prin nlocuirea lui k cu k+1
i se revine la pasul 2.
E. Metodele de gradient. Aceste metode sunt tipic de ordinul I i sunt
caracterizate prin alegerea n fiecare punct curent vk a unei direcii de deplasare
dk opus gradientului local:
d k = g k .

(9.3.31)

Dezvoltnd n serie Taylor funcia


punctului v

f (v k + s k d k )

n vecintarea

i reinnd doar termenii de ordinul nti, se obine:

f ( v k + s k d k ) f ( v k ) + (g k ) T s k d k .

(9.3.32)

ns,
(g k ) T s k d k = s k (g k ) T d k s k || g k || 2 , d k ,

(9.3.33)

egalitatea avnd loc numai n cazul (9.3.31). Prin urmare, pentru orice pas sk >
0 alegerea direciei de cutare conform relaiei (9.3.31) asigur local
descreterea maxim posibil a funciei obiectiv f.
Algoritmul de calcul al punctului de minim v prin metoda
gradientului este prezentat n cele ce urmeaz:
0. Se alege un punct iniial v0 Rn astfel nct mulimea { v Rn | f(v) f(v0) }
s fie mrginit.
1. Se iniializeaz k = 0.
2. Se calculeaz g k = f v ( v k ) .
Dac || g k ||= 0 , atunci v = v k i algoritmul este oprit.
Altfel, se alege direcia d k = g k i se trece la pasul 3.
3. Se determin pasul sk utiliznd unul din algoritmii din paragrafele A sau B.
4. Se calculeaz v k +1 = v k + s k d k , se actualizeaz k prin nlocuirea lui k cu k+1
i se revine la pasul 2.
F. Metodele de gradient conjugat. Aceste metode au principalul avantaj c au
o convergen bun, iar numrul de operaii aritmetice necesare pe iteraie este
relativ redus. Prin urmare, aceste metode sunt utilizabile i n rezolvarea unor
PO de dimensiuni mari.

124

Matematici asistate de calculator

Rezolvarea numeric a problemelor de optimizare

Direcia de cutare pentru metodele de gradient conjugat este obinut


pe baza relaiei (9.3.34):
d k = g k + k d k 1 , k = 1,2,... ,

(9.3.34)

cu d 0 = g 0 , iar parametrul scalar k este specific metodei i contribuie la


accelerarea vitezei de convergen.
Parametrul k are urmtoarele expresii posibile care conduc la diverse
variante de metode de gradient conjugat:
- pentru metoda Fletcher-Reeves:
k =

(g k ) T g k
(g k 1 ) T g k 1

(9.3.35)

- pentru metoda Polak-Ribire:


k =

(g k ) T (g k g k 1 )
(g k 1 ) T g k 1

(9.3.36)

- pentru metoda Hestenes-Stiefel:


k =

(g k ) T (g k g k 1 )
(g k g k 1 ) T d k 1

(9.3.37)

Din motive de convergen, pentru implementrile practice este


recomandat reiniializarea algoritmului dup un numr de l n + 1 iteraii,
folosindu-se l = 0. Din aceleai motive este recomandat utilizarea unei
proceduri de cutare liniar exact pentru determinarea lungimii sk a pasului.
Algoritmul de calcul al punctului de minim v prin metoda
gradientului conjugat este prezentat n cele ce urmeaz i are urmtorii pai:
0. Se alege un punct iniial v0 Rn.
1. Se iniializeaz k = 0.
2. Se calculeaz g 0 = f v ( v 0 ) .
Dac || g 0 ||= 0 , atunci v = v 0 i algoritmul este oprit.
Altfel, se alege direcia d 0 = g 0 i se trece la pasul 3.
3. Se determin pasul optimal s k = s utiliznd unul din algoritmii din
paragraful A.
4. Se calculeaz v k +1 = v k + s k d k .
5. Se calculeaz g k +1 = f v ( v k +1 ) .
Dac || g k +1 ||= 0 , atunci v = v k +1 i algoritmul este oprit.
Altfel, se trece la pasul 6.
6. Se calculeaz k+1 cu una din formulele cunoscute i direcia de cutare cu
formula d k +1 = g k +1 + k +1d k .
Apoi, se actualizeaz k prin nlocuirea lui k cu k+1 i se revine la pasul 3.
Metoda gradientului conjugat poate fi folosit i n rezolvarea
sistemelor de ecuaii liniare (de exemplu, [P2]).

9.4. Rezolvarea problemelor de programare matematic fr


restricii cu metode de ordinul II
Metodele de ordinul II, cunoscute i sub numele de metode de tip
Newton, utilizeaz un model ptratic al funciei obiectiv f de forma (a se vedea
i relaia (9.3.16)):

125

Matematici asistate de calculator

f (v k + s k d k ) f

Rezolvarea numeric a problemelor de optimizare

+ s k (g k ) T d k + (1 / 2)(s k ) 2 (d k ) T G k d k .

(9.4.1)

Minimul FO f este obinut dac urmtoarea funcie ptratic i atinge minimul


n raport cu direcia de cutare dk:
: R n R, (d k ) = s k (g k ) T d k + (1 / 2)( s k ) 2 (d k ) T G k d k .

(9.4.2)

Prin anularea gradientului lui n punctul staionar d k * , se obine ecuaia


Newton (a se vedea relaia (9.3.18)):
s k G k d k * = g k .

(9.4.3)

Dac G este pozitiv definit, atunci minimul funciei ptratice este


obinut ntr-un singur pas din orice punct de iniializare. Rezult, deci, o
convergen local bun a metodei Newton (concentrat pe relaia (9.4.3)),
fapt pentru care metodele de tip Newton sunt deosebit de atractive. n plus,
datorit disponibilitii derivatelor de ordinul nti i doi, metodele de tip
Newton permit verificarea condiiilor suficiente de optimalitate.
Cu toate aceste avantaje, metodele de tip Newton n forma lor original
(s = 1) au urmtoarele dezavantaje:
k

1. Dac matricea Gk este singular, metodele de tip Newton nu sunt


aplicabile. Aceast situaie poate apare atunci cnd f este liniar pe anumite
poriuni, ceea ce implic Gk = 0.
2. Dac Gk > 0, este posibil ca direcia Newton d k * s nu mai fie o
direcie de descretere, adic f ( v k + s k d k ) f ( v k ) . Deci, aproximaia ptratic
este valabil doar ntr-un domeniu limitat.
3. Dac hessianul Gk este inversabil dar nedefinit, metodele de tip
Newton tind s convearg att ctre minim ct i ctre maxime locale.
n cele ce urmeaz vor fi prezentate dou metode care reprezint
modificri ale metodei Newton originale. Ambele metode asigur o
convergen global i permit utilizarea unor direcii de curbur negativ d k n
puncte de tip a, unde d k = 0 i Gk este nedefinit; o astfel de direcie satisface
(9.4.4):
(d k ) T G k d k < 0

(9.4.4)

i servete ntotdeauna reducerii valorii lui f n lungul lui d k .


A. Metoda Newton modificat. Aceast metod utilizeaz un hessian modificat
G k > 0 n locul unui hessian nedefinit. Direcia de cutare poate fi obinut
prin rezolvarea ecuaiei (9.4.5):
s k G k d k = g k ,

(9.4.5)

a crei soluie este o direcie de descretere deoarece G k > 0 .


Dac G k > 0 , atunci se ia G k = G k .
n cazul metodelor de tip Newon lungimea sk a pasului este determinat
cu o metod de cutare liniar din cadrul celor studiate n paragraful 9.3.
Rezolvarea ecuaiilor (9.4.5) presupune utilizarea unei factorizri
convenabile care s permit i verificarea pozitivitii lui G k . Un exemplu de
astfel de factorizare este factorizarea L D LT modificat care permite
verificarea pozitivitii lui G k i formarea matricei:
G k = L D LT = G k + H ,

(9.4.6)

126

Matematici asistate de calculator

Rezolvarea numeric a problemelor de optimizare

n care: H = diag(hi), D = diag(di), L este matrice inferior triunghiular cu


elemente diagonale unitate, hi 0, di > , | l ik | / d k , i > k, i = 1, n , iar > 0
i > 0 sunt alese convenabil (valoarea lui trebuie s fie suficient de mare
pentru ca G k s nu fie modificat inutil).
B. Metoda regiunii de ncredere n model. Aceast metod utilizeaz un model
ptratic ntr-o regiune limitat, numit de ncredere i referitoare la norma
direciei de cutare. Astfel, n punctul vk direcia dk este soluia urmtoarei
probleme de optimizare:
PRE : d k = arg min J = k (d) = f

+ (g k ) T d + (1 / 2)d T G k d ,

supus la || d || k ,

(9.4.7)

n care k este o margine dat, care specific raza sferei cu centrul n vk, unde
este valabil aproximarea k (d) pentru f ( v k + d) .
Poate fi observat faptul c n cadrul acestei metode lungimea pasului
este egal cu unitatea.
Algoritmul general al metodei regiunii de ncredere pentru PFR
pornete cu elementele date: v0 Rn, 0 > 0, 0 < < 1 i const n parcurgerea
urmtorilor pai:
0. Iniializare. k = 0.
1. Test de convergen. Dac sunt satisfcute condiiile de convergen,
algoritmul este terminat cu soluia vk.
Altfel, se trece la pasul 2.
2. Determinarea direciei de cutare. Se calculeaz direcia de cutare dk ca
soluie a PO (9.4.7).
3. Calculul raportului dintre reducerea efectiv i cea predictat de model. Se
calculeaz:
k =

f (v k + d k ) f (v k )
k (d k ) k (0)

(9.4.8)

4. Actualizarea estimaiei minimului. Dac k > , atunci se actualizeaz


v k +1 = v k + d k .

Altfel, v k +1 = v k .
5. Actualizarea modelului. Se actualizeaz k, se actualizeaz k prin nlocuire a
lui k cu k+1 i se revine la pasul 1.
Pentru aceast metod este caracteristic faptul c problema determinrii
direciei de cutare depinde numai de parametrul de control k. Deci, nu sunt
necesare modificri ale modelului local pentru controlul lungimii pasului, iar
toate ajustrile sunt efectuate automat prin actualizarea lui k (la pasul 5) pe
baza informaiei coninute n k .

9.5. Rezolvarea numeric a problemelor de programare liniar


Problemele de programare liniar sunt probleme de optimizare cu
restricii de tip egalitate i de tip inegalitate (probleme cu restricii de tip
egalitate i de tip inegalitate, PREI), cu aplicaii n multe domenii i considerate
ca parte a problemelor de cercetare operaional. Definirea unei probleme de
programare liniar n varianta standard este urmtoarea:
PREI : v = arg min J = c T v , supus la A v = b, v 0 ,
v

127

(9.5.1)

Matematici asistate de calculator

Rezolvarea numeric a problemelor de optimizare

n care v este vectorul coloan cu n componente al variabilelor. Constantele


sunt date sub forma unei matrice coloan b = [b1 b2 ... bm ] T , a matricei
A = [a ij ]i =1, m i a matricei linie c T = [c1

c2

... c n ] .

j =1, n

Observaii: 1. Denumirea de liniar acordat problemei de optimizare


este datorat faptului c FO este liniar i restriciile de tip egalitate reprezint
un sistem de ecuaii liniare.
2. Importana PO (9.5.1) rezid n faptul c ea corespunde scopului
general de optimizare a utilizrii unor resurse rare n condiiile ndeplinirii unui
anumit obiectiv.
3. n afar de forma standard a problemei de programare liniar, n
practic sunt ntlnite i alte forme care pot fi aduse la forma (9.5.1) fr
dificulti majore. De exemplu, dac restriciile sunt doar de tip inegalitate
ntr-o formulare iniial a problemei, acestea pot fi transformate n restricii de
tip egalitate prin adunarea sau scderea unor variabile (elemente programabile)
suplimentare aferente problemei. Pe de alt parte, dac obiectivul este de
maximizare a FO J, atunci PO se transform ntr-o problem de minimizare
prin schimbarea semnului matricei c.
Toate metodele de rezolvare numeric a problemelor de programare
liniar sunt bazate pe faptul c soluia problemei se afl pe frontiera mulimii
soluiilor admisibile. Una din cele mai vechi metode este metoda simplex
rezolvat cu algoritmul lui Dantzig (de exemplu, [P5]), care prezint
dezavantajul creterii complexitii pe msura creterii numrului variabilelor
asociate problemei. De remarcat c pentru un numr de dou variabile
problemele de programare liniar pot fi rezolvate convenabil prin metode grafoanalitice utiliznd interpretri specifice geometriei analitice.
n continuare vor fi prezentate aspecte privind metoda lui Karmakar n
varianta lui Barnes, referit n [P2]. Metoda transform problema de
optimizare ntr-o form mai convenabil i apoi efectueaz cutarea n
interiorul mulimii soluiilor admisibile utiliznd o direcie de cutare ctre
frontiera acestei regiuni. ntruct aceast metod utilizeaz puncte interioare,
este des cunoscut sub denumirea de metod de punct interior. Pentru
garantarea faptului c metoda pornete dintr-un punct iniial interior v0 > 0 se
adaug o coloan matricei A, ale crei elemente se obin prin scderea sumei
coloanelor matricei A din matricea coloan b. Apoi, acestei coloane
suplimentare i se ataeaz o variabil suplimentar i un element suplimentar n
matricea cT. Pentru a garanta faptul c variabila suplimentar tinde ctre zero
atunci cnd este atins optimul, valoarea acestui element suplimentar trebuie s
fie foarte mare. Conform acestei abordri este evident c v0 = [1 1 ... 1]T se
ncadreaz n restricia menionat, v0 > 0.
Prin urmare, algoritmul de rezolvare a problemei de programare
liniar n varianta Barnes conine urmtorii pai:
0. Presupunnd c PO are n variabile, se fac iniializrile:
n

a i , n +1 = bi a ij , cn+1 = 100000 , v = [1 1 ... 1] , k = 0 .


0

(9.5.2)

j =1

1. Se iniializeaz Dk = diag(vk), cu vk = [v1k v2k ... vnk]T, i se calculeaz un


punct mbuntit (din punctul de vedere al reducerii valorii FO) cu formula
(9.5.3):

128

Matematici asistate de calculator


v k +1 = v k

s ( D k ) 2 (c A T k )
|| D k (c A T k ) ||

Rezolvarea numeric a problemelor de optimizare

(9.5.3)

unde prin norma matricei a fost notat cea mai mare valoare singular a
acesteia, vectorul k este dat de (9.5.4):
k = [ A(Dk ) 2 AT ]1 A(Dk ) 2 c ,

(9.5.4)

iar pasul s este ales astfel nct este satisfcut condiia:


s = min ||
j =1, n

D k (c A T k )
k

v j (c j A j )

|| , supus la (c j A j T k ) > 0, j = 1, n ,

(9.5.5)

n care Aj este a j-a coloan a matricei A i este o constant de valoare orict


de mic.
Trebuie remarcat faptul c vectorul k reprezint o valoare aproximativ a
soluiei problemei duale (descris n continuare).
2. Dac valorile FO obinute prin problema primal i cea dual sunt
aproximativ egale, atunci v = v k +1 i algoritmul este oprit.
Altfel, se nlocuiete k cu k + 1 i se revine la pasul 1.
Observaii: 1. n pasul 2 al algoritmului a fost folosit un rezultat
important n programarea liniar conform cruia oricrei probleme primale
(adic problema original din (9.5.1)) i corespunde o problem dual i n caz
c exist o soluie a PO, valorile optimale ale FO sunt egale. Alte variante de
rezolvare a PO utilizeaz modaliti diferite de terminare a procesului iterativ
de calcul.
2. Algoritmul asigur mbuntirea iterativ a soluiei pornind de la
punctul iniial v0 i calculul valorii maxime a pasului care garanteaz c vk > 0
n direcia dat de (D k ) 2 (c A T k ) . Aceast direcie reprezint elementul
esenial al algoritmului i este de fapt proiecia coeficienilor FO n spaiul
restriciilor.

9.6. Algoritmi genetici n rezolvarea problemelor de programare


matematic
Algoritmii genetici (AG), introdui de J. Holland n 1975, fac parte
dintr-o serie de metode moderne de cutare, care abordeaz cu succes probleme
de optimizare complexe. Ei sunt bazai pe paradigma biologic a evoluiei
vieii, mai exact pe mecanica seleciei naturale i a geneticii, rezultnd
algoritmi n care este implicat i flerul inovator al cutrii umane [G5].
Gndirea evolutiv este extins astzi n afara tiinelor vieii. Astfel, evoluia
este privit ca o metod de optimizare bazat pe populaie, putnd fi simulat
utiliznd metode numerice asistate de calculator.
Scopul acestui paragraf este de a introduce ideile de baz n
mecanismele de operare din cadrul algoritmilor genetici, cu accent pe oferirea
unui set de funcii Matlab care implementeaz proprietile eseniale ale unui
AG. Pentru urmrirea unor aspecte detaliate privind AG sunt recomandate
lucrrile [D6] i [G5].
n cele ce urmeaz va fi descris terminologia privind AG i legtura cu
rezolvarea asistat de calculator a problemelor de optimizare, n particular a
celor de programare matematic.
AG opereaz cu o populaie iniial care corespunde, de exemplu,
valorilor numerice ale unei anumite variabile (unui anumit element

129

Matematici asistate de calculator

Rezolvarea numeric a problemelor de optimizare

programabil). Dimensiunea acestei populaii nu este constant i este n general


dependent de problema de rezolvat. Membrii acestei populaii sunt de regul
iruri alctuite din 0 i 1, adic iruri binare. n fig.9.2 este prezentat un
exemplu de populaie iniial ntr-o prim generaie i avnd dimensiune mic
(10):
1100010101
0000100010
1000000001
0001100010
1101110101
0001000100
1111111000
0000000001
1100001000
1111111111
Fig.9.2. Exemplu de populaie iniial.
ns, n practic dimensiunea populaiei este mult mai mare dect cea
din exemplul prezentat. n plus, irurile au lungime mai mare.
irurile binare pot reprezenta valorile codate ale unei sau unor variabile
de interes.
Populaia iniial este generat aleator, iar pentru caracterizarea
acesteia poate fi utilizat terminologia specific geneticii. Astfel, fiecare ir n
cadrul populaiei corespunde unui cromozom i fiecare bit (element binar) al
irului corespunde unei gene.
Privii din punctul de vedere al problemelor de optimizare, cromozomii
reprezint variabilele problemei. Cromozomii reprezint elemente ale unei
structuri funcionale numite genom. Fiecare genom i ncepe ciclul de via ca
o mulime de cromozomi generai aleator. Colecia genomilor alctuiete
populaia.
Un AG efectueaz operaii specifice n cadrul unui proces de
reproducere guvernat de ctre operatori genetici. Soluiile noi sunt create prin
selecia i recombinarea cromozomilor existeni, n vederea optimizrii unei
funcii de evaluare (funcie de performan, fitness), aleas pentru fiecare
problem n parte. De exemplu, dac problema de rezolvat este o problem de
optimizare, funcia de evaluare ar putea fi funcia obiectiv sau inversul acesteia.
Semnificaia funciei respective este irelevant pentru algoritm, ceea ce
conteaz fiind doar valoarea sa.
n tabelul 9.1 este prezentat o populaie format din 10 cromozomi,
fiecare codat cu cte 10 bii, precum i valorile succesive ale funciei de
evaluare.
Tabelul 9.1. Exemplu de populaie i funcia de evaluare aferent.
Nr.
crt.
1
2
3
4
5
6

Cromozomi
1100010101
0000100010
1000000001
0001100010
1101110101
0001000100

130

Funcie de
evaluare
9
7
6
5
5
4

Matematici asistate de calculator

7
8
9
10

Rezolvarea numeric a problemelor de optimizare

1111111000
0000000001
1100001000
1111111111

3
3
2
1
Total: 45

Plecnd de la populaia iniial, trebuie dezvoltat o populaie nou,


fiecare populaie nou generat prin reproducere nlocuind generaia anterioar.
n acest proces funcia de evaluare global se va ndrepta spre optim i va oferi
soluii din ce n ce mai bune ale problemei. Procesul este analog teoriei neodarwiniste a evoluiei n biologie, care afirm c organismele (sistemele)
adaptate continuu la schimbrile de mediu au ansele cele mai mari de
supravieuire.
Cei mai des folosii operatori genetici n dezvoltarea noilor populaii
sunt selecia, ncruciarea, inversiunea i mutaia. Aceti operatori vor fi
descrii n cele ce urmeaz. Trebuie remarcat c operatorii genetici acioneaz
asupra genomilor i, n particular, asupra cromozomilor.
1. Selecia. Operatorul de selecie (natural) este destinat alegerii unui set de
cromozomi (iruri) din populaie pentru a-i (a le) reproduce. Membrii populaiei
sunt alei pentru reproducere pe baza valorii funciei lor de evaluare, iar
membrilor populaiei le este acordat o probabilitate de reproducere
proporional cu valoarea funciei lor de evaluare fiind preferai cei cu o
valoare ct mai mare a funciei de evaluare.
Exist trei tehnici de selecie:
Selecia pe baza principiului ruletei, care modeleaz mecanismul
seleciei naturale, n care cromozomii cu o funcie de evaluare mai
mare au o ans mai mare de a fi alei. Situaia este prezentat n
fig.9.3 n legtur cu populaia din fig.9.2; de exemplu, cromozomul 1
are probabilitatea de 20 % (9 / 45) de a fi selectat.
Selecia pe baza rangului, n care probabilitatea de a fi ales este o
funcie liniar de locul ocupat de individ (cromozom) n cadrul
populaiei. Avantajul const n faptul c nu este necesar scalarea
permanent a funciei de evaluare, care este obligatorie la selecia pe
baza principiului ruletei (pentru prevenirea apariiei indivizilor
dominani, care conduc la convergena spre o soluie care nu este
optimal).
Selecia elitist, tehnic euristic destinat reinerii ntotdeauna a celui
mai bun cromozom al populaiei. Aceast tehnic va garanta
convergena asimptotic spre un minim global, ns viteza de
convergen difer de la o problem de optimizare la alta.

131

Matematici asistate de calculator

Rezolvarea numeric a problemelor de optimizare

Fig.9.3. Aplicarea principiului ruletei relativ la populaia din fig.9.2.


2. ncruciarea. Acest operator creeaz noi membri (urmai, succesori) ai
populaiei prin schimbul unor gene provenind din doi cromozomi-printe (dou
iruri-printe) c1 i c2 selectate / selectai n prealabil pe baza funciei lor de
evaluare.
Exist mai multe variante de implementare a operatorului de
ncruciare, utiliznd un singur punct de ncruciare sau mai multe. Punctele de
ncruciare sunt alese aleator. n cele ce urmeaz sunt prezentate dou exemple
de aplicare a operatorului de ncruciare, n care poziia bitului (genei) este
considerat dinspre stnga spre dreapta.
Exemplul 9.1: ncruciarea cu un singur punct de ncruciare. Fie a=2
punctul de ncruciare (dup ce-l de-al doilea bit). Se consider c au fost
selectai cromozomii:
c1: 1 1 | 0 0 0 1 0 1 0 1, c2: 0 0 | 0 0 1 0 0 0 1 0.
n urma aplicrii operatorului de ncruciare rezult succesorii:
u1: 1 1 | 0 0 1 0 0 0 1 0, u2: 0 0 | 0 0 0 1 0 1 0 1.
Exemplul 9.2: ncruciarea cu dou puncte de ncruciare. Se
consider c punctele de ncruciare sunt a = 2 i a = 7 (ntre ce-a de-a doua i
cea de-a aptea gen). Se consider c au fost selectai aceiai cromozomi:
c1: 1 1 | 0 0 0 1 0 1 | 0 1, c2: 0 0 | 0 0 1 0 0 0 | 1 0.
n urma aplicrii operatorului de ncruciare rezult cromozomii din noua
generaie:
u1: 1 1 | 0 0 1 0 0 0 | 0 1, u2: 0 0 | 0 0 0 1 0 1 | 1 0.
Fiecrui cromozom i corespunde o anumit probabilitate de
ncruciare, de regul n domeniul [0.6, 0.95].
Aplicnd operatorul de ncruciare populaiei, este obinut o nou
generaie, fapt ilustrat din cele dou exemple.
3. Inversiunea. Acest operator alege dou puncte din cromozom i inverseaz
ordinea genelor situate ntre aceste puncte, numite puncte de inversiune i alese
aleator. Noul cromozom este obinut concatennd genele reordonate.
De exemplu, pornind de la cromozomul:
c1: 1 | 1 0 0 | 0 1 0 1 0 1
i schimbnd ordinea genelor ntre punctele 2 i 4, se obine noul cromozom:
u1: 1 | 0 0 1 | 0 1 0 1 0 1.

132

Matematici asistate de calculator

Rezolvarea numeric a problemelor de optimizare

4. Mutaia. Procesul final de obinere a unei generaii este reprezentat de


mutaie, cel mai simplu operator genetic. Acest operator basculeaz aleatoriu o
anumit gen (un anumit bit) a / al cromozomului. Scopul su este introducerea
a noi soluii (iruri) n cadrul populaiei i protejarea AG mpotriva pierderii
irevocabile i accidentale a informaiei datorit unor ncruciri nepotrivite.
Operatorul de mutaie este utilizat foarte rar, motiv pentru care aceast
probabilitate de modificare a unui ir este meninut la un nivel foarte sczut,
ntre 0.001 i 0.01. Totui, operatorul de mutaie contribuie la evitarea
punctelor de extrem local.
Operatorii genetici, cu ncruciarea i mutaia n rol principal, asigur
principalele diferene dintre algoritmii genetici i metodele numerice de
descretere utilizate n rezolvarea problemelor de optimizare. Pornind de la o
populaie iniial i utiliznd operatorii genetici, AG dezvolt generaii noi care
exploreaz rapid mulimea soluiilor admisibile (regiunea de interes) n vederea
obinerii soluiei optimale. Acest lucru subliniaz avantajele utilizrii AG fa
de metodele menionate:
rezolvarea numeric a problemelor de optimizare dificile din punctul de
vedere al expresiilor funciei obiectiv i restriciilor,
rezolvarea numeric a PO caracterizate prin FO cu mai multe extreme
locale, maxime i minime.
n aceste situaii metodele numerice de descretere pot localiza doar minime
(maxime) locale, iar AG pot localiza minime (maxime) globale dei nu este
garantat obinerea lor.
n cele ce urmeaz vor fi prezentate pe scurt aspectele teoretice care
justific avantajele utilizrii AG, concentrate asupra noiunilor de scheme i
blocuri.
O schem este un ablon (form) care descrie o submulime a unui
cromozom avnd asemnari n poziii diferite ale cromozomulului iniial.
Introducnd n alfabet metasimbolul indiferent (*), schema asigur o
modalitate compact de a analiza similitudinile bine definite ntre cromozomi.
Motivul utilizrii schemelor rezid din studiul structurii cromozomilor
generai n cadrul unui AG, situaie n care pot fi observate anumite abloane
(forme) de comportament. Adeseori cromozomii cu valori mari ale valorii
funciei de evaluare au trsturi comune caracterizabile prin anumite combinaii
ale genelor (irurilor binare). De exemplu, acceptnd un numr de 9 gene n
cadrul fiecrui cromozom, cromozomii (irurile) cu cele mai mari valori ale
funciei de evaluare pot avea trstura comun caracterizat prin faptul c fie
ncep cu 11 i sunt terminai (terminate) cu 0 fie c la mijlocul cromozomului
ti cei trei bii sunt 0. Cromozomii avnd aceste structuri pot fi rprezentai sub
forma unor scheme, 11******0 respectiv ***000***.
n plus, motivul interesului acordat schemelor este legat de necesitatea
studiului propagrii acestor tipuri de cromozomi care au structur comun i
sunt asociate cu valori mari ale funciei de evaluare.
Lungimea unei scheme este definit ca distana dintre cele mai
exterioare valori ale genelor specificate.
n continuare sunt considerai cromozomi de lungime l, genele fiind 0 i
1. n acest caz, un cromozom este un element din spaiul {0,1}l i schema
reprezint un element S din spatiul {0,1,*}l , adic o secven de lungime l
constituit din simbolurile 0, 1 i (*). Un cromozom este o instan (un
exemplu) a (al) unei scheme dac fiecrei poziii din cromozom diferite de (*)

133

Matematici asistate de calculator

Rezolvarea numeric a problemelor de optimizare

i corespunde o poziie a schemei avnd aceeai valoare. De exemplu, schema


0*1** definete opt cromozomi.
n general, pentru un alfabet de cardinalitate k, exist (k + 1) l scheme,
unde l este lungimea cromozomului. De asemenea, un cromozom de lungime l
aparine la 2 l scheme diferite, deoarece fiecare poziie a sa poate lua valoarea
curent sau poate fi simbolul (*). Deci, pentru o populaie de n cromomzomi,
aceasta conine un numr ntre 2 l i n 2 l scheme. n acest fel, populaii cu
mrime moderat conin informaii importante relative la similitudinile
semnificative menionate.
Fiecrei scheme i este asociat o funcie de performan (de evaluare)
notat cu f S , care reprezint evaluarea medie a membrilor populaiei.
Fiecare schem are o lungime definitorie , care este distana dintre
primul i ultimul simbol specific, diferite de *.
Poate fi observat c ncruciarea tinde s rup schemele avnd lungime
mare dac punctele de tiere sunt alese uniform aleatoriu. De exemplu, schema
1*****01 are o probabilitate mai mare de a fi tiat dect schema *****10*
(6/7 fa de 1/7). Poate fi domonstrat c probabilitatea p S de supravieuire
n urma ncrucirii, pentru o schem de lungime definitorie n cazul unui
singur punct de ncruciare, satisface inegalitatea (9.6.1):
p S 1 pC

,
l 1

(9.6.1)

n care pC este probabilitatea de ncruciare iar l reprezint lungimea schemei.


Probabilitatea de ncruciare pC este un parametru specific AG.
Fie m(t) numrul de apariii ale unei scheme S n populaia de la
momentul t. Efectul seleciei asupra acestui numr de apariii este dat de
formula (9.6.2):
m(t + 1) = n m(t )

fS
n

fi

(9.6.2)

i =1

unde f S este funcia de performan a schemei S la momentul t, iar suma de la


numitor reprezint funcia de performan total a populaiei.
Funcia de performan medie a ntregii populaii este notat cu f med i
are urmtoarea expresie:
f med =

1 n
fi .
n i =1

(9.6.3)

Utiliznd f med , ecuaia de evoluie a numrului de apariii ale schemei


S, atunci cnd se aplic doar operatorul de selecie, devine:
m(t + 1) = m(t )

fS
f med

(9.6.4)

n ipoteza (9.6.5):
f S > f med ,

(9.6.5)

adic schema S este mai performant dect media performanelor populaiei,


atunci:
m(t + 1) > m(t ) ,

(9.6.6)

134

Matematici asistate de calculator

Rezolvarea numeric a problemelor de optimizare

adic numrul reprezentanilor schemei crete. Altfel spus, scheme avnd


performane peste valoarea medie a performanelor populaiei vor avea o
probabilitate de reproducere mai mare i vor primi un numr sporit
(exponenial) de reprezentani n noua populaie.
Mutaia are efect redus asupra numrului de scheme, datorit
probabilitii mici de apariie.
Efectul combinat al seleciei i ncrucirii asupra numrului de scheme
este exprim prin relaia (9.6.7):
m(t + 1) m(t )

fS

1 p c
,
f med
l 1

(9.6.7)

n care inegalitatea are loc deoarece operatorii de selecie i ncruciare sunt


independeni.
Ordinul unei scheme este numrul de poziii specifice (0 sau 1 pentru
alfabetul binar) ale schemei respective. De exemplu, schema ********1 are
lungimea 1 i ordinul 1, schema ****10*1* are lungimea 4 i ordinul 3, schema
10*******are lungimea 2 i ordinul 2, schema 00****101 are lungimea 9 i
ordinul 5, iar schema 11*****00 are lungimea 9 i ordinul 4.
Blocurile sunt scheme speciale, avnd valori mari ale funciei de
evaluare, ordin mic i lungime redus. Ele se propag exponenial n populaie,
pe parcursul generaiilor urmtoare, concluzie care a primit numele de teorema
schemei sau teorema fundamental a algoritmilor genetici [G5]: Schemele de
lungime mic i ordin redus cu valori ale funciei de evaluare peste valorile
medii sunt propagate ntr-un numr care crete exponenial de la o generaie la
alta. n schimb, schemele cu valori ale funciei de evaluare sub cele medii vor
dispare prin scderea exponenial a numrului lor de la o generaie la alta.
Acest fapt reprezint un alt avantaj al AG.
Ipoteza blocurilor afirm c ncruciarea orienteaz cutarea genetic
nspre gsirea blocurilor (soluii pariale), pe care le combin n soluii globale
mai bune.
Se spune c o mrime oarecare are ordinul O(n p ) dac ea poate fi
exprimat sub forma unui polinom de gradul p n variabila n.
Considernd o populaie de n cromozomi pentru care se calculeaz n
valori ale funciei de evaluare ntr-o generaie, se pune problema calculrii
numrului de scheme procesate eficient n fiecare generaie. Aceast valoare
este de ordinul O(n 3 ) , schemele fiind prelucrate n paralel. Fenomenul a primit
numele de paralelism implicit i indic un volum de calcule mult mai mare n
prelucrarea informaiei coninut n scheme fa de volumul de calcule efective
la nivel de iruri.
Dup cum a mai fost menionat, mecanismele care leag algoritmul
genetic de problema ce trebuie rezolvat sunt n principal dou:
codarea problemei n termeni de cromozomi, genomi i populaie;
funcia de evaluare, care furnizeaz o msur a calitii fiecrui
cromozom n contextul problemei respective.
Codarea este realizat, de cele mai multe ori, prin iruri de bii, care
sunt simplu de creat i de manipulat. n plus, acest tip de codare este robust, n
sensul adaptrii ei la o mare varietate de probleme practice. Totui,
reprezentarea cromozomilor prin numere reale are o serie de avantaje legate de
precizie.
Pe de alt parte, orice funcie de evaluare are, la intrare, irul de
cromozomi i returneaz numere sau liste de numere ce reprezint

135

Matematici asistate de calculator

Rezolvarea numeric a problemelor de optimizare

performanele realizate de cromozomi. Funcia de evaluare are rolul mediului


nconjurtor din cadrul evoluiei naturale.
Sintetiznd aspectele prezentate anterior, un algoritm genetic const n
parcurgerea pailor urmtori:
1. Se iniializeaz populaia de cromozomi.
2. Se evalueaz fiecare cromozom din populaie. Se selecteaz prinii
noii populaii.
3. Pasul de reproducere. Se creeaz o nou generaie de cromozomi prin
mperecherea cromozomilor selectai utiliznd operatori genetici.
4. Se terg membrii populaiei iniiale pentru a fi nlocuii cu noua
generaie.
5. Se evalueaz noii cromozomi i se insereaz n noua populaie.
6. Dac timpul de cutare s-a terminat, algoritmul este oprit.
Altfel, urmeaz salt la pasul 3.
Avnd descrise pe scurt principiile de baz ale AG, n continuare va fi
ilustrat modul de aplicare a algoritmilor genetici considernd urmtoarea
problem de optimizare cu restricii de tip egalitate (problem cu restricii de
tip egalitate, PRE):
PRE : v = arg max J = x 3 + 3 x 2 , supus la 2 v 4 .
v

(9.6.8)

Din motive de simplitate, prezentarea va fi orientat pe detalii de implementare


a AG n mediul Matlab urmrind stilul din [P2].
nceputul rezolvrii PO (9.6.8) este reprezentat de transformarea
problemei n vederea aplicrii directe a AG. Astfel, trebuie generat o mulime
iniial de cromozomi care s constituie populaia iniial. Alegerea unei
anumite lungimi a cromozomilor, adic a numrului de bii (gene) din fiecare
ir (cromozom) determin (n particular, limiteaz) precizia de obinere a
soluiei PO. De aceea, trebuie acordat atenie alegerii lungimii cromozomilor.
De asemenea, trebuie aleas o anumit dimensiune a populaiei. i
acest parametru trebuie ales cu grij deoarece alegerea unei populaii iniiale de
dimensiune mare va contribui la creterea timpului necesar implementrii
pailor AG. n majoritatea cazurilor nu este necesar o populaie iniial mare
pentru c AG genereaz automat membri noi ai polulaiei pe msura procesului
de cutare n mulimea soluiilor admisibile.
Pentru generarea populaiei iniiale este dezvoltat funcia Matlab
fgeninit prezentat n continuare:
function cromozomi=fgeninit(lungime,numcrom)
% Functie utilizata in generarea populatiei
% initiale
%
% lungime este lungimea unui cromozom,
% numcrom este numarul cromozomilor.
%
% cromozomi este matricea continand cromozomii.
%
maxcrom=2^lungime; % numarul maxim de cromozomi
if numcrom>=maxcrom,
numcrom=maxcrom;
end
cromozomi=round(rand(numcrom,lungime));

136

Matematici asistate de calculator

Rezolvarea numeric a problemelor de optimizare

Pentru generarea unei polulaii iniiale formate din 5 cromozomi,


fiecare coninnd cte 6 gene, n continuare este apelat funcia fgeninit din
linia de comand Matlab, rezultatul prezentat imediat fiind matricea
cromozomi coninnd populaia:
>> cromozomi=fgeninit(6,5)
cromozomi =
1
1
1
0
0
0 (cromozom 1)
0
0
1
1
0
0 (cromozom 2)
1
0
1
1
1
1 (cromozom 3)
0
1
1
0
0
0 (cromoxom 4)
1
0
0
1
0
0 (cromozom 5)
ntruct RTE din formularea (9.6.8) a PO specific faptul c sunt de
interes doar valorile variabilei v ntre 2 i 4, irurile binare obinute anterior
trebuie transformate n valori situate n intervalul 2 v 4 . n acest scop este
dezvoltat funcia Matlab fbinreal prezentat n cele ce urmeaz, care
efectueaz conversia unor valori binare n valori reale situate ntr-un domeniu
dorit:
function reala=fbinreal(cromozomi,a,b)
% Functie utilizata in conversia unor
% siruri binare in valori reale
%
% cromozomi este matricea continand populatia
% de cromozomi care va fi convertita,
% a si b sunt limitele intervalului
% caruia ii vor apartine valorile reale.
%
% reala este matricea generata cu valorile reale.
%
[nrcrom lungcrom]=size(cromozomi); % dimensiuni
%
populatie
crommax=2^lungcrom-1;
elreale=cromozomi.*((2*ones(1,lungcrom)).^...
fliplr([0:lungcrom-1]));
total=sum(elreale); % elemente reale totale
%
(nescalate)
reala=a+total*(b-a)/crommax;
Apelnd aceast funcie pentru conversia populaiei generate anterior
(format din cei 5 cromozomi), se obine:
>> for i=1:5,
valreala(i)=fbinreal(cromozomi(i,:),2,4);
end
>> valreala
valreala =
3.7778
2.3810
3.4921
2.7619
3.1429
Dup cum era de ateptat, cele 5 valori reale verific RTE i asigur o
populaie iniial de valori ale variabilei progamabile v.
Totui, aceste valori reale nu spun absolut nimic despre valoarea
funciei lor de evaluare (performan), care trebuie definit. n cazul rezolvrii
PO (9.6.8), care este o problem de maximizare, cea mai simpl variant de
alegere a expresiei funciei de evaluare const n considerarea tocmai a funciei
obiectiv ca funcie de evaluare, definit n funcia Matlab fevaluare:

137

Matematici asistate de calculator

Rezolvarea numeric a problemelor de optimizare

function fit=fevaluare(v)
% Functie utilizata in definirea
% functiei de evaluare (performanta)
%
% v este variabila (elementul programabil).
%
% fit este valoarea functiei de evaluare.
%
fit=v.^3+3*v.^2;
Pentru a calcula valorile funciei de evaluare pentru populaia iniial
obinut anterior i reprezentat sub form de numere reale salvate n matricea
valreala, este apelat funcia fevaluare conform urmtoarei secvene de
comenzi Matlab:
>> fit=fevaluare(valreala)
fit =
96.7298
30.5043
79.1675
43.9525
60.6764
Funcia de evaluare total aferent ntregii populaii are valoarea:
>> sum(fit)
ans =
311.0304
Deci, valoarea cea mai performant este 3.7778 cu o valoare a funciei
de evaluare egal cu 96.7298, care corespunde cromozomului (irului) 1 al
populaiei.
Pentru a selecta prinii noii populaii este aplicat principiul ruletei,
descris anterior, conform cruia procentajul de selecie acordat unui anumit
cromozom este direct proporional cu valoarea funciei sale de evaluare. Pentru
vectorul de funcii de evaluare fit obinut, calculul procentajului este efectuat
conform urmtoarei secvene de comenzi:
>> procent=fit/sum(fit)*100
procent =
31.0998
9.8075
25.4533
14.1313
19.5082
>> sum(procent)
ans =
100
Prin urmare, ansele de selecie ca prini a cromozomilor 1, 2, 3, 4 i 5
sunt egale cu procentele 31.0998, 9.8075, 25.4533, 14.1313 i respectiv
19.5082, acestea fiind procentajele din circumferin exterioar a ruletei
corespunztoare celor 5 cromozomi.
Pentru efectuarea seleciei prinilor noii populaii este dezvoltat mai
nti funcia Matlab fitness, destinat calculului valorii funciei de evaluare
[P2]:
function [fit,fitsum]=fitness(cromozomi,funceval,a,b)
% Functie utilizata in calculul functiei de
% evaluare (performanta)
% a unei populatii (de cromozomi)
%
% cromozomi este matricea continand populatia
% de cromozomi,
% funceval este numele functiei Matlab
% in care este definita functia de evaluare,
% a si b sunt limitele intervalului caruia
% ii apartin valorile reale ale cromozomilor.

138

Matematici asistate de calculator

Rezolvarea numeric a problemelor de optimizare

%
% fit este vectorul cu valorile functiei
% de evaluare pentru cromozomii populatiei,
% fitsum este suma valorilor functiei de
% evaluare, calculata pentru toti cromozomii.
%
[nrcrom lungcrom]=size(cromozomi); % dimensiuni
%
populatie
for i=1:nrcrom,
v(i)=fbinreal(cromozomi(i,:),a,b);
fit(i)=feval(funceval,v(i));
end
fitsum=sum(fit);
Apoi este dezvoltat funcia Matlab fselect, prezentat n continuare,
care implementeaz selecia prinilor noii populaii (generaiei urmtoare)
conform principiului ruletei i apeleaz funcia fitness:
function cromnoi=fselect(cromozomi,funceval,a,b)
% Functie utilizata in selectia celui mai
% bun cromozom pentru generatia urmatoare
%
% cromozomi este matricea continand populatia
% de cromozomi din care se face selectia,
% funceval este numele functiei Matlab
% in care este definita functia de evaluare
% (performanta),
% a si b sunt limitele intervalului caruia
% ii apartin valorile reale ale cromozomilor.
%
% cromnoi este matricea obtinuta continand
% cromozomii generatiei urmatoare.
%
[nrcrom lungcrom]=size(cromozomi); % dimensiuni
%
populatie
fit=[ ];
%
% Calculul functiei de evaluare:
[fit,fitsum]=fitness(cromozomi,funceval,a,b);
for cromind=1:nrcrom,
sval(cromind)=sum(fit(1,1:cromind));
end
%
% Selectia conform valorilor functiei de evaluare:
parnume=[ ];
for i=1:nrcrom,
rval=floor(fitsum*rand);
if rval<sval(1),
parnume=[parnume 1];
else
for j=1:nrcrom-1,
sl=sval(j);
su=sval(j)+fit(j+1);
if (rval>=sl) & (rval<=su),
parnume=[parnume j+1];
end
end

139

Matematici asistate de calculator

Rezolvarea numeric a problemelor de optimizare

end
end
cromnoi(1:nrcrom,:)=cromozomi(parnume,:);
Aplicnd funcia fselect, este rezolvat selecia n vederea aplicrii
pasului de reproducere i sunt obinui urmtorii cromozomi:
>> popselect=fselect(cromozomi,'fevaluare',2,4)
popselect =
1
0
1
1
1
1 (cromozom 3)
1
0
0
1
0
0 (cromozom 5)
1
0
1
1
1
1 (cromozom 3)
1
0
1
1
1
1 (cromozom 3)
1
0
0
1
0
0 (cromozom 5)
Poate fi observat c au fost favorizai n procesul de selecie
cromozomul 3 care a fost triplicat i cromozomul 5 care a fost duplicat.
Pentru noua populaie, salvat n matricea popselect, funciile de
evaluare obin urmtoarele valori:
>> [fit,fitsum]=fitness(popselect,'fevaluare',2,4)
fit =
79.1675
fitsum =
358.8553

60.6764

79.1675

79.1675

60.6764

Pentru noua populaie poate fi observat imediat o cretere a sumei


valorilor funciei de evaluare.
n continuare trebuie aplicat pasul de reproducere populaiei obinute.
Acest pas va fi aplicat numai unei submulimi a acestei populaiei, n proporie
de 60 % = 0.6, ceea ce n cazul de fa corespunde unui numr de 5 x 0.6 = 3
cromozomi. ns, n pasul de reproducere pot fi mperecheai doar cromozomi
n numr par i numrul de cromozomi este rotunjit inferior la primul numr
par, adic 2. Prin urmare, vor fi selectai pentru mperechere doar 2 membri ai
acestei populaii, selectai aleator. Implementarea n Matlab a reproducerii este
efectuat n funcia Matlab freprod:
function crom1=freprod(cromozomi,propor)
% Functie utilizata in reproducerea unei
% proportii dintr-o populatie (de cromozomi)
%
% cromozomi este matricea continand populatia
% de cromozomi din care sunt alesi aleator cei
% supusi reproducerii,
% propor este proportia (subunitara) din numarul
% de cromozomi supus reproducerii.
%
% crom1 este matricea obtinuta continand
% cromozomii reprodusi.
%
% Initializari:
indrep=[ ];
crom1=cromozomi;
[nrcrom lungcrom]=size(cromozomi); % dimensiuni
%
populatie
ind=1:nrcrom;
u=floor(nrcrom*propor);
if floor(u/2)~=u/2,

140

Matematici asistate de calculator

Rezolvarea numeric a problemelor de optimizare

u=u-1;
end
%
% Selectia procentajului de reprodus aleator:
while length(indrep)~=u,
i=round(rand*nrcrom);
if i==0,
i=1;
end
if ind(i)~=-1,
indrep=[indrep i];
ind(i)=-1;
end
end
%
% Efectuare incrucisare cu un singur
% punct de incrucisare:
for i=1:2:u-1,
splitpos=floor(rand*lungcrom);
if splitpos==0,
splitpos=1;
end
i1=indrep(i);
i2=indrep(i+1);
genetemp=cromozomi(i1,splitpos+1:lungcrom);
crom1(i1,splitpos+1:lungcrom)=...
cromozomi(i2,splitpos+1:lungcrom);
crom1(i2,splitpos+1:lungcrom)=genetemp;
end
Aceast funcie este aplicat populaiei din matricea popselect,
rezultatul fiind obinut sub forma noii generaii salvate n matricea gennoua:
>> gennoua=freprod(popselect,.6)
gennoua =
1
0
1
1
1
1 (cromozom 3)
1
0
0
1
0
1 (cromozom obinut din
cromozomul 3 i 5)
1
0
1
1
1
0 (cromozom obinut din
cromozomul 3 i 5)
1
0
1
1
1
1 (cromozom 3)
1
0
0
1
0
0 (cromozom 5)
Poate fi observat faptul c noii membri ai populaiei (cromozomii
succesori) au fost obinui din cromozomii prini, 3 i 5, aplicnd ncruciarea
cu un singur punct de ncruciare a = 5.
Valorile funciilor de evaluare pentru noua generaie sunt:
>> [fit,fitsum]=fitness(gennoua,'fevaluare',2,4)
fit =
79.1675
62.2283
77.3545
79.1675
60.6764
fitsum =
358.5942
De data aceasta suma valorilor funciei de evaluare nu a mai fost
mbuntit.
n final, este efectuat mutaia nainte de a repeat acest ciclu de pai din
cadrul AG. Mutaia este implementat n funcia Matlab fmutatie:

141

Matematici asistate de calculator

Rezolvarea numeric a problemelor de optimizare

function crom1=fmutatie(cromozomi,rata)
% Functie utilizata in mutatia unei
% populatii (de cromozomi) cu o anumita rata
%
% cromozomi este matricea continand populatia
% de cromozomi supusa mutatiei,
% rata este rata (probabilitatea) mutatiei,
%
% crom1 este matricea obtinuta continand
% populatia de cromozomi ca rezulta al
% mutatiei.
%
[nrcrom lungcrom]=size(cromozomi); % dimensiuni
%
populatie
crom1=cromozomi;
for i=1:nrcrom,
for j=1:lungcrom,
if rand<=rata,
if cromozomi(i,j)==1,
crom1(i,j)=0;
else
crom1(i,j)=1;
end
end
end
end
Aplicnd aceast funcie cu o valoare foarte mic a ratei de mutaie,
ansele de modificare a populaiei ntr-o singur generaie vor fi foarte mici.
Acest lucru este ilustrat n continuare, pentru o rat de mutaie de 0.005:
>> gen2=fmutatie(gennoua,.005)
gen2 =
1
0
1
1
1
1
1
0
0
1
0
1
1
0
1
1
1
0
1
0
1
1
1
1
1
0
0
1
0
0
Poate fi observat c nu a avut loc nici-o mutaie, obinndu-se aceeai
populaie, salvat n matricea gen2.
Trebuie menionat c n pasul de reproducere pot fi aplicai toi
operatorii genetici.
La acest moment s-a ncheiat producerea unei noi generaii. Apoi,
urmrind paii AG, aceleai procese de selecie i reproducere (utiliznd
operatorii genetici) vor fi repetate construindu-se noi generaii pn la
epuizarea timpului de cutare a soluiei optimale.
Pentru implementarea unui AG este dezvoltat funcia falggen
prezentat n continuare, care nglobeaz toi paii AG apelnd funciile Matlab
prezentate anterior n vederea rezolvrii unei probleme de maximizare:
function [valv,fmax]=falggen(fun,domeniu,biti,...
dimpop,numgenera,rata,propor)
% Functie utilizata in determinarea maximului
% unei functii utilizand algoritmi genetici
%
% fun este functia Matlab definita de utilizator
% continand expresia functiei obiectiv, functie

142

Matematici asistate de calculator

Rezolvarea numeric a problemelor de optimizare

% de o singura variabila si cu valori pozitive,


% domeniu este o matrice linie cu 2 elemente
% continand limita inferioara si cea superioara
% a variabilei (elementului programabil) v,
% biti este numarul de biti ai variabilei v,
% dimpop este dimensiunea populatiei (de
% cromozomi),
% numgenera este numarul de generatii,
% rata este rata (probabilitatea) mutatiei,
% propor este proportia (subunitara) din numarul
% de cromozomi supus reproducerii.
%
% valv este valoarea optimala a variabilei
% (elementului programabil) v,
% fmax este valoarea maxima a functiei
% obiectiv (utilizata ca functie de evaluare).
%
% Initializari:
popnoua=[ ];
a=domeniu(1);
b=domeniu(2);
%
% Generare populatie initiala:
popnoua=fgeninit(biti,dimpop);
for i=1:numgenera,
% Selectie:
popsel=fselect(popnoua,fun,a,b);
% Incrucisare:
gennoua=freprod(popsel,propor);
% Mutatie:
gennoua1=fmutatie(gennoua,rata);
popnoua=gennoua1;
end
%
% Calcul functie de evaluare:
[fit,fitsum]=fitness(popnoua,fun,a,b);
%
% Alegere cromozom cel mai performant
% si calcul valoare maxima functie obiectiv:
[fmax,indcelmai]=max(fit);
%
% Valoare optimala pentru v:
valv=fbinreal(popnoua(indcelmai,:),a,b);
Trebuie remarcat faptul c AG implementat n cadrul funciei falggen
nu garanteaz gsirea soluiei optimale n cazul mai existenei mai multor
maxime locale. n plus, algoritmul este lent dac sunt dorite soluii de precizie
relativ mare.
Aplicnd funcia Matlab falggen n rezolvarea PO (9.6.8), este
specificat domeniul de variaie al lui v ntre 2 i 4 (RTE), sunt utilizai
cromozomi avnd lungimea de 8 bii i un numr de 10 cromozomi n populaia
iniial. AG este aplicat pentru 20 de generaii, cu probabilitatea (rata) mutaiei
de 0.005 i proporia de reproducere egal cu 0.6 conform urmtoarei linii de
comand Matlab:
>> [valv,fmax]=falggen('fevaluare',[2 4],8,10,...
20,.005,.6)

143

Matematici asistate de calculator

Rezolvarea numeric a problemelor de optimizare

valv =
3.9059
fmax =
105.3556
ntruct soluia exact a PO este v = 4 , rezultatul obinut este rezonabil.
Observaie: Fiecare nou rulare a funciei falggen, care implementeaz
un AG utilizat n rezolvarea aceleiai PO, poate genera rezultate diferite
datorit naturii aleatoare a procesului de aplicare a operatorilor genetici.
n concluzie, dei sunt relativ leni n execuie, algoritmii genetici pot fi
aplicai n rezolvarea unor PO dificile cum sunt cele care au mai multe puncte
de extreme sau cele n care este cerut un punct de optim global. ntruct
algoritmii care implementeaz metodele numerice standard n rezolvarea
acestor probleme de optimizare pot conduce la eec, timpul mai lung de
execuie al AG este pe deplin compensat n astfel de situaii.
Funciile prezentate pot fi implementate i n alte variante. Astfel, de
exemplu, poate fi utilizat ncruciarea cu mai multe puncte de ncruciare, sau
selecia bazat pe principiul ruletei poate fi implementat n manier diferit
fa de cea prezentat. De asemenea, pot fi utilizate toolbox-uri Matlab
specializate n implementarea AG pentru rezolvarea PO i nu numai cum sunt
GAOT ori FLEXGA.

9.7. Aplicaii n Matlab


Pentru rezolvarea numeric a problemelor de optimizare a fost
dezvoltat Optimization Toolbox [M4] n cadrul mediului Matlab.
Funcia fminunc este destinat rezolvrii problemelor de programare
matematic fr restricii (PFR) n cazul n care sunt probleme de minimizare i
este apelabil n cel puin dou forme avnd urmtoarele sintaxe:
!
!

vopt=fminunc(fun,v0,options)
[vopt,valf]= fminunc(fun,v0,options)

n care argumentele au semnificaia:


fun
funcie Matlab definit de utilizator, de o variabil (scalar) sau de
mai multe variabile (variabil vectorial), care conine expresia
funciei obiectiv care trebuie minimizat;
y0
vector (matrice coloan) coninnd valorile iniiale ale variabilei
(variabilelor) problemei;
options argument prin care pot fi setai anumii parametri ai metodei de
rezolvare numeric, prin intermediul funciei optimset.
Prin aplicarea funciei fminunc se obin:
vopt
vector coninnd valorile optimale ale variabilei (elementului
programabil) v;
valf
scalar coninnd valoarea optimal (minim) a funciei obiectiv.
Funcia optimet are urmtoarea sintax:
options=odeset(param1,val1,param1,val1,...)
unde paramj reprezint numele unui parametru, iar valj reprezint
valoarea asignat acelui parametru, j = 1, 2, ... .Parametrii
nespecificai rmn cu valorile lor implicite. n continuare sunt definii doi
dintre aceti parametri:
TolX
precizia absolut a soluiei;
TolFun
precizia absolut n calculul valorii funciei obiectiv.

144

Matematici asistate de calculator

Rezolvarea numeric a problemelor de optimizare

Trebuie remarcat faptul c executnd comanda


>> optimset(@fminunc)
se va obine o structur cu numele i valorile tuturor acestor parametri, urmnd
ca apoi s fie setate imediat valorile dorite ale parametrilor:
ans =
ActiveConstrTol: []
DerivativeCheck: 'off'
Diagnostics: 'off'
DiffMaxChange: 0.1000
DiffMinChange: [1x1 double]
Display: 'final'
GoalsExactAchieve: []
GradConstr: []
GradObj: 'off'
Hessian: 'off'
HessMult: []
HessPattern: [1x31 char]
HessUpdate: 'bfgs'
Jacobian: []
JacobMult: []
JacobPattern: []
LargeScale: 'on'
LevenbergMarquardt: []
LineSearchType: 'quadcubic'
MaxFunEvals: [1x21 char]
MaxIter: 400
MaxPCGIter: [1x33 char]
MaxSQPIter: []
MeritFunction: []
MinAbsMax: []
NonlEqnAlgorithm: []
Preconditioner: []
PrecondBandWidth: 0
ShowStatusWindow: []
TolCon: []
TolFun: [1x1 double]
TolPCG: 0.1000
TolX: [1x1 double]
TypicalX: [1x25 char]
n cazul versiunilor Matlab cel puin 6.x, alte programe utilizate n
rezolvarea problemelor de programare matematic sunt fminsearch (pentru
PFR), fmincon (pentru PREI) i fminbnd (pentru probleme cu restricii de tip
inegalitate cu o singur variabil).
Pentru implementarea n Matlab a algoritmului metodei gradientului
conjugat n versiunea Fletcher-Reeves este dezvoltat funcia fmingc utiliznd
informaiile din paragraful 9.3:
function [sol,gradi,nriter]=fmingc(f,gradf,f1,v,eps)
% Algoritmul de calcul al punctului de minim
% prin metoda gradientului conjugat in versiunea
% Fletcher-Reeves
% pentru o functie neliniara f(v) de n variabile
%
% f este functia de variabilele independente v, care

145

Matematici asistate de calculator

Rezolvarea numeric a problemelor de optimizare

% reprezinta o functie definita de utilizator,


% gradf este gradientul functiei f, care reprezinta
% o functie definita de utilizator,
% f1 este functia de cautare liniara a pasului
% optimal, reprezentand
% de asemenea o functie definita de utilizator,
% v reprezinta o matrice coloana continand cele n
% valori initiale
% ale vectorului variabilei independente v,
% eps este precizia dorita.
%
% sol este solutia problemei de optimizare (valoarea
% optimala a lui v),
% gradi este gradientul functiei obiectiv, calculate
% in punctul v = sol,
% nriter este numarul de iteratii pana la obtinerea
% lui sol.
%
global p1 d1;
n=size(v);
nriter=0;
%
% Calculul gradientului initial:
df=feval(gradf,v);
%
% Bucla principala:
while norm(df)>eps,
nriter=nriter+1;
df=feval(gradf,v);
d1=-df;
%
% Bucla interna:
for intern=1:n,
p1=v;
% Precizia cautarii liniare = 0.00005;
% poate fi imbunatatita prin scadere
% Parametrii cautarii liniare:
options=optimset('Display','off','TolX',.00005);
pas=fminbnd(f1,-10,10,options);
% Calculul noii valori a lui v:
v1=v+pas*d1;
% Salvarea gradientului anterior:
aaa=df;
dfa=aaa';
% Calculul noului gradient:
aaa=feval(gradf,v1);
df=aaa';
% Actualizare v si d:
aaa=d1;
d=aaa';
v=v1;
% Formula specifica metodei Fletcher-Reeves:
betta=(df'*df)/(dfa'*dfa);
d1=-df+betta*d;
end

146

Matematici asistate de calculator

Rezolvarea numeric a problemelor de optimizare

end
%
% Solutia:
sol=v1; % valoarea optimala a variabilei v
% Numarul de iteratii este in variabila nriter
gradi=df; % gradientul functiei obiectiv in punctual
% v optimal
disp('Numarul de iteratii='); disp(nriter);
disp('Solutia optimala='); disp(v1);
disp('Gradientul in solutia optimala='); disp(df);
Observaii: 1. Funcia fmincg necesit definirea de ctre utilizator a trei
funcii Matlab.
2. n cadrul acestei funcii a fost utilizat funcia Matlab fminbnd
pentru rezolvarea problemei de optimizare unidimensional avnd ca soluie
valoarea optimal a pasului de cutare. Aceast funcie este nsoit de funcia
Matlab optimset, prezentat anterior, prin care sunt stabilite valorile unor
parametri afereni funciei fminbnd.
3. n cazul problemelor de optimizare la care funcia obiectiv este
complicat trebuie modificat corespunztor funcia de cutare liniar a pasului
optimal.
Funcia fmincg va fi aplicat n cele ce urmeaz n cadrul exemplului
9.1.
Exemplul 9.1: S se rezolve prin metoda gradientului conjugat n
versiunea Fletcher-Reeves urmtoarea PO [P2]:
PFR : v = arg min J = f ( v ) =
v

4
2
4
2
v1 16v1 + 5v1 v 2 16v 2 + 5v 2
+
,
2
2
v = [v1 v 2 ]T R 2 .

Soluie: Pentru nceput, este creat un fiier funcie, cu numele f91.m,


pentru definirea FO:
function f=f91(v)
% Expresia functiei obiectiv:
%
f=0.5*(v(1)^4-16*v(1)^2+5*v(1))+...
0.5*(v(2)^4-16*v(2)^2+5*v(2));
Apoi, este creat fiierul funcie gradf91.m, destinat definirii
gradientului funciei obiectiv:
function gradf=gradf91(v)
% Expresia gradientului functiei obiectiv:
%
gradf=zeros(size(v));
gradf(1)=0.5*(4*v(1)^3-32*v(1)+5);
gradf(2)=0.5*(4*v(2)^3-32*v(2)+5);
n continuare este creat i al treilea fiier funcie, numele fiierului
fiind f191.m, pentru definirea funciei de cutare liniar utilizat n obinerea
valorii optimale a pasului de cutare:
function pasn=f191(pas)
% Expresia functiei de cautare liniara utilizata in
% obtinerea valorii optimale a pasului de cautare:
%
global p1 d1;
q1=p1+pas*d1;
pasn=feval('f91',q1);

147

Matematici asistate de calculator

Rezolvarea numeric a problemelor de optimizare

n final, este executat urmtoarea secven de program Matlab care


apeleaz funcia fmingc, rezultatele fiind prezentate imediat:
global p1 d1;
v0=[.6 .6];
x1=fmingc('f91','gradf91','f191',v0,.000005);
>> Numarul de iteratii=
2
Solutia optimala=
-2.9035
-2.9035
Gradientul in solutia optimala=
1.0e-006 *
-0.3815
-0.3815
Pentru implementarea n Matlab a algoritmului de rezolvare a
problemei de programare liniar n varianta Barnes (a se vedea paragraful
9.5) este dezvoltat funcia fbarnes:
function [solv,solf,lista,iter]=fbarnes(A,b,c,eps)
% Algoritmul Barnes de rezolvare a unei probleme de
% programare liniara cu functia obiectiv f(v)=c'v,
% supusa restrictiilor Av=b si v>=0
%
% A este matricea coeficientilor
% restrictiilor de tip egalitate,
% b este matricea coloana din membrul drept al
% restrictiilor de tip egalitate,
% c' este matricea linie a coeficientilor
% variabilelor din functia obiectiv,
% eps este precizia dorita.
%
% solv este solutia problemei de optimizare
% (valoarea optimala a lui v),
% solf este valoarea minima a functiei obiectiv,
% solf=f(solv),
% lista este vectorul linie cu indicii valorilor
% optimale nenule ale variabilelor,
% iter este numarul de iteratii pana la
% atingerea lui fsol.
%
v2=[]; v=[]; [m n]=size(A);
%
% Definirea problemei initiale (pasul 0):
aplus1=b-sum(A(1:m,:)')'; cplus1=1000000;
A=[A aplus1];
cp=[c' cplus1];
B=[]; n=n+1;
v0=ones(n,1); v=v0;
alpha=.0001; lambda=zeros(m,1); iter=0;
%
% Bucla principala (pasul 1 si pasul 2):
while abs(cp*v-lambda'*b)>eps,
v2=v.*v; D=diag(v); D2=diag(v2);
AD2=A*D2;
lambda=(AD2*A')\(AD2*cp');
rezdual=cp'-A'*lambda;
reznorm=norm(D*rezdual);
for i=1:n,
if rezdual(i)>0,

148

Matematici asistate de calculator

Rezolvarea numeric a problemelor de optimizare

fractie(i)=reznorm/(v(i)*...
(cp(i)-A(:,i)'*lambda));
else
fractie(i)=inf;
end
end
pas=min(fractie)-alpha;
v1=v-pas*D2*rezdual/reznorm;
v=v1; contlista=0; B=[]; lista=[]; cb=[];
for k=1:n,
if v(k)>eps,
contlista=contlista+1;
lista=[lista k];
end
end
%
% Urmeaza partea doar pentru probleme
% nedegenerate:
if contlista==m,
for k=lista,
B=[B A(:,k)]; cb=[cb cp(k)];
end
solprimal=b'/B'; solv=solprimal;
break
end
iter=iter+1;
end
solf=cp*v;
i=1; fprintf('\nSolutia optimala=');
for j=lista,
fprintf('\nv(%1.0f)=%8.4f\',j,solv(i));
i=i+1;
end
fprintf('\nCelelalte variabile sunt ...
nule\n');
disp('Numarul de iteratii='); disp(iter);
disp('Valoarea minima a functiei obiectiv=');
disp(solf);
Funcia fbarnes va fi aplicat n continuare n cadrul exemplului 9.2.
Exemplul 9.2: S se rezolve prin metoda lui metoda lui Karmakar n
varianta lui Barnes urmtoarea problem de programare liniar [P2]:
PREI : v = arg max J = f ( v ) = 2v1 + v 2 + 4v 3 , v = [v1
v

v2

v 3 ]T R 3 ,

supus la:
v1 + v 2 + v 3 7 ,
v1 + 2v 2 + 3v3 12 ,
v1 , v 2 , v 3 0 .

Soluie: Pentru nceput, problema trebuie adus la formularea din


varianta standard (9.5.1). n acest scop sunt introduse dou variabile pozitive v4
i v5, numite variabile slabe (variabile suplimentare), care sunt adunate n
membrii stngi ai celor dou RTI, cte o variabil slab pentru fiecare RTI.
Acest lucru va transforma cele dou RTI n RTE.
n plus, trebuie schimbate semnele coeficienilor din FO pentru
schimbarea problemei de maximizare ntr-una de minimizare. Rezult varianta
standard a problemei de programare liniar:

149

Matematici asistate de calculator

Rezolvarea numeric a problemelor de optimizare

PREI : v = arg min J = f ( v) = 2v1 v 2 4v 3 , v = [v1


v

v2

v3

v4

v 5 ]T R 5 ,

supus la:
v1 + v 2 + v 3 + v 4 = 7 ,
v1 + 2v 2 + 3v 3 + v 5 = 12 ,
v1 , v 2 , v3 , v 4 , v5 0 .

Cele dou variabile reprezint diferenele dintre resursele disponibile i


cele utilizate. n cazul n care RTI ar fi fost exprimate sub forma mai mare sau
egal cu zero, pentru transformarea celor dou RTI n RTE trebuia efectuat
scderea variabilelor slabe din membrii stngi ai celor dou RTI.
n aceste condiii poate fi rezolvat problema de programare liniar
folosind algoritmul lui Barnes. Este executat urmtoarea secven de program
Matlab care apeleaz funcia fbarnes, cu rezultatele prezentate n cele ce
urmeaz:
A=[1 1 1 1 0;1 2 3 0 1];
b=[7;12];
c=[-2;-1;-4;0;0];
[solx,solf,lista,iter]=fbarnes(A,b,c,.00005);
Solutia optimala=
v(1)= 4.5000
v(3)= 2.5000
Celelalte variabile sunt nule
Numarul de iteratii=
7
Valoarea minima a functiei obiectiv=
-19.0000
Prin urmare, a fost obinut soluia optimal v = [4.5 0 2.5]T ,
valoarea maxim a FO fiind: fmax = 19.
Rmn ca teme de abordat de ctre cititor urmtoarele:
1. S se implementeze n Matlab algoritmul metodei seciunii de aur,
utilizat n minimizarea unor funcii neliniare.
2. S se implementeze n Matlab algoritmul metodei interpolrii
ptratice, utilizat n minimizarea unor funcii neliniare.
3. S se implementeze n Matlab o variant a algoritmului metodei
protejate de cutare liniar aproximativ.
4. S se implementeze n Matlab algoritmul de calcul al punctului de
minim prin metoda cvasi-Newton cu pas variabil.
5. S se implementeze n Matlab algoritmul de calcul al punctului de
minim prin metoda gradientului.
6. S se implementeze n Matlab algoritmul metodei gradientului
conjugat n versiunea Polak-Ribire.
7. S se implementeze n Matlab algoritmul metodei gradientului
conjugat n versiunea Hestenes-Stiefel.
8. S se implementeze n Matlab algoritmul metodei regiunii de
ncredere n model.
9. S se implementeze n Matlab variante ale funciei Matlab falggen
care implementeaz AG n rezolvarea PO n cazul unor funcii de dou, trei,
patru sau mai multe variabile.

150

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