ELEMENTE DE
PROGRAMARE NELINIARA
§ 1.Introducere
Caracteristic unei probleme de programare liniară este faptul că toate
funcțiile implicate în ea funcția obiectiv
și restricții sunt liniare. Deși ipotezele de liniaritate au loc în numeroase situații practice tot
atât de frecvent ale nu sunt îndeplinite. De fapt, mulți economiști
teoreticieni au constatat că un anume grad
de neliniaritate este regula și nu
excepția în problemele de planificare
economică.
Există deci o puternică motivație economică pentru studiul
problemelor de programare neliniară a
căror formă canonică de prezentare este:
Û
Dacă în cazul liniar (Û f si gi sunt funcții liniare)
există (cel puțin) o metodă generală de rezolvare de exemplu metoda simplex în cazul neliniar nu există o
asemenea metodă. Totuși progrese substanțiale au fost făcute în unele
cazuri speciale prin impunerea unor condiții asupra funcțiilor f si gi
.Aria acestor cazuri speciale este destul de mare
astfel că nu ne vom putea opri decât asupra unora mai relevante.
§ 2. Neliniaritatea în modelarea proceselor
economice. Câteva exemple
Să considerăm problema firmei al cărei obiectiv este determinarea unui program de producție astfel încât:
·
necesarul de resurse pentru
susținerea programului să se încadreze în disponibile date;
·
profitul total, rezultat din vânzarea
bunurilor produse să fie maxim.
În multe
situații practice, prețurile și costurile unitare de fabricație pot fi
considerate constante astfel că și
profiturile unitare vor fi la fel. În consecință, în aceste cazuri funcția
obiectiv, care reprezintă profitul total, va fi liniară:
(xj reprezintă cantitatea produsă și vândută din
bunul j;Pj este profitul unitar corespunzător bunului j
)
Nu întotdeauna tot
ceeace se produce dintr-un bun se poate și vinde la un anumit preț. Apare așa
numita problemă a elasticității prețului:
cantitatea de marfă vândută se află într-o relație
inversă cu prețul cerut așa cum arată curba
preț cerere (fig. 2.1a)
p(x) este prețul care permite firmei să vândă x unități de produs
a) b)
Dacă c este
costul unitar de producție, cost pe
care îl presupunem pentru simplificarea expunerii fix, atunci profitul
firmei, rezultat din producerea și vânzarea cantității x este dat de funcția neliniară (vezi fig. 2.1b):
P(x) =
x.p(x) c(x)
Dacă fiecare din
produsele firmei are o asemenea funcție profit, notată Pj(xj), profitul total va fi exprimat
prin funcția neliniară:
O altă
sursă de neliniarități în funcția obiectiv o constituie variația costului marginal - pentru producerea a
încă unei unități dintr-un produs - în funcție de nivelul producției. Acest
cost marginal poate să scadă în unele situații (ca urmare a trecerii la
producția de serie, al acumulării experienței și al perfecționării procesului
de producție) iar în altele poate să crească (ore suplimentare,utilizarea în regim de urgență a unor capacități de producție
mai costisitoare pentru satisfacerea unor cereri imediate)
Neliniaritatea poate apare și în restricții într-o manieră
asemănătoare. De exemplu, dacă există o restricție bugetară asupra costului producției, relația
corespunzătoare va fi cu siguranță neliniară în cazul în care costul marginal al producției este variabil.
Pentru restricțiile privitoare la alte tipuri de resurse, neliniaritatea
apare ori de câte ori consumurile nu sunt
direct proporționale cu nivelele de producție.
Exemplul 2.1 În problema transporturilor se
urmărește determinarea unui program pentru transportul unui produs de la
diferite surse la diverși consumatori, cunoscându-se cantitățile disponibile și
cererile, astfel încât costul total al transportului să fie minim. În programarea
liniară, costul transportului unei unități de produs de la o anumită sursă la o
anumită destinație a fost considerat constant,
independent de cantitatea transportată. De multe ori se întâmplă ca la
cantități mari să se acorde la transport anumite reduceri; în aceste situații,
costul marginal al transportului unei unități suplimentare tinde să scadă și ca
o consecință costul C(x) al
transportării cantității x este dat
de o funcție neliniară. Să analizăm datele din fig. 2.2 a) și b).
cost marginal cost
Fie x
cantitatea transportată și C(x)
costul transportării cantității x.
·
dacă 0 £ x £ 6
costul unitar de transport este de 6.5 u.m. deci
C1(x) = 6.5x u.m.;
·
dacă 6 £ x £ 15 , 6 unități vor fi
transportate cu costul 6.5 u.m. per unitate iar următoarele cu numai 5 u.m. per
unitate astfel că :
C2(x) = 6.5 Ž6 + 5.(x - 6) = 9 + 5.x
·
dacă 15 £ x £ 27 , 15 unități vor fi transportate cu costul
C2(15) = 84 iar următoarele cu numai 4 u.m. per unitate. Costul
total va fi :
C3(x) = 84 + 4.(x 15) = 24 + 4.x
·
dacă 27 < x £ 45 , 27 unități vor fi transportate cu costul C3(27) = 132 iar
următoarele cu 3 u.m. per unitate de unde costul total:
C4(x) = 132 + 3.(x 27) = 51 + 3.x
Prin urmare, costul C(x)
al transportării a x unități este dat de funcția:
care este neliniară
dar liniară pe porțiuni. Din fig.
4.2b) rezultă că pantele porțiunilor liniare ale graficului funcției C(x) sunt
chiar costurile marginale evidențiate în fig 4.2a).
Dacă fiecare cuplu (sursă i , destinație j ) are o funcție cost similară, așa încât costul transportului a xij unități de la i la j este dat de funcția neliniară Cij(xij) atunci costul total este reprezentat de funcția de asemenea neliniară;
Aceste
considerații nu modifică restricțiile problemei de transport care rămân
liniare:
suma cantităților livrate de
sursa i nu
depășește disponibilul său;
suma cantităților primite de
consumatorul j acoperă cererea sa.
Exemplul 2.2 La
terminalul unei conducte petroliere situat într-un port sosesc vasele A,B,C
pentru a fi încărcate. Vasul A trebuie încărcat cu 15 mii tone în maximum 48 de
ore, vasul B trebuie încărcat cu 20 mii tone în maximum 60 de ore iar vasul C
trebuie încărcat cu 45 mii tone în maximum 70 de ore. (timpii de staționare
pentru încărcare se numesc timpi de stalii și sunt prevăzuți în contractul de
transport; orice depășire a acestor timpi (contrastalii) se penalizează, penalizarea
depinzând de tipul navei etc) Terminalul dispune de pompe și conducte care
însumează o capacitate de încărcare de 1200 tone pe oră. Se pune problema de a
stabili ce debit trebuie afectat fiecărei nave astfel încât ele să fie
încărcate în cel mai scurt timp.
Dacă se notează cu y1 , y2 , y3
deditele repartizate vaselor A,B,C și cu x1 , x2 , x3
numărul de ore necesar încărcării lor se obține ușor următorul program
neliniar:
Eliminând y1
, y2 , y3 rezultă modelul mai simplu:
§ 3. Dificultăți cauzate de
neliniaritate
Considerăm problema de optimizare:
a cărei mulțime de
soluții admisibile o notăm cu A:
A =
(P) se rescrie:
Să se determine x*ÎA cu proprietatea:
Este cunoscut faptul că
dacă (P) este un program liniar
(adică f și g1,g2,
,gm sunt funcții liniare) atunci mulțimea A este convexă
și mai mult chiar poliedrală
(intersecție finită de semispații).Aceste proprietăți ale mulțimii A plus
faptul că funcția obiectiv este și ea liniară ne asigură că:
·
o soluție optimă dacă există
este un punct de minim global adică:
f(x*) £ f(x) (") x ÎA
·
cel puțin o soluție este un
vârf al mulțimii A
Cum numărul vârfurilor
mulțimii poliedrale A este finit urmează că, pentru
programul liniar (P), problema determinării unei soluții optime x* din mulțimea, în general
infinită, a tuturor soluțiilor admisibile se reduce la găsirea lui x* în mulțimea finită a
vârfurilor acestei mulțimi.
Metoda simplex realizează în mod sistematic această căutare oferind
într-un număr finit de pași (iterații) soluția optimă x*.
Neliniaritatea obiectivului
sau a unora dintre restricții face ca unele din proprietățile relevate mai sus
să dispară fapt care duce la complicarea
sarcinii de determinare a optimului.
1)
De la bun început vom sublinia
faptul că în programarea neliniară
cu câteva excepții metodele de rezolvare obțin teoretic soluția optimă ca limită a unui șir de soluții. Astfel, un
proces concret de optimizare neliniară
este finit nu datorită structurii
problemei ci prin voința utilizatorului
care limitează numărul pașilor în funcție de o serie întreagă de factori cum ar
fi : complexitatea calcului, timpul disponibil, performanțele echipamentului de
calcul etc.
2)
este posibil ca funcția
obiectiv din (P) să aibe mai multe minime
locale pe mulțimea soluțiilor admisibile A . Pentru exemplificare considerăm problema:
Mulțimea soluțiilor
admisibile A este vizualizată în fig.3.1.
Evident, A nu
este o mulțime convexă. Punctul A(0,2) oferă obiectivului valoarea 6 care este cea mai mică valoare a funcției f pe soluțiile admisibile situate în imediata apropiere de A! Totuși A nu este soluția
optimă a problemei (P) deoarece în B(2,0) f
are valoarea 4 < 6. Ca și A, B minimizează funcția obiectiv pe soluțiile
admisibile vecine cu B dar, spre
deosebire de A, B minimizează obiectivul pe întreaga mulțime A și în consecință reprezintă soluția optimă a
problemei (P). Spunem că A și B sunt puncte de minim local ale funcției obiectiv f, B fiind chiar un punct de minim global.
Posibilitatea existenței mai multor minime locale ale
funcției obiectiv reprezintă o serioasă dificultate în rezolvarea unui program
neliniar. Într-adevăr, prin însăși formulare, într-o asemenea problemă se cere
determinarea minimului global al obiectivului. Or, toate metodele de optimizare
neliniară cunoscute, nu reușesc să determine decât cel mult un minim local,
neexistând garanția că acesta coincide cu minimul global căutat.
După cum vom vedea, dacă A este
convexă iar funcția obiectiv este convexă și se minimizează atunci aceasta are
cel mult un minim local care dacă există este automat global ! Din fericire,
marea majoritate a aplicațiilor economice au proprietățile de mai sus, fapt
care constituie un serios avantaj.
3)
Chiar dacă restricțiile din (P)
sunt liniare dar obiectivul ramâne neliniar însă convex, soluția optimă, deși se află pe frontiera lui A nu este
neapărat vârf. Considerăm următorul
exemplu:
Curbele de nivel ale
funcției obiectiv patratice f sunt elipse centrate în xÆ = (7/2
, 4) care reprezintă și punctul de minim nerestricționat
al lui f. Se poate arăta, prin
mijloace algebrice elementare că f are
pe A un minim global
x* = (5/2 , 7/2) care nu este vârf al lui A .
4)
este posibil ca soluția optimă
să fie situată în interiorul mulțimii A . Pentru exemplificare să atașăm restricțiilor din
problema precedentă funcția
al cărei minim liber
este punctul xÆ = (2 , 3). Deoarece xÆ Î A ( și mai
precis xÆ Î Int (A ) ) acest punct reprezintă
soluția optimă x*.
§ 4. Clase de probleme
neliniare
1) Problemele de optimizare fără restricții au
forma generală:
Să se determine x* Î Rn care minimizează valoarea
funcției
minimul fiind luat dupa toți x Î Rn în care funcția f este definită.
2) Probleme
de optimizare cu restricții liniare
și funcție obiectiv neliniară. În această clasă un loc deosebit îl ocupă problemele de programare patratică în care funcția obiectiv
este un polinom de gradul doi în variabilele sale:
Importanța problemelor
de programare patratică este motivată prin:
·
faptul că modelează cu
suficientă acuratețe multe situații practice;
·
se rezolvă prin metode derivate
din metoda simplex într-un număr finit de pași;
·
rezolvarea multor probleme cu
restricții liniare și funcție obiectiv neliniară se poate reduce la rezolvarea
unei secvențe de probleme de programare patratică ale căror funcții obiectiv
aproximează din ce în ce mai bine obiectivul neliniar original.
3) Problemele de programare convexă se
caracterizează prin:
·
funcție obiectiv convexă dacă aceasta se minimizează (echivalent: funcție
obiectiv concavă dacă aceasta se maximizează);
·
restricțiile inegalități sunt de forma în care gi este o funcție convexă (echivalent cu gi funcție concavă);
·
eventualele restricții egalități sunt liniare, cerință motivată prin aceea că funcțiile liniare sunt
singurele funcții simultan convexe și concave.
Problemele convexe au
următoarele proprietăți fundamentale:
·
mulțimea soluțiilor admisibile
este convexă;
·
funcția obiectiv admite cel
mult un optim (minim sau maxim) local;
automat acesta va fi un optim global
și va reprezenta optimul problemei;
·
dacă optimul liber (nerestricționat) al funcției obiectiv nu este o soluție admisibilă
atunci optimul restricționat se
găsește cu necesitate pe frontiera
mulțimii A .
Importanța acestei clase
de probleme este covârșitoare. Într-adevăr:
·
programarea convexă include programarea liniară ;
·
în acest domeniu a fost depus
cel mai mare efort de cercetare și s-au obținut cele mai puternice rezultate teoretice (cum ar fi teoria dualității
neliniare, condițiile de optimalitate Kuhn Tucker) și practice (metode și algoritmi de optimizare);
·
întregul formalism matematic al
teoriei economice moderne se bazează pe ipotezele de convexitate.
4)Problemele de programare separabilă se
caracterizează prin faptul că funcția obiectiv f ca și funcțiile gI din restricții sunt separabile în sensul următoarei
definiții:
Funcția
se numește separabilă dacă ea se poate scrie ca o
sumă de funcții, fiecare de câte o singură variabilă:
Separabilitatea
este importantă prin aceea că ușurează optimizarea. De exemplu, optimizarea
unei funcții separabile fără restricții se reduce la optimizarea independentă a
termenilor!
5)
Problemele de programare neconvexă reunesc toate problemele care nu satisfac
ipotezele de convexitate. Ele sunt grele în primul rând din cauza faptului că
au mai multe minime locale. După cum s-a mai spus, metodele actuale pot
determina un asemenea optim dar nu garantează că optimul găsit este cel global.
Din fericire, există câteve tipuri de probleme neconvexe, utile în practică,
care pot fi rezolvate fără dificultăți deosebite prin metode speciale. rintre
aceste tipuri, se numără problemele de programare fracționară. Iată un exemplu:
unde se presupune că pe A ={x ÎRn ½½Ax £ b , x ³ 0}.
O asemenea problemă se
reduce la un program liniar uzual punând:
astfel că .
Rezultă programul liniar
echivalent în n + 1 variabile y = (y1,y2,
,yn) și t:
§ 5. Mulțimi și funcții convexe
Reamintim că o mulțime C Í Rn se numește convexă
dacă o dată cu două puncte conține și segmentul care le unește. Formal:
C este
convexă
Fie C o mulțime
convexă și f o funcție numerică
definită în toate punctele mulțimii C. Spunem că f este convexă dacă:
avem:
Vom zice că f este concavă dacă funcția opusă
f este convexă. Aceasta revine la:
Funcția f se numește strict convexă (strict concavă)
dacă inegalitățile de mai sus sunt stricte
și .
Exemple de funcții convexe
1)
Pentru
funcțiile de o singură variabilă, convexitatea se traduce prin faptul că
graficul ține apa. Dacă I este un interval deschis (deci o mulțime convexă
din R) și f este o funcție definită
pe I și care este de două ori derivabilă pe I atunci f este convexă .
2) Orice funcție liniară de n variabile
este simultan
convexă și concavă.
3) Dacă f și g sunt funcții
convexe cu același domeniu convex de definiție și a ³ 0 , b ³ 0 atunci combinația af + bg este deasemenea o funcție convexă.
4)Să considerăm funcția patratică în n variabile:
definită în întreg Rn. Dacă punem:
f se scrie condensat:
Notăm că prin
construcție, matricea C este simetrică.
Cercetăm în ce condiții f este o funcție convexă. Deoarece
partea liniară este convexă, chestiunea se reduce la a vedea în ce condiții
funcția pur patratică este convexă. Un calcul direct arată că j satisface identitatea:
Acum, dacă lÎ[0,1], identitatea precedentă echivalează convexitatea funcției j cu condiția:
cerință care, după cum este cunoscut din algebra liniară, definește matricea C ca matrice pozitiv semidefinită.
Cu același raționament conchidem că j este strict convexă dacă și numai dacă matricea C este pozitiv definită adică:
și
Recapitulând
obținem:
Funcția
patratică este
convexă (strict convexă) dacă și numai dacă matricea simetrică C este pozitiv
semidefinită (pozitiv definită).
Reamintim că
matricea simetrică este pozitiv semidefinită (pozitiv definită)
dacă și numai dacă toți minorii care se sprijină pe diagonala principală,
adică:
sunt ³ 0 (respectiv > 0).
6)
Mai
general, fie f o funcție definită și având derivate parțiale de ordinul doi în
orice punct al unei mulțimi convexe deschise C din Rn. Atunci f este
convexă dacă și numai dacă matricea hessiană
este pozitiv semidefinită, în fiecare punct x Î C. Dacă este pozitiv definită în orice punct din C, funcția f este strict convexă.Într-adevăr să fixăm un x Î C și un z Î Rn oarecare.Considerăm funcția de o singură variabilă:
definită pentru toți t Î R cu proprietatea că x + tz Î C (acești t există cu siguranță și deoarece C este o mulțime deschisă, ei formează un interval deschis în R ce conține 0). Evident, funcția f este convexă dacă și numai dacă funcția g este convexă, indiferent de alegerea lui x Î C și a lui z Î Rn.Ca și f, g este de două ori derivabilă și
Atunci, f este convexă Û (") x Î C, (") z Î Rn și (") t Î R cu x +
tz Î C, , Û H(x)
este pozitiv semidefinită (") x Î C etc.
În
continuare, vom justifica unele proprietăți ale programelor convexe anunțate
deja în secțiunea precedentă.
Propoziție Fie funcții
convexe definite în toate punctele unei mulțimi convexe C Í Rn.
Atunci
mulțimea:
A =
este convexă.
Demonstrație Deoarece :
A = Ç
Ç
și o intersecție de mulțimi convexe este încă o
mulțime convexă, va fi suficient să arătăm că dacă g este o funcție convexă pe C atunci mulțimea :
A =
este convexă.
Fie x,y Î A și l Î [0,1]; atunci g(x) £0 , g(y) £0 astfel că:
Prin urmare (1-l)x + ly Î A .
Consecință Mulțimea soluțiilor admisibile ale unui program convex este o mulțime convexă.
Teoremă Considerăm problema de
optimizare convexă: min{ f ( x
)½x ÎA } în care A este mulțimea convexă a soluțiilor admisibile
iar f este o funcție convexă pe A . Dacă f are în x* Î A un
minim local atunci x*
este un punct de minim global al
funcției f pe întreg A .
Demonstrație Prin ipoteză, f ( x*) £ f ( x ) oricare ar fi x Î A , suficient de aproape de x*. Presupunem prin absurd că x* nu este un minim global al funcției f : există atunci x**Î A astfel încât f ( x**) < f ( x* ). Să considerăm acum un punct interior variabil pe segmentul [x*, x**] :
Deoarece A este convexă, toate aceste puncte sunt în A . Funcția f fiind convexă avem:
Pentru l suficient
de mic, z se va afla în
imediata apropiere a lui x*
și deci, conform ipotezei, f( z ) ³ f( x*
), în contradicție cu cele arătate mai sus. Contradicție ! Deci x* este un minim global al
funcției f.
§ 6. Optimizare fără restricții
6.1 Introducere Fie f o funcție numerică de n
variabile pe care, pentru simplitate, o presupunem definită și cu derivate
parțiale cel puțin de ordinul doi în fiecare punct din Rn.
Considerăm problema de optimizare fără
restricții:
(P) Să se determine x*ÎRn cu proprietatea:
În legătură cu
această problemă, analiza matematică clasică furnizează următorul rezultat
fundamental:
Teoremă Dacă x* este un punct
de extrem local al funcției f, atunci Ñf(x*) = 0, unde
(6.1)
este gradientul funcției f. Reciproc, dacă x*Î Rn
este un punct în care condiția (1) are loc și în plus matricea hessiană H(x*) este pozitiv
definită, unde
atunci x* este un punct de minim local al funcției f.
Prin urmare, soluția optimă a problemei (P) trebuie
căutată printre soluțiile sistemului de n
ecuații în n variabile, în general
neliniar:
(6.2)
Însă rezolvarea sistemului (6.2), cel puțin
în sensul uzual al termenului, este practic imposibil de făcut în
cvasitotalitatea cazurilor practice. Chiar și în cazul fericit în care, prin
mijloace analitice adică cu
formule am putea găsi o soluție a sistemului (6.2) nu avem nici o garanție
că aceasta este soluția optimă a problemei (P): ea ar putea fi foarte bine un
punct de maxim local sau un punct șa sau, în cel mai bun caz, un
minim local diferit de cel global! Astfel apare necesitatea considerării altor
metode de abordare a problemei (P).
6.2 Principiul metodelor de
optimizare fără restricții Ideea comună a tuturor metodelor de minimizare nerestricționată (liberă)
este următoarea:
·
Se generează un șir de puncte x0, x1, x2
din Rn, numite în continuare aproximații.
Punctul inițial x0 este dat,
alegerea sa fiind făcută de utilizator
în funcție de specificul problemei (P). O dată obținută aproximația xk, noua aproximație xk+1 se determină astfel:
·
Se alege o direcție de deplasare sk
precum și un pas al deplasării ak ; sk este un vector nenul
din Rn de regulă ; ak este un scalar pozitiv.
·
Se pune:
(6.3)
În principiu, vectorul sk este astfel ales încât
prin deplasarea din xk în direcția sk, să se
obțină cel puțin în
prima fază a deplasării
o descreștere a valorii funcției de minimizat f.
O dată stabilită
direcția de deplasare sk,
pasul
ak se alege astfel încât:
Prin urmare:
Mai precis ak se găsește prin minimizarea funcției de o singură variabilă:
(6.4)
Pentru a obține o metodă
efectivă de minimizare este necesar
să se precizeze:
·
modul de alegere a direcției de
deplasare sk, k = 0,1,2,
;
·
modul de alegere a pasului ak altfel spus, modul în care se
execută minimizarea funcției unidimensionale g(a) din (6.4);
·
procedeul de oprire a
procesului iterativ.
Decisivă în diferențierea metodelor
concrete atât în ceea ce fundamentul teoretic cât și performanțele numerice
este prima chestiune, legată de alegerea direcției de deplasare.
Este foarte important de reținut că dacă funcția de
minimizat nu are proprietăți adiționale bune, cum ar fi aceea de a fi convexă,
rezultatul aplicării acestor metode se materializează în cel mai bun caz,
într-un minim local de regulă cel mai apropiat de punctul inițial x0. În practică, pentru a
obține toate minimele locale și în particular minimul global, se procedează la repetarea minimizării din mai multe
puncte inițiale, judicios alese.
Marea majoritate a metodelor de minimizare
nerestricționată presupun diferențiabilitatea funcției obiectiv ; există totuși
și scheme de minimizare pentru funcții nediferențiabile!
6.3 Gradientul unei funcții. Proprietăți În
ipotezele și notațiile precedente, o hipersuprafață de nivel a funcției f este mulțimea punctelor care satisfac o ecuație de forma: f( x
) = C, unde C este o constantă. În cazul a două (respectiv trei) variabile vom
vorbi despre curbe (respectiv,suprafețe) de nivel. Astfel pentru funcțiile:
curbele de
nivel sunt: a) drepte paralele; b)
cercuri concentrice; c) elipse
concentrice (vezi fig. 6.2)
Gradientul funcției f este vectorul:
Acesta are următoarele proprietăți:
· În orice punct de extrem
local x* al funcției f avem Ñf(x*) = 0; reciproca nu este în
general adevărată.
·
Fie un punct în care .Atunci este direcția de deplasare din corespunzătoare celei mai rapide descreșteri
afuncției f. Analog, este direcția celei mai rapide creșteri.
Într-adevăr, să considerăm
o direcție oarecare și
funcția :
care indică variația funcției f pe direcția de deplasare s
din .
După
cum se știe, variația (adică creșterea sau descreșterea) potențială
sau incipientă a funcției f pe direcția s plecând din , este dată de derivata .
În general:
astfel că:
Din inegalitatea Cauchy Buniakovski Schwarz:
rezultă că are cea mai
mică valoare pentru
și cea mai
mare pentru s = .
·
Dacă , atunci acest vector
este perpendicular pe hipersuprafața de nivel
ce trece
prin 9vezi fig. 4.8
Figura 6.3
Exemplul 6.1 Considerăm funcția patratică:
Curbele sale de nivel
sunt elipse cu centrul în punctul care
reprezintă și punctulde minim global
al funcției.Gradientul lui f:
în punctul = (1,1) este nenul: = (32,-6). Cea mai rapidă descreștere a funcției f plecând din are loc pe
direcția = (-32,6) vezi fig. 6.4
Atenție: pe direcția celei mai rapide descreșteri,
funcția nu descrește neîncetat! Pentru ilustrare, în exemplul de mai sus,
să considerăm un punct variabil pe direcția celei mai rapide descreșteri din = (1,1):
Pe această direcție, comportarea funcției f este descrisă de funcția:
a cărei variație este
arătată în fig.6.5
Se observă că atunci
când a crește
de la 0 la 0.032 (= punctul în care g(a) are
valoarea minimă), funcția g și deci
și funcția f scad de la valoarea 25
la valoarea 7.893 după care încep din nou să crească!
6.4 Criterii de
oprire ale procesului iterativ de minimizare 1) Deoarece într-un punct
de minim local avem Ñf(x*) = 0, procesul de
minimizare se poate opri în momentul în care:
sau:
unde e este
un număr pozitiv foarte mic, ca de exemplu e = 10-5.
3) De multe ori este preferabil să oprim
procesul iterativ în momentul în care variația funcției obiectiv în două
aproximații succesive nu depășește o toleranță dată:
3) Se poate întâmpla ca, din cauza unei nefericite alegeri a aproximației
inițiale x0 sau a
structurii funcției de minimizat, procesul iterativ, deși convergent, să fie
foarte lent. În asemenea situații, timpul de calcul poate atinge valori nepermis
de mari. Vom evita acest inconvenient limitând din start numărul iterațiilor
posibil de efectuat.
6.5 Minimizarea
unei funcții de o singură variabilă În secțiunea introductivă am văzut că
toate metodele de minimizare nerestricționată a unei funcții f de
mai multe variabile necesită minimizarea unei funcții g(a) de o singură variabilă.Deoarece
minimizarea unidimensională se
efectuează la fiecare iterație a
procesului de minimizare multidimensională
este clar că eficacitatea procesului multidimensional depinde de calitățile
procesului unidimensional.
În continuare vom presupune că în prealabil am localizat un punct de minim x* al funcției g
într-un interval (a,b) suficient de mic.
În general, metodele de minimizare unidimensională se
bazează pe una din următoarele idei:
·
Se aproximează funcția g pe intervalul (a,b) printr-un polinom de
interpolare de grad doi sau trei al cărui punct de minim din (a,b) se determină ușor pe baza unei formule. Punctul de minim astfel
calculat se consideră a fi o bună aproximare
a punctului de minim x*
căutat.
Construcția
polinomului de interpolare se poate face folosind:
·
numai evaluări ale funcției g (în câteva puncte);
·
evaluări atât ale funcției g cât și ale derivatei sale.
De exemplu:
·
putem construi un polinom de
interpolare de gradul trei utilizând
valorile funcției g și ale derivatei
sale în punctele
a și b ce mărginesc punctul de minim căutat.
·
putem construi un polinom de
interpolare de gradul doi utilizând
valorile funcției g în a și
b precum și într-un al treilea punct cÎ (a,b) de obicei se ia .
·
Se micșorează progresiv
intervalul (a,b) la un interval care de
asemenea conține pe x* și
a cărui lungime este inferioară unei toleranțe date:
număr foarte mic.
Atunci orice punct din aproximează x* cu toleranța e în sensul că:
Micșorarea intervalului
(a,b) se face cu ajutorul evaluării
funcției g și/sau ale derivatei sale
într-un număr de puncte din interiorul lui (a,b).
Cele mai cunoscute metode de acest fel sunt metoda bisecției succesive, metoda secțiunii
de aur și metoda Fibonacci.
În figura 6.6 este
prezentată schema logică a metodei
bisecției succesive ; justificarea metodei rezultă imediat din situațiile
ilustrate în figurile 6.7a) și 6.7b).
Pentru a înțelege modul de acțiune al metodelor bazate
exclusiv pe evaluarea funcției de minimizat în diferite puncte sunt necesare
câteva pregătiri.
Deoarece în intervalul de
localizare (a,b) am presupus că f are un unic punct de minim x* (vezi fig. 6.8) urmează că oricare ar fi x1 < x2 din (a,b) :
dacă
și
dacă
Alegem două puncte xS și xD
în (a,b)
astfel încât xS < xD pe care le vom
numi puncte
interioare. Dacă
,atunci cu necesitate
x* se va
afla în intervalul (a,xD).
Dacă din contră, , atunci cu siguranță x*
va fi în (xS,b).Cele două situații sunt ilustrate în
figurile 6.9a) și 6.9b).
Figura
6.9a)
Figura 6.9b)
Observăm că noul
interval mai mic conține cu necesitate unul din punctele interioare alese. Dacă
în noul interval mai mic alegem încă un punct interior putem repeta
considerațiile precedente.
Metodele de
minimizare unidimensională bazate pe evaluări multiple se diferențiază prin
modul de alegere a celor două puncte interioare xS și xD.
Vom descrie în
continuare metoda secțiunii de aur. Fie .
START.
Inițializăm:
·
extremitățile intervalului
curent care
conține punctul de minim x*
căutat:
·
punctele interioare:
Evaluăm
funcția f în xS și xD.
Conținutul unei
iterații:
Pasul 1. Se
compară . Dacă:
·
se merge la
pasul 2.
·
se merge la
pasul 3.
Pasul 2. ( x* se află în
intervalul și tot aici se găsește și xS)
Actualizăm:
Dacă h < e se merge la pasul 4. Altminteri, actualizăm:
Evaluăm
f în (noul) xS. Ne întoarcem la pasul 1 în cadrul unei noi iterații.
Pasul 3. ( x* se află în
intervalul și tot aici se găsește și xD)
Actualizăm:
Dacă h < e se merge la pasul 4. Altminteri, actualizăm:
Evaluăm
f în (noul) xD. Ne întoarcem la pasul 1 în cadrul unei noi iterații.
Pasul 4. .
6.6 Schema logică de principiu
a metodelor de optimizare nerestricționată
Considerațiile
precedente conduc la schema logică de principiu din fig. 6.10. Elementele
esențiale ale blocurilor P (alegerea
Pasului deplasării) și O (Oprirea
procesului iterativ) au fost deja discutate în secțiunile 6.4 și 6.5.În ceea ce
privește blocul D (alegerea Direcției de deplasare) acesta diferă
de la metodă la metodă. Cea mai simplă metodă de minimizare nerestricționată,
datorată lui Cauchy va fi prezentată
în continuare.
6.7 Metoda gradientului (Cauchy)
La fiecare iterație a algoritmului din fig.6.10
direcția de deplasare este dată de relația:
cu condiția ca
Această opțiune se
bazează pe faptul că este direcția
celei mai rapide descreșteri din xk.
Caracteristic acestei
metode este faptul că două direcții de deplasare consecutive sunt perpendiculare! Într-adevăr,
dată
direcția
sk, lungimea pasului ak al deplasării
se află,
așa
cum s-a mai spus, minimizând funcția unidimensională:
Prin urmare .Am văzut că: - a se revedea secțiunea 6.3! așa încât:
Pentru
funcțiile sferice de forma:
metoda gradientului oferă punctul de minim (global)
într-o singură iterație, indiferent de aproximația inițială x0 (vezi
fig. 6.11a) Pentru orice altă funcție șirul de aproximații:
x0 , x1 , x2
,
. pentru care f(x0) > f(x1) > f(x2)
>
conduce în general la un optim local.
Principalul
neajuns al metodei gradientului constă în faptul că pașii succesivi sunt
perpendiculari fapt care, în cazul anumitor funcții, conduce la o convergență
foarte lentă. Mai precis, dacă hipersuprafețele de nivel au o oarecare excentricitate zig zagul procesului
iterativ amendează convergența,deoarece în acest caz direcția gradientului este
mult diferită de direcția către minim (vezi fig. 6.11b)
Există
scheme de minimizare mult mai eficiente dintre care cea mai puternică pare a fi
metoda Davidon Fletcher Powell [3].
În principiu,aceste metode garantează obținerea minimului unei funcții
patratice de n variabile în cel mult n pași.
Exemplu numeric Vom efectua câteva
iterații pentru căutarea minimului funcției:
cu metoda gradientului.
Punctul de plecare x0 = (1,1)
Gradientul funcției:
· Ñf(x0) = [0,1]
· s0 = -Ñf(x0) = [0,-1]
· x(a)= x0 + as0 = [1,1] + a[0,-1] = [1,1 - a] , a > 0
·
g(a) =
f(x(a)) = 2a2 - a are un minim în a0 = ¼
· x1 = x(1/4) =
[1,3/4]
· Ñf(x1) = [1/2,0]
· s1 = -Ñf(x1) = [-1/2,0]
· x(a)= x1 + as1 = [1,3/4] + a[-1/2,0] = [1 - a/2,3/4] , a > 0
·
g(a) = f(x(a)) = are un
minim în a1 = ½
· x2 = x(1/2) =
[3/4,3/4]
· Ñf(x2) = [0,1/2]
· s2 = -Ñf(x2) = [0,-1/2]
· x(a)= x2 + as2 = [3/4,3/4] + a[0,-1/2] = [] , a > 0
·
g(a) =
f(x(a)) = are un
minim în a2 = 1/4
·
x3 = x(1/4) =
[3/4,5/8]
La iterația 4 se obține
[5/8,5/8] ș.a.m.d. Funcția dată este convexă (exercițiu!) având un minim în x*
= [1/2,1/2]. În figura 6.12 se poate constata apropierea în zig zag a
punctelor x0 , x1 , x3
de x*.
§ 7. Optimizarea neliniară fără
restricții.
Cazul convex
Reluăm
problema de optimizare generală sub forma:
(P) Să se determine x* Î A Í Rn cu proprietatea: f(x*)
= inf {f(x) , xÎ A}
unde A ,numită
și
mulțimea
soluțiilor
admisibile ale problemei (P) este definită de o mulțime
de restricții:
gi(x)
£ 0 iÎ M = {1,2,...,m}
Pentru simplificarea expunerii, eventualele condiții
de nenegativitate xj ³ 0 au
fost incluse în
blocul restricțiilor
sub forma: -xj £ 0.
Presupunem că funcțiile
f și
g1 , g2 ,..., gm sunt definite în
întreg
spațiul
Rn, sunt convexe și
diferențiabile și
cel puțin
una dintre ele este neliniară,
altminteri (P) ar fi un program liniar.Astfel, (P) este o problemă
de programare convexă.
Reamintim că în
acest context:
· A este o mulțime
convexă și
închisă;
· orice minim local al funcției f pe mulțimea A este un minim
global.
(vezi secțiunea
5)
Metodele de
optimizare cu restricții se împart în trei
categorii:
1) Metode bazate pe adaptarea schemei generale de
optimizare nerestricționată la cazul prezenței restricțiilor; aceste metode poartă numele generic de metode de
gradient.
2) Metode bazate pe utilizarea funcțiilor de penalizare : rezolvarea problemei (P) se reduce la o suită
(teoretic infinită) de optimizări nerestricționate.
3) Metode bazate pe plane
de secțiune; în principiu,aceste metode "aproximează" A printr-o
mulțime poliedrală adică printr-o mulțime ce poate fi descrisă printr-un sistem de inegalități liniare; rezolvarea problemei (P) se reduce la o secvență
(infinită) de optimizări liniare efectuate cu ajutorul algoritmului
simplex.
7.1 Principiul metodelor de gradient
Aplicarea schemei generale de minimizare nerestricționată
trebuie să
țină
seama de următoarele
aspecte:
·
de regulă soluția
optimă x* a problemei (P) se găsește pe frontiera lui A , adică satisface cu egalitate cel puțin una
din restricțiile gi(x) £ 0, iÎ M.
·
chiar dacă se
pleacă de la
un punct inițial x0 situat în interiorul lui A (Û gi(x) < 0,i Î M) se
ajunge relativ repede la un punct xk
situat chiar pe frontieră altfel spus care satisface cu egalitate o parte din restrițiile
problemei (P):
gi(xk)
= 0 , iÎ I Ì M
Într-o atare situație, direcția celei mai rapide descreșteri -Ñf(xk) s-ar putea să nu mai fie admisibilă adică:
(vezi fig. 7.1)
Introducem următoarea
terminologie:
· o direcție
s (s Î Rn, s ¹ 0) se va numi admisibilă relativ la
punctul curent xk+1 dacă
o deplasare suficient de mică din xk pe direcția
s ne menține
în
A ;
·
direcția s se
va numi utilizabilă dacă deplasarea din xk pe
direcția s
duce la scăderea valorii funcției obiectiv.
Se
poate arăta că o direcție s este admisibilă și
utilizabilă relativ la punctul curent xk dacă și numai dacă s satisface condițiile:
(7.1)
O dată
stabilită direcția de deplasare sk din xk - direcție care
verifică condițiile (7.1) - pasul ak se alege astfel încât noua
aproximație :
xk+1 = xk + akŚsk
să aibe proprietățile:
xk+1 Î A ( Û gi(xk+1) £ 0 , i Î M) și f(xk+1) < f(xk)
Cu acest amendament - legat
de modul de alegere a direcției de deplasare - schema generală
de minimizare nerestricționată funcționează
și
în
cazul prezenței
restricțiilor.
7.2 Principiul
metodelor bazate pe funcții de penalizare
În esență,
aceste metode încorporează
restricțiile
problemei (P0 în
funcția
obiectiv prin intermediul unei funcții care penalizează nerespectarea
lor.
Pentru ilustrare să considerăm funcția:
al cărei
grafic este dat în fig 7.2. Considerăm problema de minimizare fără
restricții:
Evident:
În consecință,orice
procedeu de minimizare a funcției F se va orienta către punctele
mulțimii
A și deci va
minimiza funcția
originală
f. Dificultatea majoră
rezidă
în
faptul că
funcția
de penalizare m are o discontinuitate în 0 care atrage după sine
discontinuitatea funcției F pe frontiera lui A ! Cum de
regulă
punctul de optim x* se află pe frontieră, metodele de minimizare bazate pe gradient nu sunt aplicabile deoarece
gradientul funcției F nu este definit pe frontiera lui A .
Totuși ideea de a adăuga un termen la expresia funcției f care să penalizeze o eventuală "ieșire" din A și de a
minimiza "liber" funcția rezultată poate fi salvată utilizând în locul funcției m o funcție mai puțin "rigidă" care să aibe proprietățile de
regularitate (continuitate, diferențiabilitate) reclamate de utilizarea metodelor de gradient. Un exemplu ar
putea fi funcția:
cu ajutorul căreia construim
problema de minimizare fără restricții
Acum,penalizarea
pentru ieșirea
în
afara mulțimii
A nu mai este "infinită" astfel că soluția
optimă
a problemei (P') ar putea să nu fie în A , altfel spus ar putea încălca
unele restricții.Pentru
a diminua aceste încălcări
amplificăm
efectul penalizării
înmulțind
termenul de penalizare cu o constantă r > 0 suficient de
mare. (P') devine:
Introducerea
multiplicatorului r mărește excentricitatea
hipersuprafețelor
de nivel ale funcției
F; or, este știut
că
excentricitatea pronunțată influențează
negativ viteza de convergență a tuturor algoritmilor de minimizare
nerestricționată.
Dificultățile
semnalate au condus la următoarea schemă de lucru. În locul rezolvării unei singure probleme de minimizare fără restricții se
va rezolva o secvență de
asemenea probleme. Concret, se începe rezolvarea problemei (P'') cu o constantă r0
nu prea mare; fie x0 soluția optimă. Dacă x0 Ï A se reia (P'') cu un multiplicator r1
> r0 utilizând x0 ca aproximație inițială. Fie x1 noua soluție optimă. Dacă nici x1 Ï A schimbăm r1 cu r2> r1 etc. Se poate arăta că dacă rk
ź ¥ atunci
șirul x0
, x1 , x2 ...converge către soluția
optimă a
problemei cu restricții (P).
Să
observăm
că
soluțiile
intermediare x0 , x1 , x2 ... nu sunt
admisibile și
din acest punct de vedere metoda descrisă seamănă
cu algoritmul simplex dual din programarea liniară. Acest fapt
poate fi un serios dezavantaj deoarece dacă pentru anumite
restricții
nu sunt permise nici cele mai mici încălcări
atunci nici o soluție intermediară nu poate fi reținută
în
caz de oprire a procesului iterativ.
§8 Condițiile
de optimalitate Kuhn - Tucker în programarea convexă
8.1 Formularea condițiilor
Considerăm
un program convex (P) pe care îl
presupunem adus la următoarea formă zisă
canonică:
Să se determine x* Î Rn cu proprietatea:
f(x*)
= min f(x)
(P) minimul
fiind luat după
toți
x Î Rn care satisfac restricțiile:
gi(x)
£ 0 i = 1,...,m
și condițiile
de nenegativitate:
x ³ 0 Û xj ³ 0 j = 1,...,n
Pentru
simplitatea expunerii vom presupune că funcțiile
convexe f și
g1 , g2 ,..., gm sunt definite și
diferențiabile
în
întreg
spațiul
Rn.
Asociem fiecărei restricții
gi(x) £ 0 o variabilă
nenegativă
ui și
construim funcția:
Funcția L se
numește lagrangianul problemei (P) iar u1
, ... ,um se numesc multiplicatori
Lagrange. Se observă imediat că pentru xÎRn fixat L este o funcție liniară în u1
,..., um iar pentru u ³ 0
fixat în Rm, L este o funcție convexă și
diferențiabilă.
Vom presupune îndeplinită următoarea
condiție,
numită
condiția de regularitate
Slater:
Există
cu proprietatea că
și
altfel spus, mulțimea
soluțiilor
admisibile A = { xÎRn êgi(x) £ 0 , x ³ 0} are interiorul relativ nevid.
Cu aceste pregătiri putem enunța următoarea:
Teoremă
(Kuhn - Tucker) Condiția necesară și
suficientă
ca x*ÎRn să
fie o soluție
optimă
a problemei (P) este să existe u* ÎRm astfel încât
cuplul (x*,u*) să verifice relațiile:
|
|
|
|
|
|
|
i = 1,...,m j = 1,...,n |
|
xj ³ 0 (3) |
ui ³ 0 (3') |
|
Condițiile încadrate
sunt cunoscute sub numele de condițiile de optimalitate Kuhn -
Tucker.
Deși este un rezultat de factură pur teoretică, teorema de mai sus este la baza multor algoritmi eficienți de
rezolvare a programelor neliniare convexe cum sunt, de exemplu, cei utilizați în
programarea patratică.
Observație : Condiția de regularitate Slater intervine în probarea suficienței condițiilor de optimalitate K- T. Ea nu mai este necesară în cazul
în care
restricțiile programului (P) sunt liniare.
Exemplul 8.1 Considerăm programul neliniar
patratic:
a cărui formă canonică este:
Fig. 8.1 confirmă faptul că
(P) este un program convex: mulțimea soluțiilor admisibile este
convexă,
chiar poliedrală
fiind definită
prin inecuații
liniare iar curbele de nivel f(x) = c(onstant) sunt parabole cu axa de simetrie
comună x = 1. Desenul sugerează
că
soluția
optimă
x* satisface cu egalitate restricția x1 + x2
£ 3 și cu
inegalitate strictă cealaltă restricție
și
condițiile
de nenegativitate.Aceste concluzii "calitative" și
condițiile
de optimalitate K - T ne vor permite să determinăm
punctul x*.
Asociem
celor două
restricții
variabilele nenegative u1 și u2 și construim lagrangianul:
L = -2x1
- x2 + x12 + u1(x1 + x2
- 3) + u2(3x1 - 2x2 - 6)
Scriem condițiile de
optimalitate K - T:
|
|
|
|
|
|
Reamintim interpretarea acestor condiții: este soluția optimă a programului (P) dacă
și
numai dacă
există
astfel încât
cuplul să satisfacă relațiile
mai sus scrise.
Deoarece la optim avem: x1 > 0 , x2
> 0 și
3x1 - 2x2 < 6 din relațiile (1.1') , (1.2') și
(2.2') obținem:
-2 + 2x1 +u1
+ 3u2 = 0 , -1 + u1 - 2u2 = 0 și u2 = 0 care împreună cu x1 + x2 = 3 constituie un sistem de patru ecuații cu
patru variabile x1 , x2 , u1 , u2. Rezultă
ușor:
de unde .
8.2 Condițiile Kuhn -
Tucker în
programarea liniară
Evident, orice program liniar este un program
convex și
ca urmare teorema de optimalitate Kuhn - Tucker funcționează
și
pentru programele liniare. După cum
vom vedea , în acest caz teorema amintită se suprapune peste un rezultat fundamental al dualității
liniare.
Să
considerăm
un program liniar în formă
canonică
de maximizare (în notațiile uzuale):
Rescriem (P) în forma canonică în care am studiat programele convexe și asociem celor m restricții variabilele u1 , u2 ,..., um:
Lagrangianul problemei (P) are expresia:
Condițiile de
optimalitate K - T:
|
|
|
|
|
|
se interpretează
astfel:
este o soluție
optimă a
programului (P) dacă și numai
dacă există astfel încât
cuplul să
verifice relațiile mai sus scrise.
Observăm că relațiile (2i) i = 1,...,m și (3) definesc x* ca
soluție
admisibilă a problemei (P) în timp ce relațiile (1j) j = 1,...,n și (3')
definesc u* ca soluție admisibilă a problemei duale:
Û
Obținem următoarea reformulare a
relațiilor
K - T:
Condiția
necesară
și
suficientă
ca soluția
admisibilă
a problemei (P) să
fie o soluție
optimă
este să
existe o soluție
admisibilă
a problemei duale (Q)
astfel încât
cuplul (x*,u*)
să
verifice relațiile:
Am regăsit teorema
ecarturilor complementare din teoria dualității
liniare.
8.3 Condițiile de optimalitate
Kuhn - Tucker în
programarea patratică
Considerăm problema de
programare patratică:
în care:
= matrice simetrică
Vom presupune că matricea C este pozitiv semidefinită ; știm
atunci că
funcția
patratică
f este convexă
și
ca urmare, programul (P) este convex.
Asociem blocului de restricții Ax - b £ b vectorul (linie) de multiplicatori Lagrange u = [u1,u2,...,um]
și
construim lagrangianul problemei (P):
În scriere matricială, condițiile de optimalitate K - T pentru programul (P) arată
astfel:
|
|
|
|
x ³ 0 (3) |
u ³ 0 (3') |
Transformăm
inegalitățile (1)
și (2) în
egalități
introducând vectorii de variabile de abatere:
și
Atunci:
și Ax+y =
b
Se vede ușor că:
Cu aceste pregătiri putem formula următoarea
interpretare a relațiilor K - T:
Condiția
necesară
și
suficientă
pentru ca x* Î Rn să
rezolve programul patratic (P) este să existe astfel încât
să
verifice relațiile:
(4) Û
x ³ 0 , u ³ 0 , v ³ 0 , y ³ 0 Û xk ³ 0 , ui ³ 0 , vj ³ 0 , yi ³ 0
vŚx = 0 ; uŚy = 0 (5)
Û vjxj = 0
j = 1,...,n ; uiyi
= 0 i = 1,...,m
Se observă că (4)
este un sistem liniar cu m + n ecuații și 2m + 2n variabile. În concluzie:
Rezolvarea
programului patratic (P) s-a redus la determinarea unei soluții
admisibile (adică
nenegative) a sistemului liniar (4) care să verifice relațiile
de complementaritate (5).
În
principiu, aceasta se poate face cu ajutorul algoritmului simplex în felul următor:
·
se înmulțesc cu
-1 acele egalități din
(4) ai căror termeni liberi sunt < 0;
·
dacă, după
efectuarea operației precedente, matricea sistemului (4) nu conține o
submatrice unitate de ordinul m + n, ea se completează cu
coloanele care lipsesc adăugând - acolo unde este cazul - variabile artificiale nenegative.Astfel,
sistemul (4) devine:
unde:
și
· se rezolvă programul liniar:
cu ajutorul algoritmului
simplex, modificat cu următoarea regulă suplimentară care se referă la criteriul de intrare în bază:
La fiecare iterație, noua variabilă bazică va fi astfel aleasă încât:
·
variabilele vj și xj
să nu fie
simultan bazice j=1,...,n;
·
variabilele ui și yi
să nu fie
simultan bazice i=1,...,m.
La start se va pleca cu
soluția:
x = 0 , u = 0
Deoarece x = 0 , u = 0 ,relațiile de
complementaritate (5) sunt verificate. Regula suplimentară ne
asigură că la fiecare iterație:
vj = 0
sau xj = 0 deci vjxj
= 0 j = 1,...,n
ui
= 0 sau
yi = 0 deci uiyi
= 0 i = 1,...,m
Se poate arăta că dacă
programul (P) este compatibil atunci într-un număr finit de iterații se ajunge la o soluție în care (min)w = 0 Û toate variabilele artificiale introduse au
valoarea zero. Este clar atunci că s-a obținut o soluție admisibilă a sistemului (4) care satisface relațiile de complementaritate (5). Componenta x* a acestei soluții
constituie soluția optimă a programului patratic (P).
Observație Considerațiile de
mai sus constituie o descriere de principiu a algoritmului lui Wolfe pentru rezolvarea programelor
patratice convexe.
Exemplu numeric Vom arăta cum
se aplică efectiv condițiile de optimalitate K - T și algoritmul simplex la rezolvarea programului patratic:
Scriem matricial funcția obiectiv:
Matricea simetrică este chiar pozitiv definită astfel că
f este o funcție
strict convexă.
Lagrangianul problemei:
Condițiile de
optimalitate K - T:
|
|
|
|
|
|
|
x1 , x2
³ 0 |
u ³ 0 |
Punem:
Condițiile K
- T în forma
(4) - (5):
Știm că dacă
este o soluție admisibilă a sistemului (4) care
satisface relațiile
(5) atunci x* este o soluție
optimă
a problemei date.
Introducem variabilele artificiale z1 și
z2 în
primele două
egalități
și
rezolvăm
programul liniar:
cu ajutorul algoritmului
simplex, plecând de la soluția de bază inițială:
care satisface vizibil
condiția (5).
|
|
|
|
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
|
|
CB |
VB |
VVB |
x1 |
x2 |
u |
v1 |
v2 |
y |
z1 |
z2 |
|
|
1 |
z1 |
15 |
4 |
-4 |
1 |
-1 |
0 |
0 |
1 |
0 |
ITERAȚIA 1 Poate intra x2 |
|
1 |
z2 |
30 |
-4 |
8 |
2 |
0 |
-1 |
0 |
0 |
1 |
deoarece v2 = 0 |
|
0 |
y |
30 |
1 |
2 |
0 |
0 |
0 |
1 |
0 |
0 |
|
|
|
w |
45 |
0 |
4 |
3 |
-1 |
-1 |
* |
* |
* |
|
|
1 |
z1 |
30 |
2 |
0 |
2 |
-1 |
-1/2 |
0 |
1 |
1/2 |
ITERAȚIA 2 Poate intra x1 |
|
0 |
x2 |
15/4 |
-1/2 |
1 |
1/4 |
0 |
-1/8 |
0 |
0 |
1/8 |
deoarece v1 = 0 |
|
0 |
y |
45/2 |
2 |
0 |
-1/2 |
0 |
1/4 |
1 |
0 |
-1/4 |
|
|
|
w |
30 |
2 |
* |
2 |
-1 |
-1/2 |
* |
* |
-1/2 |
|
|
1 |
z1 |
15/2 |
0 |
0 |
5/2 |
-1 |
-3/4 |
-1 |
1 |
3/4 |
ITERAȚIA 3
Poate intra u |
|
0 |
x2 |
75/8 |
0 |
1 |
1/8 |
0 |
-1/16 |
1/4 |
0 |
1/16 |
deoarece y = 0 |
|
0 |
x1 |
45/4 |
1 |
0 |
-1/4 |
0 |
1/8 |
1/2 |
0 |
-1/8 |
|
|
|
w |
15/2 |
* |
* |
5/2 |
-1 |
-3/4 |
-1 |
* |
-1/4 |
|
|
0 |
u |
3 |
|
|
|
|
|
|
|
|
|
|
0 |
x2 |
9 |
Nu mai este cazul! |
|
|||||||
|
0 |
x1 |
12 |
|
|
|
|
|
|
|
|
|
|
|
w |
0 |
|
|
|
|
|
|
|
|
|
Prin urmare,o soluție a condițiilor
de optimalitate K - T este x*
= (12,9) și
u* = 3.În concluzie
este o soluție optimă
a programului patratic dat de altfel și singura având
în
vedere faptul că
funcția
obiectiv f este strict convexă.
§ 9. Întrebări
și
probleme
1. Se dă o funcție numerică
f definită
în
toate punctele unei mulțimi C Í Rn.
a) Ce înseamnă că mulțimea C este convexă?
Presupunând C convexă, ce înseamnă că funcția f este convexă (strict convexă)?
b) Ce înseamnă că punctul x* Î C este un punct de minim local al funcției f? Dar că x* este un punct de minim global al funcției f
pe C?
c) Arătați că dacă C este o mulțime convexă iar f este o funcție strict convexă atunci f nu poate avea decât cel mult un punct de minim global pe C.
2. a) Se consideră funcția
patratică j(x) = xTCx
, x Î Rn
unde C este o matrice simetrică de ordinul n. Să se arate că pentru orice x,y Î Rn și orice l Î R are
loc identitatea:
j((1 - l)x + ly) = (1
- l)j(x) + lj(y) - l (1 - l)j(x - y)
b) Scrieți
funcția
patratică:
în formatul matricial și cercetați dacă
f este o funcție
convexă
(strict convexă)
3. Descrieți principiul metodelor
de minimizare fără
restricții
4.Elaborați programe de
calculator pentru metodele de minimizare unidimensională prezentate în
secțiunea
6.5
5. Se dă funcția patratică
.
a)
Scrieți
f în
formatul matricial și
arătați
că
f este o funcție
strict convexă.
b)
Calculați
gradientul Ñf și determinați
minimul liber x* al funcției f.
c)
Determinați
direcția
celei mai rapide descreșteri a funcției f din x0
= (0,0) și
prima aproximație
x1 din metoda gradientului.
d)
Efectuați
încă
două
iterații
din metoda gradientului pentru minimizarea nerestricționată
a funcției
f. Comparați
x3 cu x* obținut la b).
6. În procesul de minimizare nerestricționată
a unei funcții
numerice de trei variabile ,efectuat cu metoda gradientului,printre direcțiile
de deplasare s-au numărat și vectorii s =
(1,1,-3), s' =
(2,-1,1). Este posibil ca cele două direcții să fi
fost obținute în două iterații consecutive?
7. Se consideră
programul convex:
și punctul aflat pe frontiera mulțimii
soluțiilor
admisibile (deoarece )
a)
Calculați
gradienții
funcțiilor
f și
g în
.
b)
Ce condiții
trebuie să
satisfacă
un vector s = (s1,s2) Î R2 pentru a fi o
direcție
admisibilă
și
utilizabilă
din ? Care din următorii vectori s1 = (-1,1) , s2
= (1,1) , s3 = (1,-1) satisfac aceste condiții?
8. Se dă
programul neliniar patratic:
a)
Vizualizați
mulțimea
soluțiilor
admisibile;
b) Ce formă au curbele de nivel ale funcției obiectiv? Stabiliți punctul de minim liber xÆ al funcției f;
c) Scrieți condițiile de optimalitate Kuhn - Tucker;
d) Stabiliți cu aproximație poziția soluției optime x* a programului (P) și folosind condițiile K - T determinați efectiv x*.
9. Se dă
programul neliniar;
a)
Reprezentați
grafic mulțimea
soluțiilor
admisibile și
curbele de nivel f(x) = 1 , f(x) = 4 ale funcției obiectiv;
b)Aduceți
programul (P) la forma canonică și scrieți
condițiile
de optimalitate K - T;
c)Determinați
soluția
optimă
x* a programului (P) știind că ea satisface cu
egalitate numai prima restricție a acestuia.
10. În modelarea unui proces de stocare cu două
produse și
spațiu
de depozitare limitat s-a ajuns la următorul program
neliniar:
unde a1 , a2 , I > 0 sunt
constante.
a) Să se arate că f este o funcție convexă pe domeniul {(x1,x2) Î R2 ê x1 > 0 , x2 > 0};
(se va observa că f este
separabilă și se va
cercete convexitatea componentelor)
b) Scrieți condițiile de optimalitate K - T pentru programul convex (P);
c) Determinați soluția optimă
a programului (P). Discuție.
11. Să se rezolve programul patratic:
folosind condițiile de optimalitate K
- T și
algoritmul simplex (vezi secțiunea 8.2)