CAPITOLUL  IV

 

 

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)

Figura 2.1

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


                                       a)                                                         b)       

Figura 2.2

 

 

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:

 

 

 


 

                                                       

 

 

 

                                                                                                                        Figura 3.1

 

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:

 

 

                                             

                                                                                                 Figura 3.2

 

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:

 

                           

 

Figura 6.1

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 .

 

 

 

 

Figura 6.2

 

            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

 

 

 

 

 

 

 

 

   

 

 

 

 

 

 

 

            

 

Figura 6.4                                                            Figura 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).

 

Figura 6.8

 

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:

Iterația 1

·   Ñ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]

 

Iterația 2

·   Ñ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]

 

Iterația 3

·   Ñ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)