UNIVERZITET U NIŠU PRIRODNO-MATEMATIČKI FAKULTET DEPARTMAN ZA RAČUNARSKE NAUKE Master rad Optimizacija u programskom paketu MATHEMATICA i primene Student: Dalibor Spasić Mentor: Prof. dr Predrag Stanimirović Niš, 2013.
Sadržaj 1 Formulacija optimizacionih problema 3 1.1 Problem optimizacije........................... 3 1.1.1 Projektovanje zgrade....................... 3 1.1.2 Opis podataka........................... 6 1.2 Standardna forma optimizacionog problema.............. 7 1.2.1 Višestruke ciljne funkcije..................... 7 1.2.2 Klasifikacija optimizacionih problema.............. 7 1.3 Rešenja optimizacionih problema.................... 8 1.3.1 Grafička optimizacija....................... 8 1.3.2 Numeričke metode za probleme bez ograničenja........ 9 1.3.3 Numeričke metode za opšte probleme nelinearnog programiranja 9 2 Matematičke osnove 10 2.1 Vektori i matrice............................. 10 2.1.1 Zapis i osnovne operacije..................... 10 2.1.2 Norma vektora.......................... 11 2.1.3 Determinanta kvadratne matrice................ 12 2.1.4 Inverz kvadratne matrice..................... 13 2.1.5 Sopstvene vrednosti kvadratne matrice............. 15 2.1.6 Glavni minori kvadratne matrice................ 15 2.1.7 Rang matrice........................... 16 2.1.8 Linearna nezavisnost vektora.................. 17 2.2 Aproksimacija pomoću Tejlorovog razvoja............... 18 2.2.1 Funkcije od jedne promenljive.................. 19 2.2.2 Funkcije od dve promenljive................... 20 2.3 Rešavanje nelinearnih jednačina..................... 21 2.4 Konveksne funkcije i konveksni problemi optimizacije......... 24 2.4.1 Konveksne funkcije........................ 24 2.4.2 Konveksni skupovi........................ 26 2.4.3 Konveksni problemi optimizacije................. 27 3 Grafička optimizacija 30 3.1 Procedura grafičkog rešavanja...................... 30 3.1.1 Izbor odgovarajućeg opsega za optimizacione promenljive... 30 3.1.2 Grafici funkcija ograničenja................... 31 3.1.3 Grafik ciljne funkcije....................... 33 3.2 Funkcija GraphicalSolution........................ 37 3.3 Primeri grafičke optimizacije....................... 38 3.3.1 Rešavanje primera........................ 38 3.3.2 Razdvojena oblast izvodljivosti................. 40 3.3.3 Projektovanje zgrade....................... 41 3.3.4 Portfolio menadžment...................... 43 1
4 Optimizacija bez ograničenja 46 4.1 Smer opadanja.............................. 46 4.2 Line search metode-računanje dužine koraka.............. 47 4.2.1 Analitički line search....................... 48 4.2.2 Ravnomerna pretraga intervala................. 50 4.2.3 Pretraga preseka......................... 52 4.2.4 Pretraga zlatnog preseka..................... 53 4.2.5 Metod kvadratne interpolacije.................. 55 4.3 Metode za minimizaciju bez ograničenja................ 58 4.3.1 Metod najstrmijeg pada..................... 59 4.3.2 Konjugovani gradijent...................... 65 4.3.3 Modifikovani Njutnov metod................... 71 4.3.4 Kvazi-Njutnove metode...................... 76 5 Nelinearna optimizacija pod ograničenjima 86 5.1 Normalizacija............................... 86 5.1.1 Normalizacija ograničenja.................... 86 5.1.2 Skaliranje optimizacionih promenljivih............. 88 5.2 Kaznene metode............................. 88 5.2.1 Spoljašne kaznene funkcije.................... 89 5.2.2 Unutrašnje kaznene funkcije................... 90 5.2.3 Kaznena funkcija uvećanog Lagranžijana............ 92 5.3 Linearizacija nelinearnog problema................... 108 5.3.1 Linearizovani problem...................... 108 5.3.2 Grafičko uporedivanje linearizovanog i originalnog problema. 108 5.4 Sekvencijalno linearno programiranje - SLP............... 110 5.5 Sekvencijalno kvadratno programiranje - SQP............. 113 5.5.1 Dualni QP za traženje smera................... 114 5.5.2 Merna funkcija.......................... 116 5.5.3 Minimizacija merne funkcije................... 117 5.5.4 SQP algoritam.......................... 118 2
1 Formulacija optimizacionih problema Problemi optimizacije se javljaju u mnogim različitim oblastima. Na primer, inženjer koji projektuje višespratnu zgradu mora da izabere materijale i proporcije za različite komponente zgrade, tako da dobije strukturu koja je sigurna i što je više moguće ekonomična. Menadžer investicionog fonda mora da izabere investicije koje investitorima omogućuju najveći mogući procenat povraćaja, a u isto vreme svode rizik od većih gubitaka na prihvatljivo nizak nivo. Menadžer nekog proizvodnog objekta mora da isplanira operacije tako da postrojenje proizvodi proizvode koji maksimiziraju prihode objekta i pritom zadovoljavaju potrebe mušterija i koriste samo one resurse koji su na raspolaganju. Naučnik u istraživačkoj laboratoriji pokušava da pronade matematičku funkciju koja najbolje opisuje posmatrani fizički fenomen. Svi prethodno navedeni problemi zapravo predstavljaju probleme optimizacije. Za sve ove situacije zajedničko je to da: 1. Postoji opšti cilj aktivnosti. 2. Pored opšteg cilja, obično ima i drugih zahteva, ili ograničenja, koji moraju biti ispunjeni. 3. U svim situacijama imamo nekoliko mogućih opcija, kada izaberemo pravu opciju, ispuniće se i cilj i ograničenja. Te opcije predstavljaju optimizacione promenljive. Promenljive koje ne utiču na cilj nisu važne. 1.1 Problem optimizacije Formulisanje optimizacionog problema podrazumeva definisanje opšteg cilja i zahteva(ograničenja) date aktivnosti, kao i njihovo zapisivanje u obliku dobro definisanih matematičkih izraza. Preciznije, formulacija optimizacionog problema obuhvata: 1. Odredivanje jedne ili više optimizacionih promenljivih, 2. Izbor funkcije cilja, i 3. Odredivanje skupa ograničenja. Ciljna funkcija i ograničenja moraju biti funkcije od jedne ili više optimizacionih promenljivih. Sledeći primeri ilustruju proces formulacije problema. 1.1.1 Projektovanje zgrade Arhitekta projektuje pravougaonu zgradu tako da potrošnja energije za grejanje i rashladivanje bude minimalna. Ukupna podna površina koja je potrebna iznosi 20000m 2. Veličina parcele ograničava dimenzije zgrade na 50m. Unapred je odlučeno da odnos izmedu planiranih dimenzija mora da bude jednak zlatnom odnosu(1.618) i da svaki sprat mora da ima visinu od 3.5m. Troškovi grejanja i hladenja su procenjeni na 100$ po m 2. Vlasnik je odredio da godišnji troškovi energije ne bi trebalo da
1 FORMULACIJA OPTIMIZACIONIH PROBLEMA prelaze cenu od 225000$. Potrebno je formulisati problem koji odreduje dimenzije zgrade koje minimiziuju troškove iskopavanja. Optimizacione promenljive Na osnovu datih podataka i sledeće slike, lako se identifikuju sledeće promenljive za dati problem: n=broj spratova d=dubina zgrade ispod zemlje h=visina zgrade l=dužina zgrade w=širina zgrade Slika 1.1: Skica zgrade Ciljna funkcija Cilj projektovanja je da se minimizuju troškovi iskopavanja. Pretpostavljajući da su troškovi iskopavanja proporcionalni obimu iskopavanja, ciljna funkcija se može zapisti na sledeći način: Minimizirati dlw 4
1 FORMULACIJA OPTIMIZACIONIH PROBLEMA Ograničenja Optimizacione promenljive nisu medusobno nezavisne. Pošto je visina svakog sprata zadata, broj spratova i ukupna visina zgrade moraju da budu u sledećem odnosu: d + h = 3.5 n Takode, zbog zahteva da odnos izmedu dimenzija zgrade bude jednak zlatnom odnosu, dužina i širina zgrade moraju da imaju odnos: l = 1.618w Ukupna podna površina jednaka je podnoj površini jednog sprata pomnoženoj sa brojem spratova. Na osnovu toga, imamo i sledeće ograničenje: nlw 20000 Zbog dimenzija parcele dužina i širina zgrade moraju da budu: l 50 w 50 Troškovi energije proporcionalni su spoljašnjoj površini zgrade. osnovu budžeta za energiju dobijamo sledeće ograničenje: Prema tome, na 100(2hl + 2hw + lw) 225000 Da bi problem bio i matematički precizan, neophodno je naglasiti da promenljive ne mogu da budu negativne. l, w, h, d 0 n 1,mora da bude ceo broj Kompletan problem optimizacije možemo da zapišemo na sledeći način: Pronaći vrednosti (n, l, w, h, d) koje minizuju dlw tako da važi: d+h n = 3.5 l = 1.618w nlw 20000 l 50 w 50 100(2hl + 2hw + lw) 225000 n 1 l, w, h, d 0 5
1 FORMULACIJA OPTIMIZACIONIH PROBLEMA 1.1.2 Opis podataka Nalaženje najbolje funkcije koja opisuje dati skup podataka može da se formuliše kao optimizacioni problem. Na primer, posmatrajmo nalaženje funkcije koja opisuje podatke koji se nalaze u sledećoj tabeli: Tačka x y z posmatrano 1 0 1 1.26 2 0.25 1 2.19 3 0.5 1 0.76 4 0.75 1 1.26 5 1 2 1.86 6 1.25 2 1.43 7 1.5 2 1.29 8 1.75 2 0.65 9 2 2 1.6 Forma funkcije se bira na osnovu prethodnog znanja o opštem obliku podataka. Za podatke iz tabele, razmatramo sledeću opštu formu z izracunato = c 1 x 2 + c 2 y 2 + c 3 xy Cilj je pronaći najbolje vrednosti za koeficijente c 1, c 2 i c 3 radi minimiziranja sume kvadrata greške izmedu izračunatih i posmatranih vrednosti za z. Optimizacione promenljive Vrednosti za koeficijente c 1, c 2, i c 3 Funkcija cilja Minimizirati f = 9 [z posmatrano (x i, y i ) z izracunato (x i, y i )] 2 i=1 Na osnovu datih numeričkih podataka, ciljna funkcija se može zapisati kao: ili f =(1.26 c 2 ) 2 + (2.19 0.0625c 1 c 2 0.25c 3 ) 2 + + (1.6 4c 1 4c 2 4c 3 ) 2 f =18.7 32.8462c 1 + 34.2656c 2 1 65.58c 2 + 96.75c 1 c 2 + 84c 2 2 43.425c 3 + 79.875c 1 c 3 + 123.c 2 c 3 + 48.375c 2 3 Celokupni problem optimizacije može da se zapiše na sledeći način: Pronaći koeficijente (c 1, c 2, i c 3 ) tako da oni minimizuju 18.7 32.8462c 1 + 34.2656c 2 1 65.58c 2 + 96.75c 1 c 2 + 84c 2 2 43.425c 3 + 79.875c 1 c 3 + 123.c 2 c 3 + 48.375c 2 3 6
1 FORMULACIJA OPTIMIZACIONIH PROBLEMA 1.2 Standardna forma optimizacionog problema Kao što smo prethodno videli, veliki broj problema kod kojih se koristi optimizacija se mogu zapisati u sledećoj formi: Pronaći vektor optimizacionih promenljivih, x = (x 1, x 2,..., x n ) T koji minimizira ciljnu funkciju f(x), pod ograničenjima g i (x) 0 i = 1, 2,..., m ograničenja u obliku nejednakosti h i (x) = 0 i = 1, 2,..., p ograničenja u obliku jednakosti x il x i x iu i = 1, 2,..., n opseg optimizacionih promenljivih Ograničenja opsega su zapravo ograničenja u obliku nejednakosti. Ona se ponekad odvajaju od drugih ograničenja zbog svoje jednostavne forme. Odredeni numerički optimizacioni algoritmi koriste njihovu specijalnu formu kako bi procedura izračunavanja bila efikasnija. Problem koji je zapisan kao u prethodno navedenoj formi nazivamo standardna forma problema optimizacije. Primećujemo da standardna forma uključuje samo probleme minimizacije. Problem maksimizacije može da se konvertuje u problem minimizacije ako jednostavno pomnožimo ciljnu funkciju sa -1. Pored toga, standardna forma uključuje samo nejednakosti koje su u obliku manje ili jednako ( ). Ako je ograničenje u obliku veće ili jednako ( ) nejednakosti, ono se može zapistai u obliku manje ili jednako množenjem obe strane nejednakosti sa -1. Prema tome, standardna forma je opštija nego što se to čini na prvi pogled. U stvari, ona obuhvata sve probleme koje ćemo dalje razmatrati. 1.2.1 Višestruke ciljne funkcije Ponekad imamo više od jedne ciljne funkcije koje bi trebalo minimizirati ili maksimizrati. Ovakve probleme je teže rešiti zato što su ciljne funkcije obično kontradiktorne. Jedan od načina za rešavanje ovakvih problema je da se svakoj ciljnoj funkciji dodeli težina u zavisnosti od njene relativne važnosti i da se zatim ciljna funkcija definiše kao suma ovih funkcija pomnoženih sa svojim težinama: f(x) = w 1 f 1 (x) + w 2 f 2 (x) + gde su w 1, w 2,... odgovarajući težinski koeficijenti. Tačnost ovog metoda najviše zavisi od izbora ovih koeficijenata. Druga mogućnost je da se najvažnija funkcija izabere kao ciljna funkcija a da se ostale tretiraju kao ograničenja. 1.2.2 Klasifikacija optimizacionih problema Metode za rešavanje opšte forme problema optmizacije su uglavnom kompleksne i zahtevaju znatna numerička izračunavnja. Specijalno, neki metodi su efikasniji kod odredenih specijalnih formi opšteg problema. Zbog ovoga su optimizacioni problemi obično podeljeni na sledeće tipove. 7
1 FORMULACIJA OPTIMIZACIONIH PROBLEMA Problemi bez ograničenja Ovi problemi imaju ciljnu funkciju ali nemaju nikakva ograničenja. Funkcija cilja mora da bude nelinearna(zato što je minimum neograničene linearne funkcije ). Problemi sa ograničenim optimizacionim promenljivima se mogu prvo rešiti kao neograničeni. Posle ispitivanja različitih opcija, bira se rešenje koje zadovoljava ograničenja promenljivih. Problemi linearnog programiranja (LP) Ako su ciljna funkcija i sva ograničenja linearne funkcije od optimizacionih promenljivih, problem nazivamo problemom linearnog programiranja. Efikasan i robustan algoritam, koji se naziva simpleks metod, koristi se za rešavanje ovih problema. Problemi kvadratnog programiranja (QP) Ukoliko je ciljna funkcija kvadratna a sva ograničenja su linearne funkcije od optimizacionih promenljivih, problem nazivamo problemom kvadratnog programoraja. Ove probleme je moguće rešavati korišćenjem proširenih metoda za rešavanje LP problema. Problemi nelinearnog programiranja (NLP) Opšti problemi optimizacije pod ograničenjima, kod kojih su jedna ili više funkcija nelinearne, nazivaju se problemima nelinearnog programiranja. Problem dizajniranja zgrade, koji je naveden u prvom odeljku, predstavlja problem nelinearne optimizacije. 1.3 Rešenja optimizacionih problema Postoje različiti načini rešavanja problema optimizacije, mi ćemo razmatrati sledeće metode: 1.3.1 Grafička optimizacija Za probleme koji imaju dve optimizacione promenljive, moguće je dobiti rešenje crtanjem kontura funkcija ograničenja i funkcije cilja. Ovo je opšti metod koji omogućava veoma dobar uvid u prostor svih izvodljivih tačaka. Medutim, pošto se rezultati čitaju sa grafika, metod ne daje veoma precizne odgovore. Pored toga, grafički metod nije moguće primenjivati na probleme koji imaju više od dve optimizacione promenljive. 8
1 FORMULACIJA OPTIMIZACIONIH PROBLEMA 1.3.2 Numeričke metode za probleme bez ograničenja Postoji nekoliko numeričkih metoda za rešavanje problema optimizacije bez ograničenja. Neki od ovih metoda su metod najstrmijeg pada, konjugovani gradijent i Njutnov metod. Ovi metodi imaju svoje prednosti i nedostatke. 1.3.3 Numeričke metode za opšte probleme nelinearnog programiranja Takozvani direktni metodi su zasnovani na nalaženju smera pretrage linearizacijom ciljne funkcije i ograničenja, a zatim se odgovarjući korak pravi u tom smeru. Trenutno jedan od najpopularnijih metoda, poznat kao metod sekvencijalnog kvadratnog programiranja, zasnovan je na ovoj ideji. Suštinski različit pristup se koristi kod tzv. kaznenih metoda. Kod ovih metoda, funkcije ograničenja se prvo pomnože sa odgovarajućim kaznenim funkcijama, a zatim se dodaju ciljnoj funkciji. Kao rezultat se dobija problem optimizacije bez ograničenja koji se može rešiti metodama za rešavanje takvih problema. Kaznena funkcija je definisana tako da se blizu granica ograničenja veoma velika pozitivna vrednost dodaje ciljnoj funkciji. Pošto pokušavamo da minimizujemo ovu funkciju, proces vodi ka zadovoljenju ograničenja i na kraju do minimuma problema pod ograničenjima. 9
2 Matematičke osnove 2.1 Vektori i matrice 2.1.1 Zapis i osnovne operacije Matrica predstavlja povoljan način za organizovanje izračunavanja kada se radi sa funkcijom koja ima više od jedne promenljive. Vektor od n elemenata se zapisuje kao matrica dimenzija n 1 na sledeći način: x = Elementi vektora se zapisuju pomoću indeksa. Vektor je uvek definisan kao kolona. Pošto transponovanje matrice transformiše kolone u vrste, ukoliko nam je potreban vektor u obliku vrste, on će biti zapisan sa simbolom za transponovanje, na sledeći način: x 1 x 2. x n x T = (x 1 x 2... x n ) Matrica A dimenzija m n i njena transponovana matrica se zapisuju na sledeći način: a 11 a 12 a 1n a 11 a 21 a m1 a 21 a 22 a 2n A (m n) =...., a 12 a 22 a m2 AT (n m) =.... a m1 a m2 a mn a 1n a 2n a mn Elementi a 11, a 22,..., a mn se nazivaju glavna dijagonala matrice. Ukoliko je broj kolona i broj vrsta matrice isti, takva matrica se naziva kvadratna matrica; u suprotnom, matrica je pravougaona matrica. Ako je matrica posle transponovanja jednaka originalnoj matrici, tj. ostaje ista, onda je to simetrična matrica. Identična matrica je kvadratna matrica u kojoj su svi elemnti na glavnoj dijagonali jednaki 1, a svi ostali elementi su 0. Ova matrica se obično obeležava sa I. 1 0 0 0 1 0 I (n n) =.... 0 0 1 Množenje matrice skalarom je množenje svih elemenata matrice tim sklalarom. Slično, sabiranje i oduzimanje matrica se primenjuje na svaki element matrice. Naravno, da bi ove operacije mogle da se izvršavaju dimenzije matrica moraju da budu jednake. Proizvod dve matrice se dobija tako što vrste prve matrice množimo kolonama druge. Prema tome, da bi moglo da se izvrši množenje matrica, broj kolona
2 MATEMATIČKE OSNOVE prve matrice mora da bude jednak broju vrsta druge. Rezultat množenja matrice dimenzija m n matricom dimenzija n p je matrica čije su dimenzije m p. Sledeće relacije važe za matrice odgovarajućih dimenzija: 1. IA = AI = A 2. AB BA 3. ABC = A(BC) = (AB)C 4. (A T ) T = A 5. (ABC) T = C T B T A T 6. Ako je A pravougaona matrica, A T A i AA T su kvadratne simetrične matrice. 2.1.2 Norma vektora Norma vektora je definisana na sledeći način: x = x 2 1 + x 2 2 + + x 2 n Vektorski proizvod dva vektora x i y je skalar koji se dobija na sledeći način: x T y = x 1 y 1 + x 2 y 2 + + x n y n Kosinus ugla izmedu dva vektora možemo izračunati na sledeći način: cosθ = xt y x y Dva vektora su ortogonalna ako je njihov proizvod jednak nuli. Pomoću vektorskog proizvoda, norma vektora može da se zapiše na sledeći način: x = x 2 1 + x 2 2 + + x 2 n x T x Primer 2.1. Izračunati normu vektora c i kosinus ugla izmedu vektora c i d. 1 4 c = 2 d = 5 3 6 c = c T c = 14 = 3.74166 c = 3.74166 d = 8.77496 c T d = 32 cosθ = 32 3.74166 8.77496 = 0.974632 11
2 MATEMATIČKE OSNOVE 2.1.3 Determinanta kvadratne matrice Determinanta matrice dimenzija 2 2 se računa na sledeći način: ( ) a11 a A = 12 a 21 a 22 Det[A] A = a 11 a 12 a 21 a 22 = a 11a 22 a 12 a 21 Za matrice većih dimenzija, determinanta se računa redukovanjem početne matrice na manje matrice, sve dok se ne dode do matrica dimenzija 2 2. Za matricu dimenzija 3 3 imamo: A = a 11 a 12 a 13 a 21 a 22 a 23 a 31 a 32 a 33 A = a 11 a 12 a 13 a 21 a 22 a 23 a 31 a 32 a 33 = a 11 a 22 a 23 a 32 a 33 a 12 a 21 a 23 a 31 a 33 + a 13 a 21 a 22 a 31 a 32 = a 11 a 22 a 33 + a 12 a 23 a 31 + a 13 a 21 a 32 a 13 a 22 a 31 a 11 a 23 a 32 a 12 a 21 a 33 Primećujemo da su prilikom izračunavanja ove determinante svi sabirci oblika a 1j1 a 2j2 a 3j3, gde su j 1 j 2 j 3 redom permutacije brojeva 1, 2 i 3. Promena redosleda elemenata u permutaciji u odnosu na osnovnu permutaciju naziva se inverzijom. Tako, na primer, u permutaciji 231 postoje dve inverzije: 2 ispred 1 i 3 ispred 1. Ako sa k označimo broj inverzija u permutaciji j 1 j 2 j 3, onda svaki sabirak koji čini determinantu možemo označiti sa ( 1) k a 1j1 a 2j2 a 3j3 tako da se izračunavanje determinante može predstaviti sa a 11 a 12 a 13 A = a 21 a 22 a 23 a 31 a 32 a 33 = ( 1) k a 1j1 a 2j2 a 3j3 j 1 j 2 j 3 S gde je S skup svih permutacija skupa {1,2,3} kojih ukupno ima 3!. Ovaj rezultat se može uopštiti na determinantu kvadratne matrice A dimenzija n n, i tada dobijamo sledeću formulu za računanje determinante: A = a 11 a 12 a 1n a 21 a 22 a 2n... a n1 a n2 a nn = j 1 j 2...j n S ( 1) k a 1j1 a 2j2... a njn gde je S skup svih permutacija skupa {1,2,...,n} kojih ima ukupno n!, a k je broj inverzija u permutaciji j 1 j 2... j n. 12
2 MATEMATIČKE OSNOVE 2.1.4 Inverz kvadratne matrice Inverz kvadratne matrice A je takode kvadratna matrica, koja se obeležava sa A 1, i važi sledeća relacija: AA 1 = A 1 A = I Inverzna matrica može da se izračuna pomoću sledeće formule: A 1 = 1 Det[A] (Co[A])T gde je Det[A] determinanta matrice A a Co[A] se odnosi na kofaktore matrice A. Svaki izraz u kofaktoru matrice se računa po sledećoj formuli: (Co[A]) i,j = ( 1) i+j Det[A ij ] gde je A ij matrica koja je dobijena uklanjanjem i-te vrste i j-te kolone iz matrice A. Ukoliko su matrice kompatibilnih dimenzija, onda važe sledeće relacije: 1. (ABC) 1 = C 1 B 1 A 1 2. (A T ) 1 = (A 1 ) T 3. (A + B) 1 A 1 + B 1 Primer 2.2. U ovom primeru su neke od operacija ilustrovane na sledećim matricama: 1 2 3 4 1 2 3 A = 5 6 7 8 B = 2 4 5 9 10 11 12 3 5 6 (a) Inverz matrice B se računa na sledeći način: [( )] [( )] 4 5 2 5 Det Det [( 5 6 )] [( 3 6 )] Co[B] = 2 3 1 3 Det Det [( 5 6 )] [( 3 6 )] 2 3 1 3 Det Det 4 5 2 5 = 1 3 2 3 3 1 2 1 0 [( )] 2 4 Det [( 3 5 )] 1 2 Det [( 3 5 )] 1 2 Det 2 4 Determinanta matrice B je Det[B] = 1. Prema tome, inverzna matrica od B je: 1 3 2 B 1 = 3 3 1 2 1 0 13
2 MATEMATIČKE OSNOVE Lako se može proveriti da je ovo tačna inverzna matrica ako izračunamo proizvod matrica 1 2 3 1 3 2 1 0 0 BB 1 = 2 4 5 3 3 1 = 0 1 0 = I 3 5 6 2 1 0 0 0 1 (b) Računanje izraza [(AA T + B)B)] 1 AA T + B = (AA T + B)B = 30 70 110 70 174 278 110 278 446 31 72 113 72 178 283 113 283 452 + 1 2 3 2 4 5 3 5 6 1 2 3 2 4 5 3 5 6 = = Kofaktori i determinanta dobijene matrice su: 2586 3058 1299 Co[(AA T + B)B] = 5568 6061 2373 2841 3031 1161 Det[(AA T + B)B] = 303 31 72 113 72 178 283 113 283 452 514 915 1131 1277 2271 2804 2035 3618 4466 Transponovanjem matrice kofaktora i deljenjem svakog elementa determinantom, dobijamo sledeću inverzanu matricu: 1 862 514 915 1131 1856 947 [(AA T + B)B] 1 101 101 101 = 1277 2271 2804 = 3058 6061 3031 303 303 303 2035 3618 4466 Na osnovu relacije o proizvodu inverznih matrica, [(AA T + B)B] 1 = B 1 (AA T + B) 1 Možemo dokazati tačnost prethodnog proračuna: 31 72 1 113 (AA T + B) 1 = 72 178 283 = 113 283 452 1 3 2 B 1 = 3 3 1 2 1 0 367 1 3 2 B 1 (AA T + B) 1 = 3 3 1 262 2 1 0 što jeste tačan rezultat. = 433 791 101 101 367 565 262 303 303 303 565 1243 637 303 303 303 262 637 334 303 303 303 565 262 303 303 303 565 1243 637 303 303 303 637 334 303 303 303 862 1856 947 101 101 101 3058 6061 3031 303 303 303 433 791 387 101 101 101 14 387 101
2 MATEMATIČKE OSNOVE 2.1.5 Sopstvene vrednosti kvadratne matrice Ako je A matrica formata n n, a x nenula vektor formata n 1, takav da važi Ax = λx, onda je λ sopstvena vrednost kvadratne matrice A. Sopstvene vrednosti imaju važnu ulogu u nekoliko ključnih koncepta optimizacije. Sopstvene vrednosti se dobijaju rešavanjem jednačine, koja je poznata kao karakteristična jednačina matrice. Det[A λi] = 0 gde je I jedinična matrica. Za matricu dimenzija n n, karakteristična jednačina je polinom n-tog stepena. Rešavanjem ove jednačine dobijamo n sopstvenih vrednosti matrice A. Primer 2.3. Izračunati sopstvene vrednosti sledeće 3 3 matrice: 13 1 2 A = 4 14 5 7 8 15 13 1 2 1 0 0 A λi = 4 14 5 λ 0 1 0 7 8 15 0 0 1 = 13 λ 1 2 4 14 λ 5 7 8 15 λ Računanjem determinante, dobijamo sledeću karakterističnu jednačinu: ili (13 λ)((14 λ)(15 λ) 40) (4(15 λ) 35) + 2(32 7(14 λ)) = 0 2053 529λ + 42λ 2 λ 3 = 0 Ova nelinearna jednačina ima sledeća tri rešenja: λ 1 = 7.9401 λ 2 = 11.4212 λ 3 = 22.6387 Inače Mathematica ima ugradenu funkciju pod nazivom Eigenvalues, koja kao rezultat vraća sopstvene vrednosti kvadtratne matrice. Eigenvalues[{{13, 1, 2}, {4,14,5}, {7,8,15}}] {22.6387,11.4212,7.9401} 2.1.6 Glavni minori kvadratne matrice Glavni minori matrice su determinante kvadratnih podmatrica date matrice. Prvi glavni minor je prvi dijagonalni element matrice. Drugi glavni minor je determinanta 2 2 matrice koja se dobija iz prve dve vrste i prve dve kolone. Treći glavni minor je determinanta 3 3 matrice dobijene od prve tri vrste i kolone. Ovaj postupak se nastavlja sve do poslednjeg glavnog minora, koji je jednak determinanti cele matrice. Neka je data matrica A dimenzija 3 3: A = a 11 a 12 a 13 a 21 a 22 a 23 a 31 a 32 a 33 15
2 MATEMATIČKE OSNOVE Ova matrica ima tri glavna minora: A 1 = a 11 A 2 = a 11 a 12 a 21 a 22 a 11 a 12 a 13 A 3 = a 21 a 22 a 23 a 31 a 32 a 33 Primer 2.4. Izračunati glavne minore sledeće matrice: 13 1 2 A = 4 14 5 7 8 15 2.1.7 Rang matrice A 1 = 13 A 2 = 13 1 4 14 = 178 13 1 2 A 3 = 4 14 5 7 8 15 = 2053 Rang matrice je jednak veličini (dimenziji) najveće nesingularne kvadratne podmatrice koja se može dobiti brisanjem nekih vrsta i kolona date matrice. Pošto determinanta mora da bude različita od nule da bi matrica bila nesingularna, da bismo odredili rang matrice, moramo pronaći kvadratnu podmatricu sa determinantom različitom od nule. Dimenzija najveće takve podmatrice predstavlja rang matrice. Primer 2.5. Izračunati rang sledeće 3 3 matrice: 13 1 2 A = 4 14 5 7 8 15 Pošto je ova matrica kvadratna, pokušaćemo da izračunamo njenu determinantu. 13 1 2 Det[A] = 4 14 5 7 8 15 = 2053 Kako je determinanta različita od nule, sledi da je rang matrice 3. 16
2 MATEMATIČKE OSNOVE Primer 2.6. Izračunati rang sledeće 3 4 matrice: 1 2 3 4 A = 5 6 7 8 9 10 11 12 Najveća kvadratna podmatrica koja se može dobiti iz date matrice je dimenzija 3 3. Ima četiri takvih podmatrica, a one su: 2 3 4 6 7 8 10 11 12 = 0 1 3 4 5 7 8 9 11 12 = 0 1 2 4 5 6 8 9 10 12 = 0 1 2 3 5 6 7 9 10 11 = 0 Determinante svih ovih 3 3 podmatrica su jednake 0. Prema tome, rang matrice nije 3. Sada moramo isprobati 2 2 podmatrice. Ovakvih podmatrica imamo mnogo više, medutim, ne moramo da isprobamo sve moguće kombinacije. Potrebno je samo da pronademo jednu podmatricu čija determinanta je različita od nule. 1 2 5 6 = 4 Možemo videti da upravo prva 2 2 podmatrica ima determinantu različitu od nule. Dakle, pronašli smo najveću moguću podmatricu sa determinantom različitom od nule, što znači da je rang date matrice A jednak 2. Mathematica ima ugradenu funkciju MatrixRank koja računa rang matrice. MatrixRank[{{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}}] 2 2.1.8 Linearna nezavisnost vektora Dati skup n 1 vektora je linearno nezavisan ako svi ostali n 1 vektori mogu da se predstave kao odgovarajuća linearna kombinacija vektora iz tog skupa. Posmatrajmo, na primer, sledeća dva vektora: a = ( 1 0 ) b = ( 1 1 Ova dva vektora su linearno nezavisna zato što bilo koji 2 1 vektor može da se predstavi kao njihova kombinacija. Na primer, ( ) 3 c = = 10a 7b 7 Za dati skup vektora možemo proveriti da li je linearno nezavisan tako što formiramo matricu A čije su kolone dati vektori. Rang ove matrice predstavlja broj nezavisnih 17 )
2 MATEMATIČKE OSNOVE vektora u datom skupu. Ukoliko je rang matrice jednak ukupnom broju vektora u datom skupu, onda su svi oni linearno nezavisni. Pošto rang matrice nikada ne može biti veći od broja vrsta u matrici, a vektori su rasporedeni kao kolone matrice, lako se može zakljućiti da je maksimalan broj linearno nezavisnih vektora jednak dimenziji vektora. Primer 2.7. Ispitati linearnu nezavisnost sledećih vektora: 2 1 9 a = 5 2 b = 2 3 c = 8 4 1 4 1 Vektore ćemo rasporediti kao kolone sledeće matrice: A = 2 1 9 5 2 8 2 3 4 1 4 1 MatrixRank[A] 3 Rang matrice A je 3. Prema tome, ovi vektori su linearno nezavisni. Primer 2.8. Ispitati linearnu nezavisnost sledećih vektora: 2 1 4 a = 5 2 b = 2 3 c = 19 0 1 4 11 Najpre formiramo matricu od ovih vektora: A = 2 1 4 5 2 19 2 3 0 1 4 11 MatrixRank[A] 2 Rang matrice A je 2. Prema tome, samo dva od ovih tri vektora su linearno nezavisna. Lako se uočava da je treći vektor linarna kombinacija prva dva vektora i dobija se na sledeći način: ; ; c=-3a+2b {-4,19,0,11} 2.2 Aproksimacija pomoću Tejlorovog razvoja Svaka diferencijabilna funkcija može da se aproksimira polinomom korišćenjem Tejlorovog rzvoja. Prvo ćemo razmatrati funkcije od jedne promenljive a zatim i funkcije od dve promenljive. 18
2 MATEMATIČKE OSNOVE 2.2.1 Funkcije od jedne promenljive Neka je data funkcija f(x) koja ima samo jednu promenljivu x. Ova funkcija se može aproksimirati oko x pomoću Tejlorovog razvoja na sledeći način: f(x) f(x) + df(x) dx (x x) + 1 d 2 f(x) (x x) 2 + 2 dx 2 Linearna aproksimacija se dobija ako uzmemo prva dava člana iz razvoja, dok se kvadratna aproksimacija dobija ako uključimo i izraz sa drugim izvodom. Mathematica ima ugradenu funkciju Series koja generiše aproksimaciju pomoću Tejlorovog razvoja do željenog reda. Ova funkcija se zadaje na sledeći način: Series[f,{x, x 0, n}] Series[f,{x, x 0, n x},{y, y 0, n y},...] generiše razvoj funkcije f oko tačke x = x 0 do reda (x x 0 ) n. sukcesivno pronalazi razvoj funkcije po x, zatim po y, itd. Primer 2.9. Odrediti linearnu i kvadratnu aproksimaciju sledeće funkcije oko date tačke pomoću Tejlorovog razvoja. f(x) = x2 4x + 3 Funkcija i njeni izvodi u datoj tački x su: x = 1 4 x2 f(x) = 3 + 4x f(1 4 ) = 0.015625 2x(3 + 2x) f(x) = (3 + 4x) 2 f( 1 4 ) = 0.109375 2 18 f(x) = (3 + 4x) 3 2 f( 1 4 ) = 0.28125 x = 1 4 + x Linearna i kvadratna aproksimacija su: Linearna aproksimacija 0.0117188 + 0.109375x Kvadratna aproksimacija 0.00292969 + 0.0390625x + 0.140625x 2 Originalna funkcija i njene aproksimacije su prikazane na Slici 2.1. Funkcija je predstavljena crvenom bojom, linearna aproksimacija zelenom, a kvadratna aproksimacija plavom bojom. Primećujemo da je oko tačke x aproksimacija veoma dobra. Medutim, kako se udaljavamo od x, prava funkcija i njena linearna i kvadratna aproksimacija počinju da se znatno razlikuju. 19
2 MATEMATIČKE OSNOVE Slika 2.1: Uporedivanje linearne i kvadratne aproksimacije funkcije od jedne promenljive 2.2.2 Funkcije od dve promenljive Neka je data funkcija f(x 1, x 2 ) koja ima dve promenljive. Ovu funkciju možemo aproksimirati oko date tačke (x 1, x 2 ) na sledeći način: ( f(x1, x 2 ) f(x 1, x 2 ) f(x 1, x 2 ) + (x 1 x 1 ) + f(x 1, x 2 ) ) (x 2 x 2 ) x 1 x 2 + 1 ( 2 f(x 1, x 2 ) (x 2 x 2 1 x 1 ) 2 + 2 2 f(x 1, x 2 ) (x 1 x 1 )(x 2 x 2 ) 1 x 1 x 2 + 2 f(x 1, x 2 ) ) (x x 2 2 x 2 ) 2 + 2 Ovaj izraz se može kompaktnije zapisati pomoću matrica: ( f(x1, x 2 ) f(x 1, x 2 ) ) ( ) x1 x f(x 1, x 2 ) f(x 1, x 2 ) + 1 x 1 x 2 x 2 x 2 ( + 1 ) 2 f(x 1,x 2 ) 2 f(x 1,x 2 ) ( ) 2 (x x 1 x 1 x 2 x 2 ) 2 1 x 1 x 2 x1 x 1 + x 2 x 2 2 f(x 1,x 2 ) x 1 x 2 2 f(x 1,x 2 ) x 2 2 2 1 vektor koji se naziva vektor gradijenta i 2 2 matrica koja se naziva matrica Hesiana definisani su na sledeći način: ) V ektor gradijenta, f(x 1, x 2 ) = Matrica Hesiana, 2 f(x 1, x 2 ) = ( f(x1,x 2 ) x 1 f(x 1,x 2 ) x 2 ( 2 f(x 1,x 2 ) 2 f(x 1,x 2 ) x 1 x 2 x 2 1 2 f(x 1,x 2 ) 2 f(x 1,x 2 ) x 1 x 2 x 2 2 Kako je transponovani vektor gradijenta ( ) f(x1,x 2 ) f(x 1,x 2 ) x 1 x 2 = f(x 1, x 2 ) T i vektor promenljivih kada se oduzme x ( ) ( ) x1 x 1 x1 = x 2 x 2 x 2 20 ( x1 x 2 ) = (x x) x )
2 MATEMATIČKE OSNOVE Formula Tejlorovog razvoja može da se zapiše na sledeći način: f(x 1, x 2 ) f(x 1, x 2 ) + f(x 1, x 2 ) T x + 1 2 xt 2 f(x 1, x 2 ) x + Primer 2.10. Odrediti lineranu i kvadratnu aproksimaiju sledeće funkcije oko date tačke. f(x, y) = x y (x, y) = (2, 2) f(x, y) = x y f(2, 2) = 4 ( ) ( ) x f = 1+y y 4 x y f(2, 2) = log x 2.77259 ( ) x 2 f = 2+y ( 1 + y)y x 1+y (1 + y log x) x 1+y (1 + y log x) x y log x 2 ( ) 2 2 4.77259 f(2, 2) = 4.77259 1.92181 x = ( 2 + x 2 + y) Linearna aproksimacija = 9.54518 + 4x + 2.77259y Kvadratna aproksimacija = 17.3888 9.54518x + x 2 10.6162y + 4.77259xy + 0.960906y 2 2.3 Rešavanje nelinearnih jednačina Najpoznatiji metod za rešavanje nelinearnih jednačina je Njutn-Rapsonov metod. Neka je dat sledeći sistem od n jednačina i n promenljivih: f l (x l, x 2,..., x n ) = 0 f 2 (x l, x 2,..., x n ) = 0. f n (x l, x 2,..., x n ) = 0 Metod startuje od početne vrednosti i iterativno pokušava da se približi rešenju jednačina. Iteracija je predstavljena sledećim izrazom: x k+1 = x k + x k k = 0, 1,... gde je x 0 početna vrednost. Promena vrednosti x k se dobija proširenjem jednačina oko tačke x k korišćenjem Tejlorovog razvoja, na sledeći način: f l (x k+1 ) f 1 (x k ) + f 1 (x k ) T x k = 0 f 2 (x k+1 ) f 2 (x k ) + f 2 (x k ) T x k = 0. 21
2 MATEMATIČKE OSNOVE Ako zapišemo svih n jednačina u formi matrice, dobijamo f 1 (x k ) f 2 (x k ) ili. f n (x k ) + f 1 (x k )/ x 1 f 1 (x k )/ x 2 f 1 (x k )/ x n f 2 (x k )/ x 1 f 2 (x k )/ x 2 f 2 (x k )/ x n.... f n (x k )/ x 1 f n (x k )/ x 2 f n (x k )/ x n 0 = 0. 0 f(x k ) + J(x k ) x k = 0 xk Matrica parcijalnih izvoda funkcija J poznata je kao matrica Jakobijana. Promena vrednosti x k sada se može dobiti invertovanjem matrice Jakobijana po sledećoj formuli: x k = [J(x k )] 1 f(x k ) U svakoj iteraciji rešenje se u opštem slučaju poboljšava. Dakle, f i (x k+1 ) trebalo bi da bude bliže nuli od f i (x k ). Prema tome, konvergencija algoritma može da se definiše pomoću norme vektora f(x k+1 ). f(x k+1 ) n [f i (x k+1 )] 2 tol i=1 gde je tol mala tolerancija greške. Njutn-Rapsonov metod konvergira prilično brzo kada je početna vrednost blizu rešenja. Medutim, ovaj metod divergira u nekim slučajevima u kojim je matrica Jakobijana skoro singularna. Još jedan nedostatak ovog metoda je što on daje samo jedno rešenje koje je najbliže početnoj tački. Pošto nelinearne jednačine, u opštem slučaju, mogu imati nekoliko rešenja, jedini način za dobijanje drugih rešenja je da se isprobaju druge početne tačke. Standardne Mathematica funkcije NSolve i FindRoot su veoma fleksibilne i efikasne za rešavanje opštih sistema nelinearnih jednačina, i trebalo bi ih koristiti u praksi. Funkcija FindRoot po default-u koristi Njutn-Rapsonov metod i zadaje se na sledeći način: FindRoot[f,{x, x 0 }] FindRoot[{f 1, f 2,...}, {{x, x 0 },{y, y 0 },...}] traži numerički koren funkcije f,startujući od tačke x = x 0 istovremeno traži koren za svaku od datih funkcija f i FindRootPlot[f,{x, x 0 },opts] iscrtava na grafiku korake i tačke u kojima su izračunati funkcija f i njeni izavodi u postupku funkcije FindRoot;opts uključuje sve opcije koje se mogu zadavati i kod FindRoot i kod Plot funkcije 22
2 MATEMATIČKE OSNOVE Primer 2.11. Njutn-Rapsonovim metodom rešiti sledeću nelinearnu jednačinu. x + 2 = e x Najpre učitavamo paket u kojem je definisana funkcija FindRootPlot: << Optimization UnconstrainedProblems Zatim zadajemo funkciju: f = x + 2 - Exp[x (a) Uzećemo početnu vrednost x 0 = 2 { FindRootPlot[f,{x,2}] {x 1.14619},{Steps 7,Residual 7,Jacobian 6}, } Na grafiku je prikazan celokupan postupak traženja rešenja jednačine. (b) Ako uzmemo početnu vrednost x 0 = 0.1 metod nailazi na poteškoće. U blizini tačke x = 0.1, funkcija je veoma ravna i njen prvi izvod je vrlo blizu nule. Zbog ovoga je prvih par iteracija metoda veoma daleko od rešenja. Ipak, metod na kraju konvergira do tačnog rešenja, kao što možemo videti na sledećem grafiku: { FindRootPlot[f,{x,0.1}] {x 1.14619},{Steps 6,Residual 7,Jacobian 5}, } Primer 2.12. Uzimajući početne vrednosti x 0 = (2, 2, 2), rešiti sledeći sistem nelinearnih jednačina: x 2 + y 2 + xyz = 1.34 xy z 2 = 0.09 e x e y + z = 0.41 f={-x 2 +y 2 +x*y*z-1.34, x*y-z 2-0.09, Exp[x]-Exp[y]+z-0.41}; FindRootPlot[f,{{x, 2}, {y, 2}, {z, 2}}] x 0.902218, y 1.10034, z 0.950132 23
2 MATEMATIČKE OSNOVE 2.4 Konveksne funkcije i konveksni problemi optimizacije Mnogi teoretski rezultati se mogu primeniti samo na probleme optimizacije koji su definisani kao konveksne funkcije. Konvergencija mnogih optimizacionih algoritama zavisi od konveksnosti ciljne funkcije i ograničenja. Sada ćemo navesti neke osnovne definicije konveksnih skupova i konveksnih funkcija, i videti na koji način se može ispitivati konveksnost funkcije. 2.4.1 Konveksne funkcije Funkcija f(x) je konveksna ako za bilo koje dve tačke x (1) i x (2), vrednosti funkcije zadovoljavaju sledeću nejednakost: f(αx (2) + (1 α)x (1) ) αf(x (2) ) + (1 α)f(x (1) ), 0 α 1 Za funkciju od jedne promenljive, ovo znači da je funkcija konveksna ako grafik funkcije uvek leži ispod linije koja spaja bilo koje dve tačke na grafiku, kao što se može videti na sledećoj slici. Tzv. konkavnu funkciju možemo definisati ako promenimo smer nejednakosti u prethodnom izrazu. Slika 2.2: Konveksna i nekonveksna funkcija Ako bismo koristili ovu definiciju, bilo bi veoma teško ispitati da li je funkcija konveksa, zato što bi to zahtevalo razmatranje beskonačno mnogo tačaka. Medutim, na osnovu znaka Hesiana funkcije, možemo odrediti konveksnost funkcije, na sledeći način: (a) Funkcija f(x) je konveksna ako je njen Hesian 2 f(x) pozitivno semidefinitan. (b) Funkcija f(x) je konkavna ako je njen Hesian 2 f(x) negativno semidefinitan. (c) Funkcija f(x) je nekonveksna ako njen Hesian 2 f(x) nije definitan. Za linearnu funkciju, matrica Hesiana se sastoji samo od nula, pa je linearna funkcija u isto vreme i konveksna i konkavna. Za složenije funkcije, Hesian može biti nepregledna matrica koja sadrži promenljive, i može biti teško odrediti znak za sve moguće vrednosti promenljivih. Za složenije situacije često se koriste sledeći rezultati: 1. Ako je f(x) konveksna funkcija, onda je αf(x) takode konveksna funkcija za bilo koje α > 0. 24
2 MATEMATIČKE OSNOVE 2. Suma konveksnih funkcija je takode konveksna funkcija. Što znači da, ako su f i (x), i = 1,..., k sve konveksne funkcije, onda je i f(x) = k i=1 f i(x) konveksna funkcija. 3. Ako je f(x) konveksna funkcija, a g(γ) je monotono rastuća konveksna funkcija, onda je kompozitna funkcija g(f(x)) takode konveksna funkcija. Neke funkcije nisu konveksne na svom celom domenu; medutim, one mogu biti konveksne na odredenom skupu. Primer 2.13. Ispitati konveksnost sledeće funkcije koja ima jednu promenljivu: Hesian je drugi izvod ove funkcije: f(x) = x + 1/x x > 0. 2 f = 2 x 3 > 0 za x > 0 Prema tome, funkcija je konveksna na datom domenu. Sledeći grafik to potvrduje: Plot[x + 1/x, {x, 0.001, 2}] Slika 2.3: Grafik funkcije x + 1/x Primer 2.14. Ispitati konveksnost sledeće funkcije od dve promenljive: f(x, y) = e (x2 +y 2) + e (x+2y) Matrica Hesiana ove funkcije je: ( 4e 2 x 2 +y 2 x f = 2 + e x+2y + 2e x2 +y 2 4e x2 +y 2 xy + 2e x+2y 4e x2 +y 2 xy + 2e x+2y 4e x2 +y 2 y 2 + 4e x+2y + 2e x2 +y 2 ) Gotovo je nemoguće eksplicitno proveriti znak glavnih minora ove matrice. Zbog toga ćemo pokušati to da uradimo na drugi način. Najpre, primećujemo da je data funkcija suma dve funkcije. Dakle, trebalo bi da pokažemo da su obe ove funkcije konveksne. Oba izraza su u obliku e z, gde je z neki 25
2 MATEMATIČKE OSNOVE realan broj. Kao što možemo videti na sledećem grafiku, ova funkcija je konveksna. Korišćenjem pravila za kompozitnu funkciju, trebalo bi pokazati samo da su stepeni od e konveksne funkcije. ( ) 2 0 f 1 (x, y) = x 2 + y 2, 2 f 1 = = f 0 2 1 je konveksna = e f 1(x,y) je konveksna funkcija f 2 (x, y) = x + 2y je linearna = f 2 je konveksna = e f 2(x,y) je konveksna funkcija Prema tome, oba izraza su konveksne funkcije i zabog toga je f(x, y) = e (x2 +y 2) + e (x+2y) konveksna funkcija. Plot[Exp[z], {z, -5, 1}] Slika 2.4: Grafik funkcije e x 2.4.2 Konveksni skupovi Skup je konveksan ako prava linija, koja spaja bilo koje dve tačke iz skupa, celom svojom dužinom leži unutar skupa. U suprotnom, skup je nekonveksan. Na sledećoj slici se vidi razlika izmedu konveksnog i nekonveksnog skupa: Neka su data ograničenja: g 1 g 2 g 3 g 4 Slika 2.5: Konveksan i nekonveksan skup = (x 3 2 )2 + (y 5) 2 10 2x 2 + 3y 2 35 x 0 y 0 26
2 MATEMATIČKE OSNOVE Slika 2.6: Izvodljiva oblast problema koji ima konveksna ograničenja u obliku nejednakosti Lako se može pokazati da su nelinearna ograničenja g 1 i g 2 konveksne funkcije. Oblast izvodljivosti je prikazana na Slici 2.6 i jasno se može videti da ta oblast predstavlja konveksan skup. 2.4.3 Konveksni problemi optimizacije Optimizacioni problem kod kojeg je ciljna funkcija konveksna a oblast izvodljivosti je konveksan skup naziva se konveksni problem programiranja. Iz prethodne diskusije se lako može zakljucǐti da je problem linearnog programiranja uvek konveksan problem. Problem nelinearnog programiranja sa konveksnom ciljnom funkcijom i linearnim(u obliku jednakosti ili nejednakosti) ili konveksnim ograničenjima u obliku nejednakosti je takode konveksni problem optimizacije. Problem, koji ima bar jedno nelinearno ograničenje u obliku jednakosti, je nekonveksni problem optimizacije. Najvažnije svojstvo konveksnog problema programiranja je to što je bilo koja tačka lokalnog minimuma x istovremeno i globalni minimum. Ovo se može dokazati kontradikcijom, na sledeći način: Neka je x lokalni minimum. Ako to nije i globalni minimum, onda postoji neki drugi lokalni minimum ˆx takav da važi f(ˆx) < f(x ) Posmatrajmo liniju koja spaja tačke x i ˆx: x = αˆx + (1 α)x, 0 α 1 Pošto je oblast izvodljivosti konveksan skup, sve tačke x na ovoj liniji se nalaze u izvodljivoj oblasti. Pored toga, kako je f(x) konveksna funkcija, imamo f(x) αf(ˆx) + (1 α)f(x ), 0 α 1 27
2 MATEMATIČKE OSNOVE ili f(x) f(x ) + α(f(ˆx) f(x )) Na osnovu početnog tvrdenja, izraz f(ˆx) f(x ) mora da bude manji od nule, odnosno mora da važi f(x) < f(x ), za svako 0 α 1 Ovo znači da čak i u bližoj okolini tačke x postoji tačka u kojoj je vrednsot funkcije manja od minimuma. Jasno je da, onda x ne može biti lokalni minimum, što je kontradikcija. Prema tome, ne može da postoji drugi lokalni minimum, što dokazuje tvrdnju da x mora da bude globalni minimum. Većina optimizacionih algoritama je dizajnirana za traženje lokalnog minimuma. U opštem slučaju, ne postoji dobar način za nalaženje globalnog minimuma, osim da se pokuša sa nekoliko različitih početnih tačaka s nadom da neka od njih vodi do globalnog minimuma. Medutim, za konveksne probleme, sa sigurnošću se može koristit bilo koje optimalno rešenje koje dobijemo, znajući da ne postoji drugo rešenje koje daje bolju vrednost ciljne funkcije. Sledeća funkcija, iz paketa OptimizationToolbox CommonFunction, proverava konveksnost jedne ili više datih funkcija: ConvexityCheck[f,vars] proverava da li je funkcija f(ili lista funkcija f) konveksna. Primer 2.15. Odrediti da li je sledeći problem optimizacije konnveksan. Minimizirati Pod ograničenjima f(x, y) = (x 5) 2 + (y 1) 2 + xy x + y 4 2x + x 2 + y 2 = 16 x 2 1 y Problem sadrži nelinearno ograničenje u obliku jednakosti; pa prema tome, nije konveksan problem. Primer 2.16. Odrediti da li je sledeći problem optimizacije konnveksan. Minimizirati Pod ograničenjima f(x, y) = (x 5) 2 + (y 1) 2 + xy x + y 4 2x + x 2 + y 2 16 x 2 1 y Ovaj problem ne sadrži nelinearna ograničenja u obliku jednakosti; pa prema tome, problem je konveksan ako su sve njegove funkcije konveksne. Koristimo funkciju ConvexityCheck da bismo ispitali konveksnost datog problema. f=(x-5) 2 +(y-1) 2 +xy; g={x+y 4, 2x+x 2 +y 2 16, x 2 /y 1}; <<OptimizationToolbox CommonFunction ; ConvexityCheck[f, {x, y} ------ Function (x-5) 2 +(y-1) 2 +xy 28
2 MATEMATIČKE OSNOVE ( 2 1 Hessian 1 2 Status Convex ) Principal Minors ( 2 3 ) ConvexityCheck[g, {x, y} ------ Function ( )-4+x+y ( ) 0 0 0 Hessian Principal Minors 0 0 0 Status Convex ------ Function ( )-16+2x+x 2 +y 2 ( ) 2 0 2 Hessian Principal Minors 0 2 4 Status Convex ------ Function ( -1+x 2 /y 2 2x ) ( 2 y y Hessian 2 2x 2x 2 Principal Minors y 0 y 2 y 3 Status Undetermined ) Pošto glavni minor trećeg ograničenja sadrži promenljivu, funkcija nije mogla da odredi njegovu konveksnost. Medutim, jasno je da je ovaj minor pozitivan za svako y > 0. Dakle, problem je konveksan ako uvedemo dodatno ograničenje da y mora da bude pozitivno. Bez ovog ograničenja problem je nekonveksan. 29
3 Grafička optimizacija Grafička optimizacija je jednostavan metod za rešavanje problema optimizaciije koji imaju jednu ili dve promenljive. Za probleme koji imaju samo jednu optimizacionu promenljivu, minimum(ili maksimum) može jednostavno da se uoči na grafiku ciljne funkcije. Za probleme sa dve optimizacione promenljive, rešenje se može dobiti crtanjem grafika funkcija ograničenja i ciljne funkcije. Praktični problemi optimizacije najčešće imaju više od dve promenljive, i zbog toga, direktno grafičko rešavanje nije moguće. Medutim, za probleme manjih razmera, se može barem steći neki utisak o optimumu primenjivanjem grafičkog rešavanja na one dve promenljive koje smatramo najvažnijim za dati problem. 3.1 Procedura grafičkog rešavanja Neka je dat optimizacioni problem koji ima dve optimizacione promenljive i koji je zapisan u standardnoj formi na sledeći način: Naći vektor optimizacionih promenljivih, (x 1, x 2 ) koje Minimizuju ciljnu funkciju, f(x 1, x 2 ) Pod ograničenjima g i (x 1, x 2 ) 0, i = 1, 2,..., m Ograničenja u obliku nejednakosti h i (x 1, x 2 ) = 0, i = 1, 2,..., p Ograničenja u obliku jednakosti Grafičko rešavanje ovog problema podrazumeva sledeća tri koraka: 1. Biranje odgovarjućeg opsega optimizacionih promenljivih. 2. Iscrtavanje grafika funkcije svakog ograničenja da bi se predstavile granice. 3. Crtaje kontura ciljne funkcije. Kompletna ova procedura će dalje biti detaljnije opisana. Da bi proces bio jasniji, svi koraci će biti opisani kao da se grafici cratju ručno. 3.1.1 Izbor odgovarajućeg opsega za optimizacione promenljive Prvi zadatak je izbor pogodnog opsega vrednosti za optimizacione promenljive. Izvestan period pokušaja i promašaja je neophodan pre nego što odredimo pogodan opseg. Opseg mora obavezno da uključuje tačku optimuma. Veoma veliki opseg može da rezultuje vrlo malim konturama grafika na kojima bi bilo teško razlikovati različita ograničenja. S druge strane, može da se desi da veoma mali opseg vrednosti promenljivih ne prikazuje oblast u kojoj se nalazi optimalno rešenje. Za praktične probleme, odgovarajući opseg može da se odredi na osnovu prethodnog iskustva sa sličnim situacijama. Za probleme za koje nemamo nikakvo predznanje o optimalnom rešenju, može da se koristi sledeći postupak. 1. Izabrati donju i gornju granicu za jednu od promenljivih, recimo za x 1. Mogu da se izaberu proizvoljne vrednosti ukoliko ne znamo baš ništa o rešenju.
3 GRAFIČKA OPTIMIZACIJA 2. Rešiti svaku jednačinu ograničenja za dobijanje odgovarajućih vrednosti x 2. Odrediti minimalnu i maksimalnu vrednost za x 2 na osnovu ovih vrednosti. Posmatrajmo, na primer, grafičko rešenje sledećeg problema: Minimizirati f(x 1, x ( 2 ) = 4x 2 1 5x 1 x 2 + x 2 2 ) g(x1, x Pod ograničenjima 2 ) = x 2 1 x 2 + 2 0 h(x 1, x 2 ) = x 1 + x 2 6 = 0 Pod pretpostavkom da ne znamo ništa o optimalnoj tački, proizvoljno biramo donju i gornju granicu za x 1. Uzećemo, na primer, 0 i 10, respektivno. Zatim, rešvamo svaku jednačinu ograničenja, tretirajući sva ograničenja kao jednakosti. g : za x 1 = 0, x 2 1 x 2 + 2 = 0 dobijamo x 2 = 2 za x 1 = 10, x 2 1 x 2 + 2 = 0 dobijamo x 2 = 102 h : za x 1 = 0, x 1 + x 2 6 = 0 dobijamo x 2 = 6 za x 1 = 10, x 1 + x 2 6 = 0 dobijamo x 2 = 4 Prema tome, za naš prvi pokušaj, biramo interval (0,10) za x 1, a za x 2 uzimamo (-4,102). 3.1.2 Grafici funkcija ograničenja Drugi zadatak je crtanje grafika funkcija ograničenja i odredivanje oblasti u kojem su ograničenja zadovoljena. Ova oblast se naziva oblast izvodljivosti. Pod pretpostavkom da su ograničenja zapisana u standardnoj formi, trebalo bi iscrtati linije koje predstavljaju jednačine g i (x 1, x 2 ) = 0 i h i (x 1, x 2 ) = 0. Ove linije mogu da se nacrtaju biranjem nekoliko vrednosti za jednu promenljivu i rešavanjem jednačine ograničenja za drugu promenljivu. Tj. za cratnje grafika ograničenja g i, biramo nekoliko različitih vrednosti iz izabranog intervala za x 1. Za svaku izabranu vrednost x 1, računa se vrednost za x 2 rešavanjem jednačine g i (x 1, x 2 ) = 0. Linija koja prolazi kroz tačke (x 1, x 2 ) predstavlja grafik funkcije g i (x 1, x 2 ) = 0. Ukoliko je funkcija linearna, onda su nam očigledno potrebne samo dve tačke za crtanje takve linije. Za nelinearne funkcije, potrebno je nekoliko tačaka da bismo dobili relativno glatku konturu. Ako nastavimo sa rešvanjem prethodnog primera, naš zadatak je da sada nacrtamo linije koje prolaze kroz tačke koje zadovoljavaju sledeće jednačine: x 2 1 x 2 + 2 = 0 x 1 + x 2 6 = 0 Da bismo dobili podatke za crtanje ovih kontura, biramo nekoliko vrednosti za x 1 i računamo odgovarajuće vrednosti za x 2 rešavanjem odgovarajućih jednačina. Dobijene vrednosti su prikazane u sledećoj tabeli: 31
3 GRAFIČKA OPTIMIZACIJA x 1 x 2 iz x 2 1 x 2 + 2 = 0 x 2 iz x 1 + x 2 6 = 0 0 2 6 2.5 8.25 3.5 5 27 1 7.5 58.25-1.5 10 102-4 Na sledećoj slici su prikazane linije koje prolaze kroz parove ovih tačaka. Slika 3.1: Grafik funkcija ograničenja Za ograničenja u obliku jednakosti, linija h(x 1, x 2 ) = 0 predstavlja izvodljivu liniju pošto svaka tačka na ovoj liniji zadovoljava dato ograničenje. Za ograničenja u obliku nejednakosti, liinija g(x 1, x 2 ) = 0 predstavlja granicu izvodljivosti ograničenja. Sa jedne strane krive je g > 0, a sa druge strane je g < 0. Očigledno je da je strana na kojoj je g < 0 izvodljiva za ograničenja, pošto svaka tačka na toj strani zadovoljava ograničenje. Grafik nam pokazuje da je oblast ispod krive g neizvodljiva. Drugo ograničenje je u obliku jednakosti, izvodljiva oblast problema je oblast iznad preseka prave h sa krivom g. Kada se iscrtaju grafici svih ograničenja, presek izvodljivih strana svih ograničenja predstavlja oblast izvodljivosti problema optimizacije. Tačke unutar izvodljive oblasti zadovoljavaju sva ograničenja. U zavisnosti od formulacije problema, oblast izvodljivosti može biti ograničen, neograničen ili prazan skup, ili skup od samo jedne tačke. Ukoliko je oblast izvodljivosti prazan skup, to očigledno znači da tako formulisani problem nema rešenja, pa se formulacija tog problema mora ponovo razmotriti. Ukoliko je samo jedna tačka izvodljiva, onda nije potrebno dalje razmatrati problem, postoji samo jedno rešenje koje zadovoljava sva ograničenja. U ostalim slučajevima, prelazi se na sledeći korak, a to je crtanje grafika ciljne funkcije da bismo pronašli optimalno rešenje, ukoliko ono postoji. 32
3 GRAFIČKA OPTIMIZACIJA 3.1.3 Grafik ciljne funkcije Za dobro postavljeni problem optimizacije(problem čija je oblast izvodljivosti neprazan skup) sledeći korak je da se izabere tačka u izvodljivoj oblasti koja ima najmanju vrednost ciljne funkcije. Ovo se postiže crtanjem nekoliko(najmanje dve) kontura ciljne funkcije da bi se odredio smer u kojem ciljna funkcija opada. Vizualno se može izabrati tačka koja je u izvodljivom domenu i koja daje najmanju vrednost ciljne funkcije. Kod crtanja kontura ciljne funkcije postoji jedan problem koji se ne pojavljuje prilikom cratnja kontura funkcija ograničenja. Kod funkcija ograničenja, prirodno je da se crta grafik za nula vrednosti funkcija zato što on predstavlja granice ograničenja. Medutim, u slučaju ciljne funkcije, ne postoji standardan skup vrednosti koje se uvek koriste. Vrednosti za koje se crta grafik ciljne funkcije moraju da se izaberu na neki način. Vrednosti koje se biraju potpuno nasumično obično nisu dobre, zato što se može desiti da konture leže izvan izabranog opsega. Logično bi bilo da se izaberu dve različite tačke i da se u njima izračuna vrednost funkcije f. Za većinu problema, izbor tačaka koje predstavljaju trećine domena rešenja, daju dobre rezultate za inicijalne konture ciljne funkcije. U ovom slučaju, te dve vrednosti se dobijaju na sledeći način: 1 c 1 = f( 3 (x 1max x 1min ), 1 ) 3 (x 2max x 2min ) 2 c 2 = f( 3 (x 1max x 1min ), 2 ) 3 (x 2max x 2min ) Najverovatnije će vrednosti funkcije f u ove dve tačke biti različite, na primer c 1 i c 2. Ukoliko nisu različite, biraju se druge tačke sve dok se ne dobiju dve različite vrednosti ciljne funkcije. Kada izaberemo vrednosti, grafik ciljne funkcije može da se nacrta slično kao i grafici funkcija ograničenja. Tj. izaberu se nekoliko porizvoljnih vrednosti za jednu promenljivu, recimo za x 1, a onda se rešavanjem jednačine f(x 1, x 2 ) = c 1 dobijaju odgovarajuće vrednosti za x 2. Linija koja prolazi kroz ove tačke predstavlja konturu ciljne funkcije za vrednost c 1. Na sličan način se dobija i kontura koja odgovara jednačini f(x 1, x 2 ) = c 2. Na osnovu ove dve konture, može se uočiti opšti oblik ciljne funkcije i smer u kojem ona opada. Sada možemo pogadati optimalnu tačku sa grafika. Da bismo bili sigurni, moramo nacrtati još dve konture, jednu koja odgovara minimalnoj vrednosti ciljne funkcije, i drugu sa malo manjom vrednošću za f. Ova poslednja kontura bi očigledno trebalo da leži izvan izvodljive oblasti. Ukoliko nastavimo sa rešavanjem našeg primera, trećine izabranog optimizacionog prostora se računaju na sledeći način: x 1 = 1 10 (10 0) = 3 3, x 2 = 1 106 (102 ( 4)) = 3 3 x 1 = 2 20 (10 0) = 3 3, x 2 = 2 212 (102 ( 4)) = 3 3 Računanjem vrednosti ciljne funkcije u ove dve tačke, biramo sledeće dve vrednosti 33
3 GRAFIČKA OPTIMIZACIJA za konture ciljne funkcije: c 1 = f( 10 3, 106 3 ) = 700, c 2 = f( 20 3, 212 3 ) = 2810 Naš zadatak je da nacrtamo linije koje prolaze kroz tačke koje zadovoljavaju sledeće dve jednačine: 4x 2 1 5x 1 x 2 + x 2 2 = 700 4x 2 1 5x 1 x 2 + x 2 2 = 2810 Da bismo dobili podatke za crtanje ovih kontura, uzimamo nekoliko tačaka uz x 1 osu, a zatim rešavanjem jednačina dobijamo odgovarajuće vrednosti za x 2. Izračunate vrednosti su prikazane u sledećoj tabeli. x 1 x 2 iz 4x 2 1 5x 1 x 2 + x 2 2 = 700 x 2 iz 4x 2 1 5x 1 x 2 + x 2 2 = 2810 0 26.4575 53.0094 2.5 32.9719 59.3919 5 40 66.0374 7.5 47.5 72.9401 10 55.4138 80.0908 Iscrtavanjem svih ovih kontura zajedno sa konturama ograničenja, dobijamo sledeći grafik: Slika 3.2: Prvi grafik funkcije cilja Sa grafika se vidi da je oblast izvodljivosti(oblast u kojoj su sva ograničenja zadovoljena) mala linija blizu koordinatnog početka. Jasno je da se intervali za x 1 i x 2 moraju podesiti tako da dobijemo uvećanu sliku domena izvodljivosti. Takode, linije koje predstavljaju nelinearne funkcije nisu veoma glatke. Prema tome bi trebalo koristiti veći broj tačaka za crtanje ovih kontura. 34
3 GRAFIČKA OPTIMIZACIJA U drugom pokušaju, ponavaljamo prethodne korake ali u sledećem opsegu: x 1min = 0, x 1max = 3, x 2min = 0, x 2max = 15 Trećine ovog segmenta, i odgovrajuće vrednosti ciljne funkcije, su sledeće: x 1 = 1, x 2 = 5, f = 4 x 1 = 2, x 2 = 10, f = 16 Tačke koje ćemo koristiti za crtanje četiri funkcije su date u sledećoj tabeli: x 2 iz jednačine x 1 f = 4 f = 16 g = 0 h = 0 0 ±2 ±4 2 6 0.75 {4.1697,-0.4197} {6.0302,-2.28} 2.5625 5.25 1.5 {6.7604,0.7396} {8.3394,-0.8394} 4.25 4.5 2.25 {9.5481,1.7019} {10.8586,0.3914} 7.0625 3.75 3 {12.4244,2.5756} {13.5208,1.4792} 11 3 Konture su prikazane na sledećem grafiku: Slika 3.3: Drugi grafik funkcije cilja Ovde se sve jasnije vidi, ali i dalje izvodljiva oblast izgleda malo manja u odnosu na ceo grafik. Da bismo dobili još bolji grafik, ponovo podešavamo granice i ponavljamo proces. Grafik koji dobijamo je prikazan na Slici 3.4. Na ovom grafiku se izvodljiva oblast vidi veoma jasno. Grafik ciljne funkcije nam pokazuje da tačka minimuma leži u preseku dva ograničenja. Istovremenim rešavanjem dve jednačine ograničenja dobijamo sledeće koordinate tačke preseka: x 1 = 1.56, x 2 = 4.44, f = 5.2 35
3 GRAFIČKA OPTIMIZACIJA Slika 3.4: Treći, detaljniji grafik funkcije cilja Na kraju dobijamo sledeći grafik koji prikazuje nekoliko različitih kontura ciljne funkcije. Na njemu je korišćeno više tačaka za crtanje ovih kontura. Kontura f = 5.2 dodiruje izvodljivu oblast. Kontura f = 10 nam pokazuje da sve konture sa manjom vrednošću ciljne funkcije leže izvan izvodljive oblasti. Prema tome, dobijamo tačku minimuma prikazanu na sledećem grafiku. Slika 3.5: Konačan grafik ciljne funkcije 36
3 GRAFIČKA OPTIMIZACIJA 3.2 Funkcija GraphicalSolution Procedura grafičke optimizacije u Mathematica je implementirana preko funkcije GraphicalSolution. Ova funkcija zapravo poziva ugradenu funkciju ContourPlot sa odgovarajućim opcijama. Funkcija GraphicalSolution je definisana u paketu pod nazivom OptimizationToolbox GraphicalSolution. Ukoliko želimo da koristimo ovu funkciju, moramo prvo da učitamo ovaj paket na sledeći način: << OptimizationToolbox GraphicalSolution Funkcija GraphicalSolution se zadaje na sledeći način: GraphicalSolution[f, {x,xmin,xmax}, {y,ymin,ymax}, options]. crta konture ciljne funkcije f, a opciono i konture funkcija ograničenja.sve konture su označene.kao rezultat vreća grafik. Sa ovom funkcijom se mogu koristiti sledeće opcije: opcija default ObjectiveContours 5 broj kontura ciljne funkcije koje bi trebalo da se nacrtaju, ili lista odredenih vrednosti za koje se crtaju konture ObjectiveContourLabels True odreduje da li će konture ciljne funkcije na grafiku biti obeležene Constraints {} lista ograničenja. Ograničenje može da se zada kao jednostavan izraz u obliku nejednakosti sa nulom na desnoj strani. A može se zadati i u obliku <,, >, sa nulom na levoj strani, ili kao == sa nulom na desnoj strani. Ovakva ograničenja se prvo prevode u standardnu formu( ili == sa nulom na desnoj strani). Zbog ovoga redosled ograničenja može biti različit od njihovog redosleda na ulazu. ConstraintLabels {gi,hi} lista oznaka koje se koriste za označavanje ograničenja na grafiku ShadingOffset 0.1 odreduje ofset senčanja kojim se prikazuje neizvodljiva strana nejednakosti ShadingThickness 0.015 odreduje gustinu senčanja kojim se prikazuje neizvodljiva strana nejednakosti EQConstraintThickness 0.01 odreduje debljinu linije kojom su predstavljena ograničenja u obliku jednakosti PrintPoints False opcija za štampanje tačaka koje se koriste za crtanje kontura GradientVectors {} crta vektore gradijenta u datim tačkama. Zadaje se lista funkcija,oznaka i tačaka u kojima se vektori crtaju GradientVectorScale 0.25 koeficijent kojim se vektori gradijenta množe pre crtanja 37
3 GRAFIČKA OPTIMIZACIJA PlotHistory {} prikazuje povezanu listu tačaka na grafiku. Može se koristiti i za prikazivanje istorije pretrage numeričkih metoda Pored ovih opcija, funkcija prihvata i sve relevantne opcije koje se koriste kod standardnih Mathematica funkcija Graphics i ContourPlot. Posebno mogu biti korisne opcije za formatiranje teksta(textstyle opcije) i opcija Epilog, koja se koristi za prikazivanje oznaka i teksta na grafiku. 3.3 Primeri grafičke optimizacije Sada ćemo razmotriti nekoliko primera koji ilustruju proceduru grafičke optimizacije i upotrebu funkcije GraphicalSolution. 3.3.1 Rešavanje primera Neka je dat sledeći problem optimizacije koji ima dve promenljive, jedno ograničenje u obliku nejednakosti i jedno ograničenje u obliku jednakosti. Minimizirati f = e x 1 ( x 1 x 2 + x 2 2 g = 2x1 + x Pod ograničenjima 2 2 0 h = x 2 1 + x 2 2 4 = 0 ) U Mathematica, ciljnu funkciju i ograničenja definišemo na sledeći način: f=exp[x1]-x1x2+x2 2 ; g=2x1+x2-2 0; h=x1 2 +x2 2-4==0; Primenom funkcije GraphicalSolution, dobijamo prvi grafik na Slici 3.6. Pošto vrednosti ciljne funkcije za koje bi trebalo nacrtati konture nisu navedene, automatski se biraju pet vrednosti. Izvodljiva oblast ovog problema je onaj deo kruga(koji predstavlja ograničenje u obliku jednakosti) koji se nalazi na izvodljivoj strani ograničenja g. Na osnovu kontura ciljne funkcije, možemo zaključiti da će optimum biti u trećem kvadrantu. Ponovo crtamo grafik ciljne funkcije za vrednosti {-1,1,3,10}. Broj tačaka je povećan na 30. Takode, vrednost opcije ShadingOffset je smanjena na 0.06. Na ovaj način liniji ograničenja približavamo liniju koja prikazuje neizvodljivu stranu. Dva grafika (gr1, gr2) se prvo generišu, ali se ne iscrtavaju. Zatim su, pomoću funkcije GraphicsArray, dva grafika prikazana jedan pored drugoga. grl=graphicalsolution[f,{x1,-4, 4},{x2, -4, 4},Constraints {g,h} gr2=graphicalsolution[f,{x1,-4,4},{x2,-4,4},constraints {g,h}, ObjectiveContours {-1,1,3,10},PlotPoints 30,ShadingOffset 0.06 Sa slike lako možemo da vidimo da je minimum blizu f = 1. Tačnu lokaciju minimuma je teško odrediti sa grafika. Sledeće vrednosti su direktno pročitane sa grafika i predstavljaju približni optimum. Show[GraphicsArray[{{grl, gr2}}] 38
3 GRAFIČKA OPTIMIZACIJA Slika 3.6: Prvi i drugi grafik za dati primer xopt = {x1-1.8,x2-0.8}; f/.xopt -0.634701 Da bismo potvrdili ovo rešenje, crtamo konačni grafik na kojem je ova vrednost uključena u listu ObjectiveContours. Pomoću opcije Epilog, možemo označiti tačku optimuma. GraphicalSolution[f, {x1, -4, 4}, {x2, -4, 4}, Constraints {g, h}, ObjectiveContours {-2,-0.64,2}, PlotPoints 30, ShadingOffset 0.06, Epilog {RGBColor[l, 0, 0], Line[{{-1.8, -0.8}, {-0.8, 0.2}}], Text ["Optimum", {-0.8,0.45}]} Slika 3.7: Finalni grafik datog primera 39
3 GRAFIČKA OPTIMIZACIJA 3.3.2 Razdvojena oblast izvodljivosti Posmatrajmo rešavanje sledećeg optimizacionog problema koji ima dve promenljive i jedno ograničenje koje je u obliku jednakosti. Minimizirati f = (x + 2) 2 + (y 3) 2 Pod ograničenjem 3x 2 + 4xy + 6y 140 = 0 Prvo definišemo ciljnu funkciju i ograničenja: f=(x+2) 2 +(y-3) 2 ; h=3x 2 +4x*y+6y-140==0; Pomoću funkcije GraphicalSolution, dobijamo sledeći grafik. GraphicalSolution[f, {x, -10, 10}, {y, -10, 10}, Constraints {h}, ObjectiveContours {20,32,40,50,80}, PlotPoints 50, Epilog {RGBColor[l, 0, 0], Line[{{-7, 0.3}, {-2, 3}}], Text [Minimum, {-2,3.5}]} Slika 3.8: Grafičko rešenje primera kod kojeg je oblast izvodljivosti razdovjena Oblast izvodljivosti je razdvojena i sadrži tačke koje leže na dvema linijama koje predstavljaju ograničenje. Minimum je približno na mestu gde kontura f = 32 dodiruje donju liniju ograničenja. Primećujemo da se ova kontura nalazi malo niže od gornje linije koja predstavlja ograničenje. Optimalno rešenje je: x = 7, y = 0.3, f = 32.2 Za problem kod kojeg je izvodljiva oblast razdvojena, optimalno rešenje se može drastično promeniti, čak i sa malim izmenama ograničenja ili ciljne funkcije. To možemo pokazati i na ovom primeru. Ukoliko konstantu 3 u ciljnoj funkciji zamenimo sa 3.5, dobijamo rešenje koje je prikazano na sledećoj slici. Optimum se 40
3 GRAFIČKA OPTIMIZACIJA približno nalazi na mestu gde kontura f = 32 dodiruje gornju liniju koja predstavlja ograničenje. Dobijeno rešenje je sledeće: x = 3.2, y = 5.8, f = 32.4 Ako ovo rešenje uporedimo sa prethodnim, vidimo da su vrednosti ciljne funkcije približne. Medutim, vrednosti promenljivih su se promenile drastično. f=(x+2) 2 +(y-3.5) 2 ; h=3x 2 +4x*y+6y-140==0; GraphicalSolution[f, {x, -10, 10}, {y, -10, 10}, Constraints {h}, ObjectiveContours {20,32,40,50,80}, PlotPoints 50, Epilog {RGBColor[l, 0, 0], Line[{{3.2, 5.8}, {-2, 3}}], Text [Optimum, {-2,2.5}]} Slika 3.9: Grafičko rešenje primera sa modifikovanim ograničenjima 3.3.3 Projektovanje zgrade Posmatrajmo problem projektovanja zgrade, koji smo prethodno razmatrali kod formulacije optimizacionih problema. Problem ima pet promenljivih i formulisan je na sledeći način: Pronaći vrednosti (n, l, w, h, d) koje: n=broj spratova d=dubina zgrade ispod zemlje h=visina zgrade iznad zemlje l=dužina zgrade w=širina zgrade 41
3 GRAFIČKA OPTIMIZACIJA Minimiziraju Pod ograničenjima f = dlw d+h = 3.5 n l = 1.618w nlw 20000 l 50 w 50 100(2hl + 2hw + lw) 225000 n 1 l, w, h, d 0 Za grafičko rešavanje, moramo smanjiti broj promenljivih na dva. Pomoću dve jednostavne relacije koje važe za date promenljive(ograničenja u obliku jednakosti), problem se lako može formulisati tako da ima tri promenljive. Ako uvedemo smenu n = d+h i l = 1.618w, dobijamo sledeću formulaciju problema: 3.5 Minizirati f = 1.618dw 2 1.618w 50 w 50 Pod ograničenjima 100(5.236hw + 1.618w 2 ) 225000 0.462286(d + h)w 2 20000 w, h, d 0 Drugo ograničenje je sada suvišno i možemo ga ukloniti. Da bismo redukovali problem na dve promenljive, moramo jednoj od promenljivih dodeliti neku realnu vrednost. Na primer, ukoliko uzmemo da je ukupan broj spratova 25, onda je ukupna visina zgrade: d + h = 25 3.5 = 87.5m, odnosno h = 87.5 d Prema tome, problem bi sada izgledao ovako: Minizirati f = 1.618dw 2 Pod ograničenjima 1.618w 50 100(5.236(87.5 d)w + 1.618w 2 ) 225000 40.45w 2 20000 w, d 0 Sledi rešvanje ovog problema u Mathematica. Najpre zadajemo ciljnu funkciju i ograničenja: f=1.618dw 2 ; g={100(5.236(87.5-d)w+1.618w 2 ) 225000,1.618w 50,40.45w 2 20000,d 0,w 0}; Primenom funkcije GraphicalSolution na dati problem dobijamo grafik koji je prikazan na Slici 3.10. Ciljnu funkciju ćemo podeliti sa 10000, da bi se izbegli veoma veliki brojevi kao oznake na konturama ciljne funkcije. GraphicalSolution[f/10000, {w, 10, 50}, {d, 50, 100}, Constraints g, AspectRatio 1,ObjectiveContours {3,6,9,12,18}, PlotPoints 25, Epilog {RGBColor[l, 0, 0], Line[{{22.24, 75.05}, {15, 80}}], Text ["Optimum", {26,90}], Text["Izvodljivo", {26,90}]} 42
3 GRAFIČKA OPTIMIZACIJA Slika 3.10: Grafičko rešenje primera projektovanja zgrade Jasno je da optimalno rešenje leži u tački preseka drugog i trećeg ograničenja. Tačno rešenje se može dobiti računanjem preseka ova dva ograničenja, na sledeći način: sol=solve[{100(5.236(87.5-d)w+1.618w 2 )==225000,40.45w 2 ==20000},{w,d}]} {{d 75.0459,w 22.236},{d 99.9541, w -22.236}} f/sol[1] 60036.7 Prvo rešenje odgovara datoj tački preseka. Prema tome, optimalno rešenje je sledeće: w = 22.24m, d = 75.05m, f = 60036.7m 3 Kao što se i moglo očekivati, ovo optimalno rešenje nam pokazuje da se veći deo zgrade nalazi ispod zemlje. Visina zgrade je h = 87.5 75.05 = 12.45m. Dužina je l = 1.618 22.24 = 35.98m. 3.3.4 Portfolio menadžment Sada ćemo razmatrati grafičko rešavanje jednostavnog problema portfolio menadžmenta koji ima dve promenljive. Investitior želi da uloži novac u dva različita tipa akcija tako da dobije najmanje 15% povraćaja, a da rizik od gubitaka bude minimalan. Procenti povraćaja za ove akcije, u proteklih šest godina, su sledeći: Tip akcija Godišnji procenat povraćaja Tip I 15.24 17.12 12.23 10.26 12.62 10.42 Tip II 12.24 19.16 26.07 23.46 5.62 7.43 Optimizacione promenljive su sledeće: 43
3 GRAFIČKA OPTIMIZACIJA x y Deo kapitala uložen u akcije tipa I Deo kapitala uložen u akcije tipa II Prvo ćemo u Mathematica kreirati listu koja sadrži date procente: tip1={15.24, 17.12, 12.23, 10.26, 12.62, 10.42}; tip2={12.24, 19.16, 26.07, 23.46, 5.62, 7.43}; returns={tip1, tip2}; Pomoću ugradenih Mathematica funkcija Apply i Map, na sledeći način dobijamo prosečan povraćaj za svaki tip investicija: averagereturns = Map[Apply[Plus,#]/Length[#]&,returns] {12.9817, 15.6633} Da bismo definisali ciljnu funkciju, prvo moramo izračunati matricu kovarijanse V. Sledeća funkcija generiše koeficijente kovarijanse: covariance[x, y ] : = Module[{xb, yb, n = Length[x]}, xb = Apply[Plus, x]/n; yb = Apply[Plus, y]/n; Apply[Plus, (x - xb)(y - yb)]/n Pomoću covariance funkcije i ugradene Mathematica funkcije Outer, dobijamo kompletnu matricu V : ( Vmat = Outer[coVariance, ) returns, returns, 1 MatrixForm[Vmat] 6.14855 0.403411 0.403411 60.2815 Ciljnu funkciju i ograničenja dobijamo na sledeći način: vars = {x, y}; f = Expand[vars.Vmat.vars] 6.14855x 2 + 0.806822xy + 60.2815y 2 g = {Apply[Plus, vars] == 1, averagereturns.vars 15} {x + y == 1, 12.9817x + 15.6633y 15} Primenom funkcije GraphicalSolution dobijamo grafik koji je prikazan na Slici 3.11. Sa ove slike vidimo da se optimum nalazi u tački preseka dva ograničenja. Tačan optimum možemo dobiti ako izračunamo tačku preseka ograničenja: sol = Solve[{x + y == 1, 12.982x + 15.663y == 15}, {x, y}] {{x -> 0.247296, y -> 0.752704}} f/.sol[1] 34.6795 Dakle, optimalno rešenje bi bilo da se 25% kapitala uloži na prvi, a 75% kapitala na drugi tip akcija, pri čemu bi rizik od gubitka bio 35. Graphicalsolution[f, {x, 0., 0.5}, {y, 0.5, 1}, Constraints -> g, PlotPoints -> 30, Epilog -> {RGBColor[1, 0, 0], Line[{{.247,.753}, {.4,.8}}], Text[Optimum, {.4,.82}]} 44
3 GRAFIČKA OPTIMIZACIJA Slika 3.11: Grafičko rešenje primera portfolio menadžmenta 45
4 Optimizacija bez ograničenja Problem optimizacije bez ograničenja predstavlja problem nalaženja vektora optimizacionih promenljivih x koji minimizuje f(x). Osnovna iteracija numeričkih metoda za rešavanje problema bez ograničenja se može zapisati na sledeći način: x k+1 = x k + α k d k, k = 0, 1,... gde je d k opadajući smer, a α k je skalar koji predstavlja dužinu koraka. Početna tačka x 0 se obično bira proizvoljno. U svakoj iteraciji, dužina koraka i smer opadanja se biraju tako da važi f(x k+1 ) < f(x k ). Postupak se prekida kada se ispuni odgovarajući kriterijum konvergencije. Kako je neophodni uslov za minimum problema bez ograničenja da gradijent bude nula u tački optimuma, kriterijum konvergencije se zapisuje na sledeći način: ( f(x f(x k+1 k+1 ) ) 2 ( f(x k+1 ) ) 2 ( f(x k+1 ) ) 2 ) + + + tol x 1 x 2 x n gde je tol neka mala vrednost tolerancije(npr.,10 3 ). Prvo je, za dati smer, potrebno odrediti da li je to smer opadanja u kojem vrednost funkcije opada. Kada odredimo smer opadanja, problem računanja odgovarajuće dužine koraka zapravo predstavlja traženje minimuma funkcije od jedne promenljive. Ovaj proces je poznat kao line search. Dužinu koraka je moguće odrediti pomoću uslova optimalnosti za minimum funkcije od jedne promenljive. Medutim, kako ovaj metod zahteva eksplicitan izraz za izvod jednodimenzionalne funkcije, on je pogodan samo za male probleme i ručno računanje. Ovaj metod se naziva analitički line search. Posle ovoga, razmotrićemo nekoliko numeričkih line search metoda koji ne zahtevaju računanje izvoda. U ove metode spadaju pretraga intervala, pretraga zlatnog preseka i kvadaratna interpolacija. Zatim razmatramo line search metode kombinovane sa metodama za odredivanje opadajućeg smera, a onda numeričke metode za rešavanje problema optimizacije bez ograničenja. Tu spadaju metod najstrmijeg pada, konjugovani gradijent, modifikovani Njutnov i kvazi- Njutnov metod. 4.1 Smer opadanja Za dati smer se na jednostavan način može ispitati da li je smer opadanja. Da bi d k bio opadajući smer, mora da važi ili Pomoću Tejlorovog razvoja dobijamo f(x k+1 ) < f(x k ) f(x k+1 + α k d k ) < f(x k ) f(x k ) + α k f(x k ) T d k < f(x k )
4 OPTIMIZACIJA BEZ OGRANIČENJA odnosno α k f(x k ) T d k < 0 Ukoliko uvedemo uslov da dužina koraka α k mora da bude pozitivna, onda dobijamo sledeći kriterijum za odredivanje smera opadanja u datoj tački x k : f(x k ) T d k < 0 Pored toga, numerička vrednost proizvoda f(x k ) T d k nam pokazuje koliko brzo funkcija opada u ovom smeru. Sledeća funkcija, definisana u paketu OptimizationToolbox Unconstrained, koristi ovaj kriterijum da ispita da li je dati smer opadajući: DescentDirectionCheck[f, pt, d, vars] proverava da li je dati smer opadajući za funkciju f,gde je pt-trenutna tačka,d-vektor smera,var-lista promenljivih.funkcija kao rezultat vraća par {status, f.d} gde status ima vrednost Descent ili N otdescent, f je gradijent u datoj tački, a f.d je vektorski proizvod gradijenta i datog vektora smera. Primer 4.1. Za sledeću funkciju od dve promenljive, proveriti da li su smerovi d 1, d 2 i d 3 opadajući ili ne u datoj tački x k : f = (x 2 1 + x 2-11) 2 + (x 1 + x 2 2-7); vars = {x 1,x 2 }; xk= {1,2}; d1 = {1, 1}; d2 = {-1, l}; d3 = {31, 12}; Koristimo funkciju DescentDirectionCheck da proverimo da li je d 1 smer opadanja u x k. << OptimizationToolbox Unconstrained DescentDirectionCheck[f, ( xk, d1, vars 1 44x1 + 4x f 3 1 + 4x ) 1x 2 22 + 2x 2 1 + 4x f{1.,2.} 2 f.d -43 Status Descent Slično, za d 1 i d 2 dobijamo DescentDirectionCheck[f, xk, d2, vars f.d -19 Status NotDescent DescentDirectionCheck[f, xk, d3, vars f.d -1105 Status Descent ( 31 12 Primećujemo da d 3 ima negativnu vrednost gradijenta u tački x k. I to je uvek smer opadanja. Pored toga, proizvod f T d ima najveću negativnu vrednost, što znači da je smer sa negativnim gradijentom smer najstrmijeg pada. 4.2 Line search metode-računanje dužine koraka U svakoj iteraciji numeričkog metoda optimizacije, moraju se odrediti smer opadanja i odgovarajuća dužina koraka. Sada ćemo razmotriti računanje dužine koraka, a kasnije i odredivanje smera opadanja. 47 )
4 OPTIMIZACIJA BEZ OGRANIČENJA U (k+1) iteraciji, ukoliko je poznat smer opadanja, minimizacioni problem je Pronaći α koje minimizuje f(x k+1 ) = f(x k + α k d k ) φ(α) Prema tome, problem je redukovan na nalaženje minimuma funkcije od jedne promenljive. Za pronalaženje ovog minimuma, razmotrićemo analitički i nekoliko numeričkih metoda. Pošto je cilj ovih metoda računanje dužine koraka, trebalo bi napomenuti da se podrazumeva da je vrednost α pozitivna, obično blizu α = 1. 4.2.1 Analitički line search Ukoliko nam je poznat izraz za φ(α), optimalna dužina koraka se lako može izračunati iz potrebnog i dovoljnog uslova za minimum funkcije od jedne promenljive, odnosno iz dφ dα = 0 i d2 φ dα > 0 2 Primer 4.2. Za sledeću funkciju, izračunati optimalnu dužinu koraka u datom smeru. f = (x 2 1 + x 2-11) 2 + (x 1 + x 2 2-7); vars = {x 1,x 2 }; xk= {1,2}; d = {1, 2}; Prvo proveravamo da li je dati smer smer opadanja ili ne. DescentDirectionCheck[f, ( xk, d, vars 1 44x1 + 4x f 3 1 + 4x ) 1x 2 22 + 2x 2 1 + 4x f{1.,2.} 2 f.d -55 Status Descent ( 31 12 Zatim konstruišemo funkciju φ postavljanjem vrednosti x = x k + αd k, na sledeći način: ) xk1=xk+αd; φ= Expand[f/.Thread[vars xkl]] 62-55α + 4α 2 + 8α 3 + α 4 Dužinu koraka računamo rešavanjem jednačine dφ/dα = 0. sol = FindRoot[Evaluate[D[φ, α] == 0], {α,1}] {α 1.24639} Zatim proveravamo potreban uslov drugog reda da bismo bili sigurni da je dobijeno α zaista minimum. D[φ, {α, 2}]/.sol 86.4687 Kako je ova vrednost pozitivna, to znači da je α zaista minimum. Prema tome, sledeća tačka u datom smeru je: newpt = xk1/.sol {2.24639,4.49278} 48
4 OPTIMIZACIJA BEZ OGRANIČENJA Računanjem vrednosti funkcije f u datoj i u ovoj novoj tački, vidimo da se vrednost funkcije zaista smanjila. f/.{thread[vars xk], Thread[vars newpt]} {62,17.5658} Direktno računanje izraza dφ dα Kao što se može videti u prethodnom primeru, α se dobija iz dφ. Umesto razvijanja izraza za φ(α) i njegovog diferenciranja, izraz za dφ se može dobiti direktno, dα dα na sledeći način: Minimizovati f(x k+1 ) = f(x k + αd k ) = φ(α) Ukoliko f posmatramo kao funkciju od α i uzmemo da je x = x k + αd k, diferenciranjem dobijamo dφ dα = f x 1 x 1 α + f x 2 x 2 α + f(xk+1 ) T d k Tj. dφ je dobijeno direktno iz vektorskog proizvoda gradijenta funkcije u novoj tački dα (x k + αd k ) i vektora smera. Sledeća funkcija, definisana u OptimizationToolbox Unconstrained paketu, računa optimalnu dužinu koraka. AnalyticalLineSearch[gradf, pt, d, vars, prresults:true, opts] računa optimalnu dužinu koraka koristeći analitički pristup, gde je gradf-gradijent date funkcije, pt-trenutna tačka, d-vektor smera, varslista promenljivih. Opcije koje se mogu koristiti kod ove funkcije su date u sledećoj tabeli: opcija default vrednost SecantPoints {0,0.1} dve početne vrednosti metoda sečice koji se koristi za nalaženje korena StepLengthVar α simbol kojim se označava dužina koraka Primer 4.3. Za sledeću funkciju, izračunati optimalnu dužinu koraka u datom smeru koristeći analitički line search metod. f = (x 2 1 + x 2-11) 2 + (x 1 + x 2 2-7); vars = {x 1,x 2 }; xk= {1,2}; d = {1, 2}; << OptimizationToolbox Unconstrained df ( = Grad[f, vars MatrixForm[df ] 1 44x1 + 4x 3 1 + 4x ) 1x 2 22 + 2x 2 1 + 4x 2 DescentDirectionCheck[f, ( xk, d, vars 1 44x1 + 4x f 3 1 + 4x ) 1x 2 22 + 2x 2 1 + 4x f{1.,2.} 2 ( 31 12 ) 49
4 OPTIMIZACIJA BEZ OGRANIČENJA f.d -55 Status Descent step = ( AnalyticalLineSearch[df, ) xk, d, vars 1 + α xk1 2 + 2α ( 31 16α + 20α f(xk1) + 4α 3 ) 2( 6 + 6α + α 2 ) dφ/dα f(xkl).d = 0-55 + 8α + 24α 2 + 4α 3 == 0 α l.24639 Ova dužina koraka je ista kao i ona koju smo dobili u prethodnom primeru. 4.2.2 Ravnomerna pretraga intervala Analitički metod zahteva eksplicitan izraz za φ(α) ili za dφ/dα. Kod numeričkog rešavanja, takve izraze nije moguće formirati i zbog toga se pribegava numeričkim line search metodama. Najjednostavnija line search metoda je ravnomerna pretraga intervala. Kod ovog pristupa se traže granice minimuma funkcije φ(α). Ukoliko se ove granice uspešno odrede, minimum će biti ograničen na željeni nivo preciznosti. Ukoliko krenemo od date donje granice(recimo α = 0) i parametra koraka intervala δ > 0(recimo δ = 0.5), granice možemo izračunati na sledeći način: 1. Neka je α 1 =početna vrednost za α. Izračunati φ(α 1 ). 2. Neka je α 2 = α 1 + δ. Izračunati φ(α 2 ). Tada imamo jednu od dve moguće situacije, koje su prikazane na Slici 4.1. Slika 4.1: Dve moguće situacije prilikom pretrage intervala 3. Ako je φ(α 2 ) φ(α 1 ), onda funkcija nastavlja da opada. Minimum je izmedu α 1 i α 2 ili još uvek nije odreden. Ukoliko nije odreden, uzeti da je α 1 = α 2 i vrattiti se na korak 2. 4. Ako je φ(α 2 ) > φ(α 1 ), znači da je minimum preskočen. Minimum mora biti ili u trenutnom intervalu ili u onom pre njega. Dakle, pronašli smo gornju i doniju granicu intervala u kojem leži minimum. α l = α 1 δ α min α u = α 2 50
4 OPTIMIZACIJA BEZ OGRANIČENJA Parametar koraka intervala δ se redukuje na δ/f, gde je F parametar preciznosti(recimo F = 10) i proces se ponavlja. Konvergencija je postignuta kada I = (α u α l ) bude manje od vrednosti odredene tolerancije. Kada se postigne konvergiranja, uzima se da je minimum srednja vrednost gornje i donje granice. α min = α u + α l 2 Celokupnu ovu proceduru obavlja sledeća funkcija, koja je definisana u paketu OptimizationToolbox Unconstrained. EqualIntervalSearch[φ, α, {α i, δ, F }, tol:10 3 ] Odreduje minimum funkcije φ(α) pomoću ravnomerne pretrage intervala. φ-funkcija od jedne promenljive α, {α i, δ, F }-početne vrednosti za α,δ i F,respektivno,tol(opciono)-tolerancija konvergencije(default je 10 3 ).Funkcija vraća {Izračunatu minimalnu vrednost, Interval u kojem se nalazi minimum} Primer 4.4. Odrediti minimum sledeće funkcije pomoću ravnomerne pretrage intervala: φ=1-1/(1-α+2α 2 ) Slika 4.2: Grafik funkcije 1-1/(1-α+2α 2 ) Grafik funkcije φ je dat na Slici 4.2. Na grafiku se vidi da minimum postoji blizu α = 0.25. Koristićemo funkciju EqualIntervalSearch za računanje minimuma, startujući od α = 0, δ = 0.5, F = 5, i tol=0.01. << OptimizationToolbox Unconstrained EqualIntervalSearch[φ, α, {0,0.5,5}, 0.01] δ 0.5 α φ(α) 0 0 0.5 0 1 0.5 Bounds {0,1} δ 0.1 51
4 OPTIMIZACIJA BEZ OGRANIČENJA α φ(α) 0 0 0.1-0.0869565 0.2-0.136364 0.3-0.136364 0.4-0.0869565 Bounds {0.2,0.4} δ 0.02 α φ(α) 0.2-0.136364 0.22-0.140511 0.24-0.142596 0.26-0.142596 0.28-0.140511 Bounds {0.24,0.28} δ 0.004 α φ(α) 0.24-0.142596 0.244-0.142763 0.248-0.142847 0.252-0.142847 0.256-0.142763 Bounds {0.248,0.256} {0.252, {0.248,0.256}} 4.2.3 Pretraga preseka Pretraga intervala je jednostavna ali zahteva veoma veliki broj evaluacija funkcije pre nego što locira minimum. Znatno efikasnija procedura je pretraga preseka, kod koje se početne granice(α l, α u ) računaju na isti način kao kod pretrage intervala. Medutim, granice se zatim pomeraju uzimanjem dve nove tačke, koje se nalaze unutar prvobitnih granica i označavaju se sa α a i α b, a zatim se računa vrednost funkcije u ove dve tačke. Ukoliko uzmemo da se ove dve tačke poklapaju sa tačkama trećina rastojanja izmedu granica, onda je α a = α l + (α u α l )/3, α b = α l + 2(α u α l )/3. Tada imamo jednu od dve moguće situacije koje su prikazane na Slici 4.3. Slika 4.3: Dve moguće situacije prilikom pretrage intervala 1. Ako je φ(α a ) < φ(α b ), onda je jasno da minimum mora biti u intervalu (α l, α b ). 2. Ako je φ(α a ) φ(α b ), onda minimum mora biti u intervalu (α a, α u ). 52
4 OPTIMIZACIJA BEZ OGRANIČENJA Dakle, odredili smo nove granice minimuma. Proces se sada ponavlja sa novom donjom i novom gornjom granicom. Jasno je da se u svakom koraku interval, u kojem leži minimum, smanjuje za trećinu. Kao i ranije, konvergencija je postignuta kada se vrednost promenljive I = (α u α l ) samnji do odredene vrednosti tolerancije. Uzima se da je minimum srednja tačka gornje i donje granice. α min = α u + α l 2 Ovaj postupak je implementiran u sledećoj funkciji koja je definisana u paketu OptimizationToolbox Unconstrained. SectionSearch[φ, α, {α i, δ}, tol:10 3 ] Odreduje minimum funkcije φ(α) pomoću pretrage preseka. φ-funkcija od jedne promenljive α, {α i, δ}-početne vrednosti za α i δ,respektivno,tol(opciono)-tolerancija konvergencije(default je 10 3 ).Funkcija vraća {Izračunatu minimalnu vrednost, Interval u kojem se nalazi minimum} Primer 4.5. Pomoću pretrage preseka odrediti minimum sledeće funkcije: φ=1-1/(1-α+2α 2 ); Koristimo funkciju SectionSearch da bismo izračunali minimum, startne vrednosti su α = 0, δ = 0.1, i tol = 0.01. << OptimizationToolbox Unconstrained SectionSearch[φ, α, {0,0.1}, 0.01] ******** Bounding phase ******** δ 0.1 α φ(α) 0 0 0.1-0.0869565 0.2-0.136364 0.3-0.136364 0.4-0.0869565 Bounds {0.2,0.4} ******** Refinement phase ******** α L α U α a α b φ(α a) φ(α b ) I 0.2 0.4 0.266667 0.333333-0.142132-0.125 0.2 0.2 0.333333 0.244444 0.288889-0.142777-0.13892 0.133333 0.2 0.288889 0.22963 0.259259-0.141774-0.142633 0.0888889 0.22963 0.288889 0.249383 0.269136-0.142856-0.141901 0.0592593 0.22963 0.269136 0.242798 0.255967-0.142722-0.142764 0.0395062 0.242798 0.269136 0.251578 0.260357-0.142851-0.142577 0.0263374 0.242798 0.260357 0.248651 0.254504-0.142852-0.142804 0.0175583 0.242798 0.254504 0.2467 0.250602-0.142829-0.142856 0.0117055 0.2467 0.254504 0.249301 0.251903-0.142856-0.142848 0.00780369 {0.249301,{0.2467,0.251903}} 4.2.4 Pretraga zlatnog preseka Pretraga zlatnog preseka je slična sa pretragom preseka ali ima dve glavne razlike. U fazi ograničavanja, umesto dodavanja fiksirane vrednosti δ na prethodno α, α 2 se dobija na sledeći način: α 2 = α 1 + τ n 1 δ 53
4 OPTIMIZACIJA BEZ OGRANIČENJA gde je n brojač iteracija(n = 1, 2,... ), a τ je zlatni presek τ = 1 + 5 2 1.618 Kako je τ veće od 1, koraci postaju sve veći i veći kako se iteracije izvršavaju. Prema tome, granice se lociraju brzo bez obzira na to koliko je mala vrednost δ. Sledi kompletan algoritam faze ograničavanja: Neka je dat parametar koraka intervala δ > 0(recimo δ = 0.5) 1. α 1 =početna vrednost α. Izračunati φ(α 1 ). Brojač iteracija dobija vrednost n = 1. 2. α 2 = α 1 + τ n 1 δ. Izračunati φ(α 2 ) 3. Ako je φ(α 2 ) φ(α 1 ), onda nismo premašili minimum. Stoga se uzima da je α 1 = α 2 i ide se ponovo na korak 2. U suprotnom, premašili smo minimum i on sigurno leži u intervalu: α l α 1 δ α min α u α 2 U fazi preciziranja, nove dve tačke se biraju na sledeći način: α a = α l + (1 1 τ )(α u α l ) i α b = α l + (α u α l )/τ Kao što ćemo videti na nekim numeričkim primerima, prednost ovog algoritma je što je jedna od ove dve tačke uvek ista kao i tačka iz pethodne iteracije. Prema tome, svaka iteracija zahteva samo jednu novu evaluaciju funkcije. Konvergencija je dostignuta kada se vrednost parametra I = (α u α l ) smanji do odredene tolerancije. Posle konvergiranja, uzima se da je minimum srednja vrednost gornje i donje granice. α min = α u + α l 2 Ovaj algoritam obavlja sledeća funkcija koja je takode definisana u paketu OptimizationToolbox Unconstrained : GoldenSectionSearch[φ, α, {α i, δ}, tol:10 3 ] Odreduje minimum funkcije φ(α) pomoću pretrage zlatnog preseka. φ-funkcija od jedne promenljive α, {α i, δ}-početne vrednosti za α i δ,respektivno,tol(opciono)-tolerancija konvergencije(default je 10 3 ).Funkcija vraća {Izračunatu minimalnu vrednost, Interval u kojem se nalazi minimum} Primer 4.6. Pomoću pretrage zlatnog preseka odrediti minimum sledeće funkcije: φ=1-1/(1-α+2α 2 ); Koristimo funkciju GoldenSectionSearch da bismo izračunali minimum, startne vrednosti su α = 0, δ = 0.1, i tol = 0.01. 54
4 OPTIMIZACIJA BEZ OGRANIČENJA << OptimizationToolbox Unconstrained GoldenSectionSearch[φ, α, {0,0.1}, 0.01] ******** Bounding phase ******** δ 0.1 α φ(α) 0 0 0.1-0.0869565 0.261803-0.142493 0.523607 0.024125 Bounds {0.1,0.523607} ******** Refinement phase ******** α L α U α a α b φ(α a) φ(α b ) I 0.1 0.523607 0.261803 0.361803-0.142493-0.111111 0.423607 0.1 0.361803 0.2 0.261803-0.136364-0.142493 0.261803 0.2 0.361803 0.261803 0.3-0.142493-0.136364 0.161803 0.2 0.3 0.238197 0.261803-0.142493-0.142493 0.1 0.238197 0.3 0.261803 0.276393-0.142493-0.14104 0.0618034 0.238197 0.276393 0.252786 0.261803-0.142837-0.142493 0.0381966 0.238197 0.261803 0.247214 0.252786-0.142837-0.142837 0.0236068 0.247214 0.261803 0.252786 0.256231-0.142837-0.142756 0.0145898 0.247214 0.256231 0.250658 0.252786-0.142856-0.142837 0.00901699 {0.251722,{0.247214,0.256231}} Primećujemo da je ukupan broj iteracija manji nego kod prethodnih metoda. 4.2.5 Metod kvadratne interpolacije Sve metode pretrage intervala koje smo do sada razmatrali računaju vrednosti funkcije u predodredenim tačkama, ne uzimajući u obzir formu same funkcije, i zbog toga se može desiti da ove metode veoma sporo konvergiraju. Druga klasa metoda koji su poznati kao interpolacioni metodi, zasnovani su na formiranju polinomalne funkcije u datom broju tačaka. Kao što samo ime govori, kvadratni interpolacioni metod koristi tri date tačke i formira kvadratnu funkciju kroz ove tačke. Minimum ove kvdratne funkcije se računa pomoću potrebnih uslova. Novi skup od tri tačke se formira uporedivanjem vrednosti funkcije u tački minimuma sa datim tačkama. Proces odlučivanja je sličan kao kod pretrage preseka. Postupak se ponavlja sa tri nove tačke sve dok interval u kome se nalazi minimum ne postane veoma mali. Slično kao kod pretrage zlatnog preseka, ovaj metod zahteva samo jednu novu evaluaciju funkcije u svakoj iteraciji. Kako se interval smanjuje, kvadratna aproksimacija postaje sve bliža pravoj funkciji, što ubrzava konvergenciju. Glavni korak Neka su date tri tačke α l, α m, i α u, kvadratna funkcija φ q koja prolazi kroz odgovarajuće vrednosti funkcije φ l, φ m, i φ u data je sledećom jednačinom: (α α m )(α α u ) φ q (α) =φ l (α l α m )(α l α u ) + φ (α α l )(α α u ) m (α m α l )(α m α u ) (α α l )(α α m ) + φ u (α u α l )(α u α m ) 55
4 OPTIMIZACIJA BEZ OGRANIČENJA Potreban uslov za minimum ove kvadratne funkcije je dφ q dα =φ 2α α m α u l (α l α m )(α l α u ) + φ 2α α l α u m (α m α l )(α m α u ) + φ u 2α α l α m (α u α l )(α u α m ) = 0 Rešavanjem ove jednačine po α, dobijamo sledeću tačku minimuma ozančenu sa α q : α q = 1 2 ( φl (αm 2 αu) 2 + φ m (αu 2 αl 2) + φ u(αl 2 ) α2 m) φ l (α m α u ) + φ m (α u α l ) + φ u (α l α m ) Znajući minimum, sledeći zadatak je odredivanje tačke koja se odbacuje pre ponavaljanja postupka. Moguće su sledeće dve situacije: 1. α q α m Ako je φ(α m ) φ(α q ), onda je minimum prave funkcije u intervalu (α l, α m ); prema tome, uzimamo (α l, α q, α m ) kao tri nove tačke za sledeću iteraciju. Ako je φ(α m ) < φ(α q ), onda je minimum prave funkcije u intervalu (α q, α u ); prema tome, uzimamo (α q, α m, α u ) kao tri nove tačke za sledeću iteraciju. 2. α q > α m Ako je φ(α m ) φ(α q ), onda je minimum prave funkcije u intervalu (α m, α u ); prema tome, uzimamo (α m, α q, α u ) kao tri nove tačke za sledeću iteraciju. Ako je φ(α m ) < φ(α q ), onda je minimum prave funkcije u intervalu (α l, α q ); prema tome, uzimamo (α l, α m, α q ) kao tri nove tačke za sledeću iteraciju. Konvergencija Kako se smanjuje interval u kojem leži minimum, kvadratna funkcija postaje sve bliža pravoj funkciji. Ovo se može zaključiti na osnovu toga što u tački minimuma kvadratne funkcije (α q ), kvadratna i prvobitna funkcija imaju skoro identične vrednosti. Ako ovo uzmemo kao kriterijum konvergencije, proces se završava kada je zadovoljen sledeći uslov: gde je tol tolerancija konvergencije. [ φq (α q ) φ(α q ) ] Abs tol φ(α q ) 56
4 OPTIMIZACIJA BEZ OGRANIČENJA Biranje tri početne tačke i utvrdivanje granica Biranje tri proizvoljne vrednosti za α može biti problematično ako je imenilac jednačine α q jednak nuli. Da bi situacija bila jasnija, pretpostavimo da su tri izabrane tačke 0,δ i 2δ, gde je δ parametar čiju vrednost biramo(recimo δ=1). U ovom slučaju, izraz za α q ima sledeću formu: α q = (3φ l 4φ m + φ u )δ 2φ l 4φ m + 2φ u Da bi imenilac bio veći od 0, mora da važi 2φ l 4φ m + 2φ u > 0 ili φ l + φ u 2 > φ m Imajući u vidu ovaj uslov, koristimo sledeći algoritam za odredivanje tri početne tačke. Pored ovoga, algoritam takode odreduje gornju i donju granicu minimuma. 1. Izabrati početno δ(recimo δ = 1). Uzeti da je α l = 0. Izračunati φ(α l ). Uzeti da je α 1 = δ. Izračunati φ(α 1 ). 2. Ako je φ(α 1 ) > φ(α l ), onda minimum mora biti u tački manjoj od α 1. Isprobati α 1 kao treću tačku, uzeti da je α u = α 1 i φ(α u ) = φ(α 1 ). Srednja tačka je α m = δ/2, izračunati φ(α m ). Otići na korak (6). 3. Ako je φ(α 1 ) φ(α l ), onda minimum nije ograničen. Izabrati α 1 kao srednju tačku, uzeti da je α m = α 1 i φ(α m ) = φ(α 1 ). Za lociranje treće tačke uzeti da je α 2 = 2δ, izračunati φ(α 2 ), i nastaviti sa sledećim korakom. 4. Ako je φ(α 2 ) > φ(α 1 ), onda smo dobili ispravnu treću tačku. Uzeti da je α u = α 2 i φ(α u ) = φ(α 2 ), ići na korak (6). 5. Ako je φ(α 2 ) < φ(α 1 ), onda minimum još nije ograničen. Uzeti da je α 1 = α 2, φ(α 1 ) = φ(α 2 ) i δ = 2δ, vratiti se nazad na korak (2). 6. Ako je φ l+φ u 2 > φ m, postupak je završen. U suprotnom, uzeti da je δ = 2δ i α 1 = δ, izračunati φ(α 1 ) i vratiti se na korak (2). Kompletan postupak rešavanja u Mathematica je implemetiran preko funkcije QuadraticSearch koja je definisana u paketu OptimizationToolbox Unconstrained. QuadraticSearch[φ, α, δ:1, maxiter:20, tol:0.001, prresults:true] Odreduje minimum funkcije φ(α) pomoću metoda kvadratne interpolacije. φ-funkcija od jedne promenljive α, δ(default = 1)-parametar koji se koristi za odredivanje tri početne vrednosti za α, MaxIter(opciono)-maksimalan broj iteracija(default=20), tol(opciono)-tolerancija konvergencije (default je 10 3 ), prresults(opciono)-ako je vrednost ovog parametra T rue(default) onda se štampaju svi medu rezultati.funkcija vraća {Izračunatu minimalnu vrednost, Interval u kojem se nalazi minimum} 57
4 OPTIMIZACIJA BEZ OGRANIČENJA Primer 4.7. Pomoću kvadratne interpolacije odrediti minimum sledeće funkcije: φ=1-1/(1-α+2α 2 ); Koristimo funkciju QuadraticSearch da bismo izračunali minimum, startne vrednosti su δ = 1, i tol = 0.001. << OptimizationToolbox Unconstrained QuadraticSearch[φ, α] **** Iteration 1 α l 0 φ l 0 α 1 1 φ 1 0.5 Pošto je φ 1 > φ l, test u koraku (2) prolazi, što znači da smo locirali odgovarajuće granice kao i tri početne tačke. Initial three points 0 0.5 1 Function values 0 0 0.5 Sada možemo iskoristiti postupak glavnog koraka za lociranje minimuma. Posle proračuna dobijamo sledeće rezultate: α l α m α u α q φ l φ m φ u φ q Conv. 0 0.5 1 0.25 0 0 0.5-0.142857 0.5625 0 0.25 0.5 0.25 0-0.142857 0-0.142857 0 0.25 0.25 0.5 - - -0.142857-0.142857 0 - - 0 {0.25,{0.25,0.5}} Granice se ne mogu utvrditi za δ 2 pomoću postupka koji smo ovde opisali. U ovom slučaju, potrebno je smanjiti vrednost δ i pokušati ponovo. QuadraticSearch[φ, α, 2, 5] **** Iteration 1 α l 0 φ l 0 α 1 2 φ 1 0.857143 **** Iteration 2 α l 0 φ l 0 α 1 4 φ 1 0.965517 **** Iteration 3 α l 0 φ l 0 α 1 8 φ 1 0.991736 **** Iteration 4 α l 0 φ l 0 α 1 16 φ 1 0.997988 **** Iteration 5 α l 0 φ l 0 α 1 32 φ 1 0.999504 Change δ - - - No bounds found in 5 tries. $Aborted Vrednosti funkcije u drugoj tački su uvek veće nego u prvoj. Test u koraku (2) je uspešan, ali u koraku (4) nije, i u svakoj sledećoj iteraciji povećava se vrednost δ. Proces je konačno obustavljen posle pet neuspešnih pokušaja. 4.3 Metode za minimizaciju bez ograničenja U svakoj iteraciji numeričkog metoda optimizacije, moramo odrediti smer opadanja i odgovarajuću dužinu koraka: x k+1 = x k + α k d k, k = 0, 1,... 58
4 OPTIMIZACIJA BEZ OGRANIČENJA Prethodno smo razmatrali proračune za dužinu koraka. Njihovim kombinovanjem sa metodama za odredivanje smera opadanja dobijamo metode za rešvanje probelma optimizacije bez ograničenja. Može se koristiti bilo koja od prethodnih metoda za dužinu koraka. Medutim, zbog jednosavnosti, u sledećim primerima ćemo koristiti analitički line search metod. 4.3.1 Metod najstrmijeg pada Vektor gradijenta funkcije ukazuje na smer u kojem vrednost funkcije najbrže raste. Prema tome, prirodan izbor za smer opadanja bi bio suprotan smer, tj. negativni gradijent. Pošto se vrednost funkcije na lokalnom nivou najbrže menja u ovom smeru, on se naziva smer najstrmijeg pada. Dakle, kod ovog metoda koristimo sledeći smer: d k = f(x k ) Metod generiše sukcesivne smerove koji su uzajamno normalni. Prema tome, kada je trenutna tačka daleko od optimiuma, u opštem slučaju se pravi dobar pomak ka tački optimuma. Medutim, blizu optimuma, konvergencija je veoma spora. Metod najstrmijeg pada implementiran je u sledećoj funkciji iz paketa OptimizationToolbox Unconstrained : SteepestDescent[f, vars, x0, opts] - Računa minimum funkcije f(vars) pomoću metoda najstrmijeg pada startujući od x0. Dužina koraka se računa preko analitičkog line search-a. Funkcija vraća par {x, hist}. x je tačka optimuma ili tačka dostignuta nakon maksimalnog borja iteracija. hist sadrži vrednosti iz različitih iteracija. Opcije koje se mogu koristiti sa funkcijom SteepestDescent su: opcija default PrintLevel 1 odreduje da li se štampaju sve itercije ili samo kranji rezultat MaxIterations 50 maksimalan broj iteracija ConvergenceTolerance 0.01 tolerancija konvergencije StepLengthVar α parametar dužine koraka Evo kako izgleda implementacija ovog metoda u Mathematica: SteepestDescent[f, vars, x0, opts Rule] := Module[{iter = 0, x = N[x0], step = 0, d, dnorm, eps, maxiter, history={}, fx, dfx, prlevel, prsetup, prresults, gradf}, {prlevel, maxiter, eps} = {PrintLevel, MaxIterations,ConvergenceTolerance} /. Flatten[{opts,Options[SteepestDescent]} gradf=grad[f,vars Switch[prLevel, 0, {prsetup, prresults}={false, False}, 1, {prsetup, prresults}={true, False},, {prsetup, prresults}={true, True} If[prSetup, PrintLabelledList[{f,gradf},{"f"," f"},1] 59
4 OPTIMIZACIJA BEZ OGRANIČENJA ] AppendTo[history, {"x", "d"," f(x) ","f(x)"} fx =f/.torules[vars == x0 dfx = gradf/.torules[vars == x0 d = -dfx; dnorm = Norm[d While [dnorm > eps && ++iter <= maxiter, If[prResults,PrintUnconstrainedresults[iter,x,{{dfx,d, dnorm, fx}, {" f(x)",d"," f(x) ","f(x)"}},2] step = AnalyticalLineSearch[gradf, x, d, vars,prresults,opts AppendTo[history,{x, d, dnorm, fx} x = x + step d; fx =f/.torules[vars == x dfx = gradf/.torules[vars == x d = -dfx; dnorm = Norm[d AppendTo[history,{x, d, dnorm, fx} If[prSetup, If [dnorm >= eps, Print["New Point (Non-Optimum): ", x, "after ",iter-1, "iterations"], Print["Optimum: ",x, "after ", iter,"iterations"] ] {{fx,thread[vars->x]},history} PlotSearchPath[f, {x1, x1min, x1max}, {x2, x2min, x2max}, hist, opts] prikazuje kompletnu putanju pretrage na grafiku odredenog opsega funkcije f. hist se zadaje u obliku {pt1, pt2,... }, gde je pt1 = {x1, x2} prva tačka, itd. Funkcija prihvata sve relevantne opcije standardnih funkcija ContourPlot i Graphics Primer 4.8. Pomoću metoda najstrmijeg pada, startujući od datih početnih vrednosti, odrediti minimum sledeće funkcije: f = x 4 + y 4 + 2x 2 y 2-4x + 3; vars = {x,y}; x0 = {1.25,1.25}; Za prve dve iteracije prikazana su sva izračunavanja. << OptimizationToolbox Unconstrained SteepestDescent[f, vars, x0, PrintLevel 2, Maxlterations 2 f ( 3-4x + x 4 + 2x 2 y 2 + y 4 4 + 4x f 3 + 4xy 2 ) 4x 2 y + 4y 3 ***** Iteration 1 ***** Current point {1.25, 1.25} Direction ( finding) phase: ( ) 11.625 11.625 f(x) d 15.625 15.625 f(x) 19.4751 f(x) 7.76563 Step length ( calculation ) phase: 1.25 11.625α xk1 1.25 15.625α ( 17636.6( 0.0353314 + α)(0.018656 0.251812α + α f(xk1) 2 ) ) 23705.0( 0.08 + α)(0.00823927 0.179616α + α 2 ) dφ/dα= f(xk1).d=0 575417(-0.0479137+α)(0.0137569-0.22151α + α 2 ) == 0 α 0.0479137 ***** Iteration 2 ***** Current point {0.693003, 0.501349} Direction ( finding phase: ) ( ) 1.97198 1.97198 f(x) d 1.46716 1.46716 f(x) 2.4579 f(x) 0.763231 60
4 OPTIMIZACIJA BEZ OGRANIČENJA Step length ( calculation phase: ) 0.693003 + 1.97198α xk1 0.501349 1.46716α ( 47.6531( 0.141029 + α)(0.293429 + 0.701362α + α f(xk1) 2 ) ) 35.4539( 0.341715 + α)(0.121101 + 0.208908α + α 2 ) dφ/dα= f(xk1).d=0 145.987(-0.179066 + α)(0.2311 + 0.492428α +α 2 ) == 0 α 0.179066 New Point (Non-Optimum):{1.04612,0.238631} after 2 iterations Štampanje proračuna po iteracijama je zaustavljeno, a ovaj postupak se nastavlja sve do konvergencije. Rezultati po iteracijama su sačuvani u promenljivoj hist. {opt, hist} = SteepestDescent[f, vars, x0 Optimum:{0.999362,0.00143171} after 9 iterations TableForm[hist] x d f(x) f(x) 1.25-11.625 19.4751 7.76563 1.25-15.625 0.693003 1.97198 2.4579 0.763231 0.501349-1.46716 1.046112-0.81762 1.36974 0.141038 0.238631-1.09895 0.949342 0.532874 0.664179 0.036264 0.108555-0.396458 1.01403-0.185565 0.310875 0.00871469 0.0604258-0.249416 0.988317 0.135914 0.169405 0.00211974 0.0258635-0.10112 1.00355-0.0435646 0.0729841 0.000501114 0.0145326-0.058556 0.997266 0.0325665 0.0405914 0.000118541 0.0060905-0.0242299 1.00085-0.0102337 0.0171208 0.0000278277 0.00342556-0.0137257 0.999362 0.00764796 0.0095501 6.53879 l0 6 0.00143171-0.00571954 Sada ćemo izdvojiti prvu kolonu iz ove tabele da bismo dobili listu svih tačaka koje je su testirane u algoritamu. xhist = Drop[Transpose[hist][[1]],1] {{1.25,1.25}, {0.693003,0.501344}, {1.04612,0.238631}, {0.949342,0.108555}, {1.01403, 0.0604258}, {0.988317, 0.0258635}, {1.00355, 0.01453265}, {0.997266, 0.0060905}, {1.00085,0.00342556}, {0.999362,0.00143171}} Pomoću funkcije PlotSearchPath smo dobili putanju pretrage prikazanu na grafiku funkcije f (Slika 4.4). Pretraga se vrši u smeru negativnog gradijenta, koji je uvek normalan na tangentu konture u datoj tački. Nova tačka se bira tako da smer bude tangenta konture funkcije f u toj tački. U sledećoj iteraciji smer negativnog gradijenta postaje normalan na vekotr prethodnog smera. Kao rezultat ovoga, konvergencija blizu optimuma postaje veoma spora. Zatim izdvajamo kolonu koja sadrži normu gradijenta funkcije da bismo dobili grafik na kojem se vidi kako f opada kroz iteracije. Grafik zapravo pokazuje brzinu konvergencije metoda. PlotSearchPath[f, {x,-0.1,1.3}, {y,-0.1,1.3}, xhist, PlotPoints 30, Epilog {RGBColor[1, 0, 0],Disk[{l, 0}, 0.015], Text["Minimum",{1.01,0.05},{-1,0}]} 61
4 OPTIMIZACIJA BEZ OGRANIČENJA Slika 4.4: Putanja pretrage metoda najstrmijeg pada normgradhist = Drop[Transpose[hist][[3]], 1] {19.4751, 2.4579, 1.36974, 0.664179, 0.310875, 0.169405, 0.0729841, 0.0405914, 0.0171208, 0.0095501} ListPlot[normGradhist, PlotJoined True, AxesLabel {"Iterations"," f "} Slika 4.5: Norma gradijenta f po iteracijama Primer 4.9. Odrediti minimum sledeće funkcije pomoću metoda najstrmijeg pada i datih početnih tačaka: f = (x + y) 2 + (2(x 2 +y 2-1) - 1/3) 2 ; vars = {x, y};x0 = {-1.25,0.25}; SteepestDescent[f, vars, x0, PrintLevel 2, MaxIterations 2 f (x + y) 2 + ( 2(x 2 +y 2-1) - 1/3 ) 2 ( 50x f 3 + 16x3 + 2y + 16xy 2 ) 2x 50y 3 + 16x2 y + 16y 3 ***** Iteration 1 ***** Current point {-1.25, 0.25} Direction finding phase: 62
4 OPTIMIZACIJA BEZ OGRANIČENJA ( ) 11.1667 f(x) 0.166667 f(x) 11.1679 ( 1.25 + 11.1667α xk1 0.25 + 0.166667α ( 11.1667 d 0.166667 f(x) 1.84028 Step length calculation) phase: ( ) 22283.7( 0.198059 + α)( 0.115053 + α)( 0.0219909 α) f(xk1) 332.593( 0.182098 + α)(0.00188867 + α)(1.45705 + α) dφ/dα= f(xk1).d=0 248890(-0.197979+α)(-0.114697+α)(-0.0220681+α) == 0 α 0.0220681 ***** Iteration 2 ***** Current point {-1.00357,0.253678} Direction ( finding phase: ) ( ) 0.0281495 0.0281495 f(x) d 1.88601 1.88601 f(x) 1.88622 f(x) 0.598561 Step length ( calculation phase: ) 1.00357 + 0.0281495α xk1 0.253678 1.88601α ( ) 1.60242( 0.00222672 + α)(0.220873 + α)(35.7178 + α) f(xk1) 107.362( 0.140625 + α)(0.124919 + 0.55996α + α 2 ) dφ/dα= f(xk1).d=0 202.532(-0.138857 + α)(0.126511 + 0.566102α +α 2 ) == 0 α 0.138857 New Point (Non-Optimum):{-1.00748, 0.515563} after 2 iterations {opt, hist} = SteepestDescent[f, vars, x0 Optimum:{-0.764703, 0.762588} after 27 iterations ) Na sledećoj slici je prikazana putanja metoda od početne tačake do minimuma. Vidimo da funkcija ima dva lokalna minimuma. Kao kod većine numeričkih metoda, algoritam kao rezultat vraća onaj minimum koji je najbliži početnoj tački. Slika 4.6: Putanja pretrage metoda najstrmijeg pada Sledeći grafik norme gradijenta ciljne funkcije prikazuje brzinu konvergencije metoda. U prvih nekoliko iteracija norma se značajno smanjuje. Medutim, potrebno je više od 20 iteracija da bi se njena vrednost smanjila od 2 do tolerancije konvergencije koja iznosi 10 3. normgradhist = Drop[Transpose[hist][[3]], 1 ListPlot[normGradhist, 63
4 OPTIMIZACIJA BEZ OGRANIČENJA PlotJoined True, AxesLabel {"Iteracije"," f "} Slika 4.7: Grafik norme gradijenta f Primer 4.10. Čovek se nalazi na obali reke koja je široka 3km. On kreće svojim čamcem iz tačke A i želi da stigne što je pre moguće do tačke B, koja se nalazi 8km nizvodno na drugoj obali reke. On tamo može stići na tri načina: 1. Čamcem do tačke C a zatim trčanjem do tačke B 2. Čamcem direktno do B 3. Čamcem do neke tačke D koja se nalazi izmedu C i B a zatim trčanjem do B Ukoliko znamo da se on čamcem kreće brzinom 6km/h, a da trči brzinom 8km/h, dokle bi on trebalo da ide čamcem da bi najbrže stigao do tačke B? Slika 4.8: Skica reke Ako sa x označimo rastojanje izmedu C i D, onda je rastojanje koje bi on trebalo da istrči jednako DB = 8 x, a iz Pitagorine teoreme dobijamo udaljenost koju on prelazi čamcem AD = x 2 + 9. Da bismo dobili vreme, koristimo jednačinu vreme = rastojanje brzina 64
4 OPTIMIZACIJA BEZ OGRANIČENJA Što znači da je vreme koje on potroši na veslanje jednako x 2 + 9/6, a na trčanje (8 x)/8, pa je ukupno vreme T = x2 + 9 + 6 (8 x) 8 Dakle, naš zadatak je da minimiziramo ovu funkciju. SteepestDescent[Sqrt[xˆ2 + 9]/6 + (8 - x)/8, {x}, {0} f (8 x) 9+x + 2 8 6 f ( 1 8 + x 6 9+x 2 Optimum: 3.40168 after 1 iterations Prema tome, čovek bi trebalo da ide čamacem 3.4km nizvodno od početne tačke na drugoj strani reke, a da zatim nastavi da trči do tačke B. 4.3.2 Konjugovani gradijent Metod konjugovanog gradijenta pokušava da poboljša metod najstrmijeg pada tako što dodaje deo prethonog smera na trenutni smer negativnog gradijenta na sledeći način: d k = f(x k ) + βd k 1 Skalar β je koeficijent kojim se množi prethodni smer. Kao što smo ranije pomenuli, kada je trenutna tačka daleko od tačke optimuma, pomeranje u smeru negativnog gradijenta daje dobre rezultate. Medutim, blizu optimuma, ovaj smer se mora izmeniti. Prema tome, β se mora definisati tako da ima male vrednosti u tačkama koje su daleko od minimuma, a relativno velike vrednosti u tačkama koje su blizu minimuma. Sledeće dve formule za β se najčešće koriste u praksi: Flečer-Rivsova formula: β = [ f(xk )] T f(x k ) [ f(x k 1 )] T f(x k 1 ) Polak-Rajberova formula: β = [ f(xk 1 ) f(x k )] T f(x k ) [ f(x k 1 )] T f(x k 1 ) Imenilac je u obe formule isti i jednak je kvadratu norme gradijenta funkcije f u prethodnoj tački. U Flečer-Rivsovoj formuli, brojilac je kvadrat norme gradijenta u trenutnoj tački, dok je u Polak-Rajberovoj formuli on malo modifikovan. Polak- Rajberova formula obično daje bolje rezultate od Flečer-Rivsove formule. Jasno je da, na početku, nemamo nikakav prethodni smer i zbog toga se smer najstrmijeg pada koristi u prvoj iteraciji. Sledeći numerički primeri će nam pokazati poboljšanja u odnosu na prethodni metod. Funkcija koja obavlja metod konjugovanog gradijenta je: ConjugateGradient[f, vars, x0, opts] - Računa minimum funkcije f(vars) pomoću metoda konjugovanog gradijenta startujući od x0. Može se koristiti Polak-Rajberov(default) ili Flečer-Rivsov metod. Takode za računaje dužine koraka se može koristiti Exact analitički ili Approximate line search. Funkcija kao rezultat vraća par {x, hist}. x je tačka optimuma ili tačka dostignuta nakon maksimalnog borja iteracija. hist sadrži rezultate iz svih iteracija. 65
4 OPTIMIZACIJA BEZ OGRANIČENJA Opcije koje se mogu koristiti kod ove funkcije su: opcija default PrintLevel 1 odreduje da li se štampaju sve itercije ili samo kranji rezultat MaxIterations 50 maksimalan broj iteracija ConvergenceTolerance 0.01 tolerancija konvergencije StepLengthVar α parametar dužine koraka Method PolakRibiere formula koja se koristi za računanje β, može biti i FletcherReeves LineSearch Exact metod za računje dužine koraka, može biti i Approximate Implementacija ovog metoda u Mathematica je sledeća: ConjugateGradient[f, vars, x0, opts?optionq] := Module[{iter = 0, d, x = x0, step = 0, dnorm, cnorm, beta, prevcnorm, prevd, c, method, line, prevc, eps, maxiter, history={}, fx, prlevel, prsetup, prresults, gradient, gradfex="numerical", gradf,stepvar,ɛ,η}, {prlevel, gradient, maxiter, eps, stepvar, method, line,{ɛ,η}} = {PrintLevel, Gradient, MaxIterations,ConvergenceTolerance, StepLengthVar, Method, LineSearch, ArmijoParameters}/.{opts}/.Options[ConjugateGradient Switch[ToString[gradient], "Automatic", gradfex=grad[f,varsgradf[pt ]:= gradfex/.thread[vars->pt], "Numerical", If[line===Analytical,line = ArmijoLineSearch gradf[pt ]:=Grad[f,vars,pt],, gradfex=gradient;gradf[pt ]:=gradfex/.thread[vars->pt] Switch[prLevel, 0, {prsetup, prresults}={false, False}, 1, {prsetup, prresults}={true, False},, {prsetup, prresults}={true, True} If[prSetup, PrintLabelledList[{f,gradfEx},{"f"," f"},1 Print["Using the "<>ToString[method]<> "method with "<> ToString[line]<>"line search"] AppendTo[history, {"x", "d"," f(x) ","f(x)","β"} fx =f/.torules[vars == x0 c = gradf[x0 prevd = Table[0,{Length[vars]} prevc = c; prevcnorm = dnorm = cnorm = Norm[c While [cnorm > eps && ++iter <= maxiter, fx =f/.torules[vars == x c = gradf[x cnorm = Norm[c If[method===FletcherReeves, beta = c.c/(prevc.prevc), beta = (c-prevc).c/(prevc.prevc) d = -c + beta prevd; dnorm = Norm[d If[prResults,PrintUnconstrainedresults[iter,x, {{c, d, cnorm, beta,fx}, {" f(x)","d", " f(x) ","β","f(x)"}},2] Switch[line, Analytical, step = AnalyticalLineSearch[gradfEx, x, d, vars, prresults,opts], GoldenSectionSearch, step = GoldenSectionSearch[f/.ToRules[vars==x+stepVar d], 66
4 OPTIMIZACIJA BEZ OGRANIČENJA stepvar,{0,.1},0.001,prresults], QuadraticSearch, step = QuadraticSearch[f/.ToRules[vars==x+stepVar d], stepvar,1,20,0.001,prresults],, step = ArmijoLineSearch[f/.ToRules[vars==x+stepVar d], stepvar,ɛ,η,prresults] AppendTo[history,{x, d, cnorm,fx, beta} x = x + step d; prevcnorm = cnorm; prevc = c; prevd = d; fx =f/.torules[vars == x c = gradf[x AppendTo[history,{x, "--", Norm[c],fx,"--"} If[prSetup, If [cnorm >= eps, Print["New Point (NonOptimum): ", x, "after ",iter-1, "iterations"], Print["Optimum: ",x, "after ", iter,"iterations"] ] {{fx,thread[vars->x]},history} Primer 4.11. Pomoću metoda konjugovanog gradijenta, startujući od datih početnih vrednosti, odrediti minimum sledeće funkcije: f = x 4 + y 4 + 2x 2 y 2-4x + 3; vars = {x,y}; x0 = {1.25,1.25}; Za prve dve iteracije prikazana su sva izračunavanja. << OptimizationToolbox Unconstrained ConjugateGradient[f, vars, x0, PrintLevel 2, Maxlterations 2, Method FletcherReeves f ( 3-4x + x 4 + 2x 2 y 2 + y 4 4 + 4x f 3 + 4xy 2 ) 4x 2 y + 4y 3 Using FletcherReeves method with Exact line search ***** Iteration 1 ***** Current point {1.25, 1.25} Direction ( finding) phase: ( ) 11.625 11.625 f(x) d 15.625 15.625 f(x) 19.4751 β 0 f(x) 7.76563 Step length ( calculation ) phase: 1.25 11.625α xk1 1.25 15.625α ( 17636.6( 0.0353314 + α)(0.018656 0.251812α + α f(xk1) 2 ) ) 23705.1( 0.08 + α)(0.00823927 0.179616α + α 2 ) dφ/dα= f(xk1).d=0 575417(-0.0479137+α)(0.0137569-0.22151α + α 2 ) == 0 α 0.0479137 ***** Iteration 2 ***** Current point {0.693003, 0.501349} Direction ( finding phase: ) ( ) 1.97198 1.78682 f(x) d 1.46716 1.71603 f(x) 2.4579 β 0.0159282 f(x) 0.763231 Step length ( calculation phase: ) 0.693003 + 1.7868α xk1 0.501349 1.71603α ( 43.8663( 0.162591 + α)(0.276488 + 0.673591α + α f(xk1) 2 ) ) 42.1285( 0.292156 + α)(0.119203 + 0.123158α + α 2 ) dφ/dα= f(xk1).d=0 150.675(-0.197956 + α)(0.202543 + 0.382693α +α 2 ) == 0 α 0.197956 67
4 OPTIMIZACIJA BEZ OGRANIČENJA New Point (Non-Optimum):{1.04672,0.161649} after 2 iterations Štampanje proračuna po iteracijama je zaustavljeno(default opcija), a postupak se nastavlja sve do konvergencije. Rezultati po iteracijama su sačuvani u promenljivoj hist. {opt, hist} = ConjugateGradient[f, vars, x0, Method FletcherReeves Using FletcherReeves method with Exact line search Optimum:{1.00004,0.000174657} after 6 iterations TableForm[hist] x d f(x) f(x) β 1.25-11.625 19.4751 7.76563 1 1.25-15.625 0.693003 1.78682 2.4579 0.763231 0.0 0.501349-1.71603 1.04672-0.397468 1.00564 0.0714469 0.1 0.161649-1.01258 0.988576 0.126566 0.144823 0.00113522 0.0 0.0135342-0.0739167 1.00119-0.00949338 0.028638 0.0000847527 0.0 0.00616745-0.0276199 0.999313 0.0073571 0.00870763 3.8322 l0 6 0.0 0.000708579-0.00538393 1.00004 - - 0.000866728 7.1970 l0 8 - - 0.000174657 Sada ćemo izdvojiti prvu kolonu iz ove tabele da bismo dobili listu svih tačaka koje je su testirane u algoritamu. xhist = Drop[Transpose[hist][[1]],1] {{1.25,1.25}, {0.693003,0.501349}, {1.04672,0.161649}, {0.988576, 0.0135342}, {1.00119, 0.00616745}, {0.999313,0.000708579}, {1.00004, 0.000174657}} Pomoću funkcije PlotSearchPath, dobijamo putanju pretrage prikazanu na grafiku funkcije f (Slika 4.9). Primećujemo da susedni smerovi nisu medusobno normalni. Putanja pretrage manje varira blizu minimuma u odnosu na metod najstrmijeg pada. Brzina konvergencije je značajno poboljšana. PlotSearchPath[f, {x,-0.1,1.3}, {y,-0.1,1.3}, xhist, PlotPoints 30, Epilog {RGBColor[1, 0, 0],Disk[{l, 0}, 0.015], Text["Minimum",{1.03,0.05},{-1,0}]} 68
4 OPTIMIZACIJA BEZ OGRANIČENJA Slika 4.9: Putanja pretrage metoda konjugovanog gradijenta Zatim izdvajamo kolonu koja sadrži vrednosti norme gradijenta funkcije da bismo dobili grafik na kojem se vidi kako f opada kroz iteracije. Grafik zapravo pokazuje brzinu konvergencije metoda. normgradhist = Drop[Transpose[hist][[3]], 1] {19.4751, 2.4579, 1.00564, 0.144823, 0.028638, 0.00870763, 0.000866728} ListPlot[normGradhist, PlotJoined True, AxesLabel {"Iteracije"," f "} Slika 4.10: Grafik norme gradijenta f Aproksimirani line search daje iste rezultate ali obavlja nekoliko iteracija više. ConjugateGradient[f, vars, x0, LineSearch Approximate Using PolakRibiere method with Approximate line search Optimum: {1.00001, 0.000350558} after 10 iterations 69
4 OPTIMIZACIJA BEZ OGRANIČENJA Polak-Rajberov metod izvršava jednu iteraciju manje u odnosu na Flečer-Rivsov metod. ConjugateGradient[f, vars, x0 Using PolakRibiere method with Exact line search Optimum: {1., 2.64104 l0 8 } after 5 iterations Primer 4.12. Odrediti minimum sledeće funkcije pomoću metoda konjugovanog gradijenta i datih početnih tačaka: f = (x + y) 2 + (2(x 2 +y 2-1) - 1/3) 2 ; vars = {x, y};x0 = {-1.25,0.25}; ConjugateGradient[f, vars, x0, PrintLevel 2, MaxIterations 2 f (x + y) 2 + ( 2(x 2 +y 2-1) - 1/3 ) 2 ( 50x f 3 + 16x3 + 2y + 16xy 2 ) 2x 50y 3 + 16x2 y + 16y 3 Using PolakRibiere method with Exact line search ***** Iteration 1 ***** Current point {-1.25, 0.25} Direction ( finding phase: ) ( ) 11.1667 11.1667 f(x) d 0.166667 0.166667 f(x) 11.1679 β 0. f(x) 1.84028 Step length ( calculation) phase: 1.25 + 11.1667α xk1 0.25 + 0.166667α ( ) 22283.7( 0.198059 + α)( 0.115053 + α)( 0.0219909 α) f(xk1) 332.593( 0.182098 + α)(0.00188867 + α)(1.45705 + α) dφ/dα= f(xk1).d=0 248890(-0.197979+α)(-0.114697+α)(-0.0220681+α) == 0 α 0.0220681 ***** Iteration 2 ***** Current point {-1.00357,0.253678} Direction ( finding phase: ) ( ) 0.0281495 0.290392 f(x) d 1.88601 1.89077 f(x) 1.88622 β 0.0285261 f(x) 0.598561 Step length ( calculation phase: ) 1.00357 + 0.290392α xk1 0.253678 + 1.89077α ( ) 17.0023( 3.38977 + α)( 0.0103728 + α)(0.0470866 + α) f(xk1) 110.703( 0.173294 + α)(0.098311 + 0.41033α + α 2 ) dφ/dα= f(xk1).d=0 214.251(-0.188279 + α)(0.0881985 + 0.342583α +α 2 ) == 0 α 0.188279 New Point (Non-Optimum):{-0.948898,0.60967} after 2 iterations {opt, hist} = ConjugateGradient[f, vars, x0 Using PolakRibiere method with Exact line search Optimum:{-0.76376,0.763765} after 6 iterations Na sledećoj slici je prikazana putanja pretrage i na njoj se jasno može videti poboljšanje konvergencije kod ovog metoda u odnosu na metod najstrmijeg pada. xhist = Drop[Transpose[hist][[1]], 1 PlotSearchPath[f, {x,-1.25,0}, {y,0,1.25}, xhist, PlotPoints 50, Epilog {RGBColor[1, 0, 0],Disk[{-.76,.76}, 0.01], Text["Minimum",{-.74,.76},{-1,0}]} 70
4 OPTIMIZACIJA BEZ OGRANIČENJA Slika 4.11: Putanja pretrage metoda konjugovanog gradijenta normgradhist = Drop[Transpose[hist][[3]], 1] {11.1679,1.88622,2.30597,0.99292, 0.0910377,0.00266003,0.0000196313} ListPlot[normGradhist, PlotJoined True, AxesLabel {"Iteracije"," f "} Slika 4.12: Grafik norme gradijenta f 4.3.3 Modifikovani Njutnov metod U svojoj osnovnoj formi, Njutnov metod se izvodi iz kvadratne aproksimacije funkcije pomoću Tejlorovog razvoja: f(x k+1 ) f(x k ) + f(x k ) T d k + 1 2 (dk ) T H(x k )d k gde je H(x k ) matrica Hesiana u tački x k. Koristeći potreban uslov za minimum ove aproksimirane funkcije, dobijamo f(x k ) + H(x k )d k = 0 71
4 OPTIMIZACIJA BEZ OGRANIČENJA Smer se sada može dobiti rešavanjem ovog sistema jednačina na sledeći način: d k = [H(x k )] 1 f(x k ) Trebalo bi napomenuti da se prilikom izračunavanja ne računa inverz Hesiana. Efikasnije je izračunati smer rešavanjem linearnog sistema jednačina. Prethodna forma se koristi samo zbog simbolike. U originalnoj formi, ovaj metod je korišćen bez računanja dužine koraka. Pa je zbog toga iterativna šema izgledala ovako: x k+1 = x k [H(x k )] 1 f(x k ) Medutim, metod u ovoj formi ima tendenciju da divergira kada startuje od tačke koja je daleko od minimuma. Modifikovani Njutnov metod koristi smer Njutnovog metoda a onda računa odgovarajuću dužinu koraka u tom smeru. Zbog ovoga je metod veoma stabilan. Dakle, iteracije su sledeće: x k+1 = x k + α k d k k = 0, 1,... gde je d k = [H(x k )] 1 f(x k ) a α k se dobija minimiziranjem f(x k + α k d k ). Metod ima najveću brzinu konvergencije od svih metoda koji se ovde pominju. Medutim, svaka iteracija zahteva više izračunavanja, zato što je potrebno izračunati matricu Hesiana, a zatim rešiti sistem jednačina za dobijanje smera. Ova procedura je implementirana u sledećoj funkciji: ModifiedNewton[f, vars, x0, opts] - Računa minimum funkcije f(vars) pomoću modifikovanog Njutnovog metoda startujući od x0. Funkcija kao rezultat vraća par {x, hist}. x je tačka optimuma ili tačka dostignuta nakon maksimalnog borja iteracija. hist sadrži rezultate iz svih iteracija. Opcije koje se mogu koristiti sa ovm funkcijom su: opcija default PrintLevel 1 odreduje da li se štampaju sve itercije ili samo kranji rezultat MaxIterations 50 maksimalan broj iteracija ConvergenceTolerance 0.01 tolerancija konvergencije StepLengthVar α parametar dužine koraka Sledi implementacija modifikovanog Njutnovog metoda u Mathematica: ModifiedNewton[f, vars, x0, opts?optionq] := Module[{iter = 0, d, x = x0, step=0, cnorm=10ˆ10, H,fx, c, hessian=hessian[f,vars], gradf = Grad[f,vars],stepVar, eps, maxiter, history={}, prlevel, prsetup, prresults}, {prlevel, maxiter, eps, stepvar} = {PrintLevel, MaxIterations,ConvergenceTolerance, StepLengthVar} /. Flatten[{opts, Options[ModifiedNewton]} Switch[prLevel, 0, {prsetup, prresults}={false, False}, 1, {prsetup, prresults}={true, False},, {prsetup, prresults}={true, True} 72
4 OPTIMIZACIJA BEZ OGRANIČENJA If[prSetup, PrintLabelledList[{f,gradf,hessian},{"f"," f", " ˆ2f"},1] AppendTo[history, {"x", "d"," f(x) ","f(x)"} While [cnorm > eps && ++iter <= maxiter, {fx,c,h} = {f, gradf, hessian} /. ToRules[vars == x cnorm = Norm[c d = LinearSolve[H,-c If[prResults,PrintUnconstrainedresults[iter,x, {{H, c, cnorm, fx, {d}}, {" ˆ2f"," f(x)", " f(x) ","f(x)","d"}},2] step = AnalyticalLineSearch[gradf, x, d, vars,prresults,opts AppendTo[history,{x, d, cnorm, fx} x = x + step d; {fx,c} = {f,gradf} /. ToRules[vars == x cnorm = Norm[c AppendTo[history,{x, "--", cnorm, fx} If[prSetup, If [cnorm >= eps, Print["New Point (NonOptimum): ", x, "after ",iter-1, "iterations"], Print["Optimum: ",x, "after ", iter,"iterations"] ] {{fx,thread[vars->x]},history} Primer 4.13. Pomoću modifikovanog Njutnovog metoda, startujući od datih početnih vrednosti, odrediti minimum sledeće funkcije: f = x 4 + y 4 + 2x 2 y 2-4x + 3; vars = {x,y}; x0 = {1.25,1.25}; Samo za prvu iteraciju su prikazana sva izračunavanja. << OptimizationToolbox Unconstrained ModifiedNewton[f, vars, x0, PrintLevel 2, Maxlterations 1 f ( 3-4x + x 4 + 2x 2 y 2 + y 4 4 + 4x f 3 + 4xy 2 ) 4x 2 y + 4y ( 3 2 12x f 2 + 4y 2 ) 8xy 8xy 4x 2 + 12y 2 ***** Iteration 1 ***** Current point {1.25, 1.25} Direction ( finding ) phase: ( ) 2 25. 12.5 11.625 f f(x) 12.5 25. 15.625 f(x) 19.4751 f(x) 7.76563 d (-0.203333-0.523333) Step length ( calculation ) phase: 1.25 0.203333α xk1 1.25 0.523333α ( 0.256381( 1.547 + α)(29.3101 10.3637α + α f(xk1) 2 ) ) 0.659865( 2.3885 + α)(9.91364 5.76313α + α 2 ) dφ/dα= f(xk1).d=0 0.39746(-2.01494+α)(13.1619-6.62975α + α 2 ) == 0 α 2.01494 New Point (Non-Optimum):{0.840295, 0.195514} after 1 iterations Ovaj postupak se nastavlja sve do konvergencije. Rezultati po iteracijama su sačuvani u promenljivoj hist. {opt, hist} = ModifiedNewton[f, vars, x0 Optimum:{1.,2.60644 10 7 } after 3 iterations 73
4 OPTIMIZACIJA BEZ OGRANIČENJA TableForm[hist] x d f(x) f(x) 1.25-0.203333 19.4751 7.76563 1.25-0.523333 0.840295 0.213735 1.60731 0.192834 0.195514-0.262867 0.999754 0.000246209 0.00380209 1.08252 l0 6-0.000599898 0.000600194 1. - - 2.25383 l0 6 3.02404 l0 13 2.60644 l0 7 Sada ćemo izdvojiti prvu kolonu iz ove tabele da bismo dobili listu svih tačaka kroz koje je pretraga prošla. xhist = Drop[Transpose[hist][[1]],1] {{1.25,1.25}, {0.840295, 0.195514}, {0.999754, -0.000599898}, {l.,2.60644 l0 7 }} PlotSearchPath[f, {x,0,1.3}, {y,0,1.3}, xhist, PlotPoints 30, Epilog {RGBColor[1, 0, 0],Disk[{l, 0}, 0.015], Text["Minimum",{1.01,0.05},{-1,0}]} Slika 4.13: Putanja pretrage modifikovanog Njutnovog metoda Pomoću funkcije PlotSearchPath, dobili smo putanju pretrage prikazanu na grafiku funkcije f. Primećujemo da je putanja pretrage mnogo kraća nego kod prethodnih metoda. Sada ćemo izdvojiti kolonu koja sadrži vrednosti norme gradijenta funkcije da bismo dobili grafik na kojem se vidi kako f opada kroz iteracije. Grafik zapravo pokazuje brzinu konvergencije metoda. normgradhist = Drop[Transpose[hist][[3]], 1] {19.4751, 1.60731, 0.00380209, 2.25383 l0 6 } ListPlot[normGradhist, PlotJoined True, AxesLabel {"Iteracije"," f "} 74
4 OPTIMIZACIJA BEZ OGRANIČENJA Slika 4.14: Grafik norme gradijenta f Primer 4.14. Odrediti minimum sledeće funkcije pomoću modifikovanog Njutnovog metoda i datih početnih tačaka: f = (x + y) 2 + (2(x 2 +y 2-1) - 1/3) 2 ; vars = {x, y};x0 = {-1.25,0.25}; ModifiedNewton[f, vars, x0, PrintLevel 2, MaxIterations 2 f (x + y) 2 + ( -1/3 + 2(x 2 +y 2-1) ) 2 ( 50x f 3 + 16x3 + 2y + 16xy 2 ) 2x 50y 3 + 16x2 y + 16y ( 3 2 50 f 3 + 48x2 + 16y 2 ) 2 + 32xy 2 + 32xy 50 3 + 16x2 + 48y 2 ***** Iteration 1 ***** Current point {-1.25, 0.25} Direction ( finding phase: ) ( ) 2 59.3333 8. 11.1667 f f(x) 8. 11.3333 0.166667 f(x) 11.1679 f(x) 1.84028 d (0.21019 0.163075) Step length ( calculation) phase: 1.25 + 0.21019α xk1 0.25 + 0.163075α ( 0.238013( 1.53958 + α)(30.4732 10.6801α + α f(xk1) 2 ) ) 0.184662( 4.58573 + α)(0.196817 0.153898α + α 2 ) dφ/dα= f(xk1).d=0 0.0801418(-2.00245+α)(14.795-7.40655α+α 2 ) == 0 α 2.00244 ***** Iteration 2 ***** Current point {-0.829106, 0.57655} Direction ( finding phase: ) ( ) 2 21.6479 13.296 1.44283 f f(x) 13.2967 10.2876 1.85969 f(x) 2.35377 f(x) 0.150034 d (0.215323 0.459071) Step length ( calculation phase: ) 0.829106 + 0.215323α xk1 0.57655 + 0.459071α ( ) 0.885788( 3.5121 + α)( 0.535061 + α)(0.866795 + α) f(xk1) 1.88851( 0.467862 + α)(2.10476 + 2.39392α + α 2 ) dφ/dα= f(xk1).d=0 1.05769(-0.443886 + α)(1.15668 + 1.44912α +α 2 ) == 0 α 0.443886 New Point (Non-Optimum):{-0.733527, 0.780325} after 2 iterations {opt, hist} = ModifiedNewton[f, vars, x0 Optimum:{-0.7637625,0.763763} after 4 iterations xhist = Drop[Transpose[hist][[1]], 1 75
4 OPTIMIZACIJA BEZ OGRANIČENJA PlotSearchPath[f, {x,-1.25,0}, {y,0,1.25}, xhist, PlotPoints 50, Epilog {RGBColor[1, 0, 0],Disk[{-.76,.76}, 0.01], Text["Minimum",{-.74,.76},{-1,0}]} Slika 4.15: Putanja pretrage modifikovanog Njutnovog metoda normgradhist = Drop[Transpose[hist][[3]], 1 ListPlot[normGradhist, PlotJoined True, AxesLabel {"Iteracije"," f "} Slika 4.16: Grafik norme gradijenta f 4.3.4 Kvazi-Njutnove metode Modifikovani Njutnov metod najbrže konvergira, ali on zahteva računanje matrice Hesiana u svakoj iteraciji. Klasa metoda, koji su poznati kao Kvazi-Njutnovi metodi, razvijeni su tako da imaju približnu brzinu konvergencije kao Njutnov metod, ali ne zahtevaju eksplicitno računanje matrice Hesiana. Umesto matrice Hesiana, ove metode počinju sa pozitivno definitnom matricom(obično identičnom matricom), koja se označava sa Q. Pomoću informacije o gradijentu u trenutnom i 76
4 OPTIMIZACIJA BEZ OGRANIČENJA prethodnom koraku, matrica Q se računa tako da ona aproksimira inverznu matricu Hesiana. Osnovna iteracija svih kvazi-njutnovih metoda je sledeća: 1. Odrediti smer: d k = Q k f(x k ) 2. Odrediti dužinu koraka i izračunati sledeću tačku x k+1 = x k + α k d k 3. Izračunati matricu Q k+1 Različite kvazi-njutnove metode se razlikuju u načinu na koji se matrica Q računa. DFP(Davidon,Fletcher,Powell) formula DFP formula počinje od identične matrice i ažurira je do približne inverzne matrice Hesiana na sledeći način: gde je Q k+1 = Q k + sk (s k ) T (q k ) T s (Qk q k )(Q k q k ) T k (q k ) T Q k q k q k = f(x k+1 ) f(x k ) s k = x k+1 x k = α k d k Može se dokazati da je Q k pozitivno definitna ako je (q k ) T s k > 0. Ukoliko je dužina koraka tačno izračunata, ovo tvrdenje je uvek tačno. Medutim, aprokcimacionim računanjem dužine koraka, ovo tvrdenje ne važi uvek. Zbog ovoga se matrica Q k u nmeričikm imlementacijama ažurira samo ako je (q k ) T s k > 0. Da bi se izbegli problemi koji nastaju usled zaokruživanja, poželjno je da se matrica Q resetuje na identičnu matricu posle odredenog broja iteracija. Obično je broj iteracija posle posle kojeg se matrica resetuje jednak broju optimizacionih promenljivih. BFGS(Broyden, Fletcher, Goldfarb, Shanon) formula BFGS formula je slična DFP formuli po tome što takode ažurira inverznu matricu Hesiana. Medutim, numerički primeri pokazuju da skoro uvek daje bolje rezultate od DFP formule. BFGS formula je: Q k+1 =Q k + (1 + (qk ) T Q k q k (q k ) T s k ) s k (s k ) T (q k ) T s k 1 [ {s k (q k ) T Q k} ] T + s k (q k ) T Q k (q k ) T s k Pravila za ažuriranje i resetovanje matrice Q su ista kao kod DFP formule. Ove metode su implementirane u sledećoj funkciji iz paketa OptimizationToolbox Unconstrained : 77
4 OPTIMIZACIJA BEZ OGRANIČENJA QuasiNewtonMethod[f, vars, x0, opts] - Računa minimum funkcije f(vars) pomoću kvazi-njutnovog metoda startujući od x0. Moguće je koristiti BFGS (default) ili DFP metod. Dužina koraka se takode može računati pomoću Exact analitičkog ili Approximate line search metoda. Broj iteracija posle kojih se aproksimacija inverznog Hesiana resetuje na identičnu matricu zadaje se preko opcije ResetHessian. Default vrednost ove opcije je Automatic što znači da je broj iteracija posle kojih se matrica resetuje jednak broju promenljivih. Funkcija kao rezultat vraća par {x, hist}. x je tačka optimuma ili tačka dostignuta nakon maksimalnog borja iteracija. hist sadrži rezultate iz svih iteracija. Opcije koje se mogu koristiti sa ovom funkcijom su: opcija default PrintLevel 1 odreduje da li se štampaju sve iteracije ili samo krajnji rezultat MaxIterations 50 maksimalan broj iteracija ConvergenceTolerance 0.01 tolerancija konvergencije StepLengthVar α parametar dužine koraka Method BFGS metod ažuriranja matrice Q LineSearch Exact metod line search-a ResetHessian Automatic broj iteracija posle kojih se resetuje matrica Kôd kvazi-njutnovog metoda u Mathematica je: QuasiNewtonMethod[f, vars, x0, opts?optionq] := Module[{iter = 0, d, x = x0, step=0, cnorm, Q=IdentityMatrix[Length[vars]],fx, method, line,j=1, c, gradient, gradfex="numerical", gradf, stepvar, ɛ, η, prevc, s, q, Qq, qs, Qqs, eps, maxiter, history={}, prlevel, prsetup, prresults}, {prlevel,gradient,maxiter,eps,stepvar,method,line,{ɛ,η},reset}= {PrintLevel, Gradient, MaxIterations,ConvergenceTolerance, StepLengthVar, Method, LineSearch, ArmijoParameters, ResetHessian} /. {opts} /. Options[QuasiNewtonMethod If[reset===Automatic, reset=length[vars] Switch[ToString[gradient], "Automatic", gradfex=grad[f,varsgradf[pt ]:= gradfex/.thread[vars->pt], "Numerical", If[line===Analytical,line = ArmijoLineSearch gradf[pt ]:=Grad[f,vars,pt],, gradfex=gradient;gradf[pt ]:=gradfex/.thread[vars->pt] Switch[prLevel, 0, {prsetup, prresults}={false, False}, 1, {prsetup, prresults}={true, False},, {prsetup, prresults}={true, True} If[prSetup, PrintLabelledList[{f, gradfex},{"f"," f"},1 Print["Using the "<>ToString[method]<> "method with approximate inverse hessian reset after "<> ToString[reset]<>"iterations and "<>ToString[line]<>"line search"] AppendTo[history, {"x", "d"," f(x) ","f(x)","inverse Hessian"} fx =f/.torules[vars == x0 c = gradf[x0 cnorm = Norm[c While [cnorm > eps && ++iter <= maxiter, d = -Q.c; 78
4 OPTIMIZACIJA BEZ OGRANIČENJA If[prResults,PrintUnconstrainedresults[iter,x, {{Q, c, cnorm, fx, {d}}, {"Inverse Hessian"," f(x)", " f(x) ","f(x)","d"}},2] Switch[line, Analytical, step = AnalyticalLineSearch[gradfEx, x, d, vars, prresults,opts], GoldenSectionSearch, step = GoldenSectionSearch[f/.ToRules[vars==x+stepVar d], stepvar,{0,.1},0.001,prresults], QuadraticSearch, step = QuadraticSearch[f/.ToRules[vars==x+stepVar d], stepvar,1,20,0.001,prresults],, step = ArmijoLineSearch[f/.ToRules[vars==x+stepVar d], stepvar,ɛ,η,prresults] AppendTo[history,{x, d, cnorm, fx, Q} s = step d; x = x + s; prevc = c; fx =f/.torules[vars == x c = gradf[x cnorm = Norm[c q = c - prevc; If[j < reset, ++j; qs = q.s; If [qs >0, Qq = Q.q; If[prResults, Print["Updating inverse hessian:" PrintLabelledList[{q, qs, Qq, Outer[Times,s,s]}, {"q","qt.s","q.q","s.st"},2] If[method===DFP, Q = Q + Outer[Times,s,s]/qs - Outer[Times,Qq,Qq]/(q.Qq); If[prResults,PrintLabelledList[{Outer[Times,Qq,Qq], q.qq, Q}, {"Q.q.[Q.q]T","q.Q.q", "Q"},1] ], Qqs = Outer[Times,Qq,s Q = Q + (1+((q.Qq)/qs))Outer[Times,s,s]/qs - (Transpose[Qqs]+Qqs)/qs; If[prResults,PrintLabelledList[{Qqs, Transpose[Qqs]+Qqs, Q}, {"Q.q.sT","[Q.q.sT]T + Q.q.sT", "Q"},1] ] ], Q=IdentityMatrix[Length[vars] j = 1 AppendTo[history,{x, "--", cnorm, fx, "--"} If[prSetup, If [cnorm >= eps, Print["New Point (NonOptimum): ", x, "after ",iter-1, "iterations"], Print["Optimum: ",x, "after ", iter,"iterations"] ] {{fx,thread[vars->x]},history} Primer 4.15. Pomoću kvazi-njutnovog metoda, startujući od datih početnih vrednosti, odrediti minimum sledeće funkcije: f = x 4 + y 4 + 2x 2 y 2-4x + 3; vars = {x,y}; x0 = {1.25,1.25}; Za prve dve iteracije su odštampana sva izračunavanja. 79
4 OPTIMIZACIJA BEZ OGRANIČENJA << OptimizationToolbox Unconstrained QuasiNewtonMethod[f, vars, x0, PrintLevel 2, Maxlterations 2 f ( 3-4x + x 4 + 2x 2 y 2 + y 4 4 + 4x f 3 + 4xy 2 ) 4x 2 y + 4y 3 Using BFGS method with approximate inverse hessian reset after 2 iterations and Exact line search ***** Iteration 1 ***** Current point {1.25, 1.25} Direction finding ( phase: ) ( ) 1 0 11.625 Inverse Hessian f(x) 0 1 15.625 f(x) 19.4751 f(x) 7.76563 d (-11.625-15.625) Step length ( calculation ) phase: 1.25 11.625α xk1 1.25 15.625α ( 17636.6( 0.0353314 + α)(0.018656 0.251812α + α f(xk1) 2 ) ) 23705.0( 0.08 + α)(0.00823927 0.179616α + α 2 ) dφ/dα= f(xk1).d=0 575417(-0.0479137+α)(0.0137569-0.22151α + α 2 ) == 0 α 0.0479137 Updating ( inverse ) hessian: 13.597 q qt.s 18.1728 14.1578 ( ) ( ) 13.597 0.310245 0.416996 Q.q s.st 14.1578 0.416996 0.560479 ( ) 7.57347 10.1794 Q.q.sT 7.88587 10.5993 ( ) 15.1469 18.0653 [Q.q.sT ]T + Q.q.sT 18.0653 21.1986 ( ) 0.545557 0.484603 Q 0.484603 0.518285 ***** Iteration 2 ***** Current point {0.693003, 0.501349} Direction finding ( phase: ) ( ) 0.545557 0.484603 1.97198 Inverse Hessian f(x) 0.484603 0.518285 1.46716 f(x) 2.4579 f(x) 0.763231 d (1.78682-1.71603) Step length ( calculation phase: ) 0.693003 + 1.78682α xk1 0.501349 1.71603α ( 43.8663( 0.162591 + α)(0.276488 + 0.673591α + α f(xk1) 2 ) ) 42.1285( 0.292156 + α)(0.119203 + 0.123158α + α 2 ) dφ/dα= f(xk1).d=0 150.675(-0.197956 + α)(0.202543 + 0.382693α +α 2 ) == 0 α 0.197956 New Point (Non-Optimum):{1.0467,0.161649} after 2 iterations Štampanje proračuna po iteracijama je zaustavljeno(default opcija), a postupak se nastavlja sve do konvergencije. Rezultati po iteracijama su sačuvani u promenljivoj hist. {opt, hist} = QuasiNewtonMethod[f, vars, x0, ResetHessian 10 Using BFGS method with approximate inverse hessian reset after 10 iterations and Exact line search Optimum:{1.00004, 0.000106729} after 4 iterations TableForm[hist] 80
4 OPTIMIZACIJA BEZ OGRANIČENJA x d f(x) f(x) Inverse Hessian 1.25-11.625 19.4751 7.76563 1 0 1.25-15.625 0 1 0.693003 1.78682 2.45789 0.763231 0.545557 0.501349-1.71603-0.484603 1.04672-0.0144283 1.00564 0.0714469 0.108982 0.161649-0.051902-0.0847718 1.00144-0.00231565 0.018013 0.0000154181 0.119708-0.00120258 0.0021541-0.0493572 1.00004 - - 0.000608993 3.06396 l0 8 - - 0.000106729 Sada ćemo izdvojiti prvu kolonu iz ove tabele da bismo dobili listu svih tačaka kroz koje je pretraga prošla. xhist = Drop[Transpose[hist][[1]],1] {{1.25, 1.25}, {0.693003, 0.501349}, {1.04672, 0.161649} {1.00144, -0.00120258}, {1.00004, 0.000106729}} Pomoću funkcije PlotSearchPath, dobijamo putanju pretrage prikazanu na grafiku funkcije f. Putanja nam jasno pokazuje da se metod ponaša slično kao i modifikovani Njutnov metod. PlotSearchPath[f, {x,0,1.3}, {y,0,1.3}, xhist, PlotPoints 30, Epilog {RGBColor[1, 0, 0],Disk[{l, 0}, 0.015], Text["Minimum",{1.01,0.05},{-1,0}]} Slika 4.17: Putanja pretrage kvazi-njutnovog metoda normgradhist = Drop[Transpose[hist][[3]], 1] {19.4751, 2.4579, 1.00564, 0.018013, 0.000608993} ListPlot[normGradhist, PlotJoined True, AxesLabel {"Iteracije"," f "} 81
4 OPTIMIZACIJA BEZ OGRANIČENJA Slika 4.18: Grafik norme gradijenta f Isti rezultat se dobija i preko DFP formule. {opt, hist} = QuasiNewtonMethod[f, vars, x0, Method DFP, ResetHessian 10 Using DFP method with approximate inverse hessian reset after 10 iterations and Exact line search Optimum:{1.00004, 0.000106729} after 4 iterations Primer 4.16. Odrediti minimum sledeće funkcije pomoću kvazi-njutnovog metoda i datih početnih tačaka: f = (x + y) 2 + (2(x 2 +y 2-1) - 1/3) 2 ; vars = {x, y};x0 = {-1.25,0.25}; QuasiNewtonMethod[f, vars, x0, Method DFP, PrintLevel 2, MaxIterations 2, ResetHessian 10 f (x + y) 2 + ( -1/3 + 2(x 2 +y 2-1) ) 2 ( 50x f 3 + 16x3 + 2y + 16xy 2 ) 2x 50y 3 + 16x2 y + 16y 3 Using DFP method with approximate inverse hessian reset after 10 iterations and Exact line search ***** Iteration 1 ***** Current point {-1.25, 0.25} Direction finding ( phase: ) ( ) 1 0 11.1667 Inverse Hessian f(x) 0 1 0.166667 f(x) 11.1679 f(x) 1.84028 d (11.1667 0.166667) Step length ( calculation) phase: 1.25 + 11.1667α xk1 0.25 + 0.166667α ( ) 22283.7( 0.198059 + α)( 0.115053 + α)( 0.0219909 + α) f(xk1) 332.593( 0.182098 + α)(0.00188867 + α)(1.45705 + α) dφ/dα= f(xk1).d=0 248890.(-0.197979+α)(-0.114697 + α)(-0.0220681+α) == 0 α 0.0220681 Updating ( inverse ) hessian: 11.1948 q qt.s 2.75239 1.71935 ( ) ( ) 11.1948 0.0607265 0.000906365 Q.q s.st 1.71935 0.000906365 0.0000135278 ( ) 2.75871 0.0411748 Q.q.sT 0.423694 0.00632379 ( ) 5.51742 0.382519 [Q.q.sT ]T + Q.q.sT 0.382519 0.0126476 ( ) 0.0457651 0.154654 Q 0.154654 1.00483 ***** Iteration 2 ***** Current point {-1.00357, 0.253678} 82
4 OPTIMIZACIJA BEZ OGRANIČENJA Direction finding ( phase: ) ( ) 0.0457651 0.154654 0.0281495 Inverse Hessian f(x) 0.154654 1.00483 1.88601 f(x) 1.88622 f(x) 0.598561 d (0.290392 1.89077) Step length ( calculation phase: ) 1.00357 + 0.290392α xk1 0.253678 + 1.8907α ( ) 17.0023( 3.38977 + α)( 0.0103728 + α)(0.0470866 + α) f(xk1) 110.703( 0.173294 + α)(0.098311 + 0.41033α + α 2 ) dφ/dα= f(xk1).d=0 214.251(-0.188279 + α)(0.0881986 + 0.342583α +α 2 ) == 0 α 0.188279 Updating ( inverse ) hessian: 2.3074 q qt.s 0.669866 2.23607 ( ) ( ) 0.24022 0.00298932 0.0194637 Q.q s.st 1.89002 0.0194637 0.12673 ( ) 0.0131339 0.0855162 Q.q.sT 0.103336 0.672831 ( ) 0.0262679 0.188852 [Q.q.sT ]T + Q.q.sT 0.188852 1.34566 ( ) 0.035476 0.0610589 Q 0.061059 0.222211 New Point (Non-Optimum):{-0.948898, 0.60967} after 2 iterations {opt, hist} = QuasiNewtonMethod[f, vars, x0, ResetHessian 10] Using BFGS method with approximate inverse hessian reset after 10 iterations and Exact line search Optimum:{-0.763746,0.763679} after 5 iterations xhist = Drop[Transpose[hist][[1]], 1 PlotSearchPath[f, {x,-1.25,0}, {y,0,1.25}, xhist, PlotPoints 50, Epilog {RGBColor[1, 0, 0],Disk[{-.76,.76}, 0.01], Text["Minimum",{-.74,.76},{-1,0}]} Slika 4.19: Putanja pretrage kvazi-njutnovog metoda normgradhist = Drop[Transpose[hist][[3]], 1 ListPlot[normGradhist, 83
4 OPTIMIZACIJA BEZ OGRANIČENJA PlotJoined True, AxesLabel {"Iteracije"," f "} Rešenje po DFP formuli je: Slika 4.20: Grafik norme gradijenta f {opt, hist} = QuasiNewtonMethod[f, vars, x0, Method DFP, ResetHessian 10 Using DFP method with approximate inverse hessian reset after 10 iterations and Exact line search Optimum:{-0.763746,0.763679} after 5 iterations Primer 4.17. Kod formulacije problema optimizacije smo naveli primer nalaženja funkcije u obliku z izracunato = c 1 x 2 + c 2 y 2 + c 3 xy koja najbolje opisuje podatke koji su dati u tabeli. Tačka x y z posmatrano 1 0 1 1.26 2 0.25 1 2.19 3 0.5 1 0.76 4 0.75 1 1.26 5 1 2 1.86 6 1.25 2 1.43 7 1.5 2 1.29 8 1.75 2 0.65 9 2 2 1.6 Najbolje vrednosti za koeficijente c 1, c 2 i c 3 se odreduju tako da minimiziraju sumu kvadrata greške izmedu izračunatih i posmatranih vrednosti za z. Dakle, potrebno je: Minimizirati f = 9 i=1 [z posmatrano(x i, y i ) z izracunato (x i, y i )] 2 Pomoću datih numeričkih podataka, ciljna funkcija se može zapisati na sledeći način: xydata = {{0, 1}, {0.25, 1}, {0.5, 1}, {0.75, 1}, {1,2},{1.25,2},{1.5,2},{1.75,2},{2,2}}; zo = {1.26, 2.19,.76, 1.26, 1.86, 1.43, 1.29,.65, 1.6}; 84
4 OPTIMIZACIJA BEZ OGRANIČENJA zc = Map[(c 1 x 2 + c 2 y 2 + c 3 xy)/.{x #[[1]],y #[[2]]}&,xyData f = Expand[Apply[Plus, (zo-zc) 2 ]] 18.7-32.8462c 1 + 34.2656c 2 1-65.58c 2 + 96.75c 1 c 2 + 84c 2 2-43.425c 3 + 79.8750c 1 c 3 + 123.c 2 c 3 + 48.375c 2 3 Primer ćemo rešiti BFGS metodom. Prikazana su sva izračunavanja iz prve iteracije. QuasiNewtonMethod[f, {c 1, c 2, c 3 }, {1, 1, 1}, ResetHessian 10, MaxIterations 1, PrintLevel 1 Using BFGS method with approximate inverse hessian reset after 10 iterations and Exact line search ***** Iteration 1 ***** Current point {1, 1, 1} Direction finding phase: Inverse Hessian 1 0 0 0 1 0 0 0 1 f(x) 212.31 322.17 256.2 f(x) 463.15 f(x) 343.114 d (-212.31-322.17-256.2) Step length calculation phase: xk1 1 212.31α 1 322.17α 1 256.2α 212.31 66183.8α f(xk1) 322.17 106178.α 256.2 81372.5α dφ/dα f(xk1).d=0-214507.+6.91065*10 7 α==0 α 0.00310401 Updating inverse hessian: q 205.435 329.578 qt.s 665.834 252.581 Q.q 205.435 0.434298 0.659025 0.524078 329.578 s.st 0.659025 1.00004 0.795263 252.581 0.524078 0.795263 0.632419 Q.q.sT [Q.q.sT ]T + Q.q.sT Q 135.384 205.439 163.372 217.196 329.585 262.096 166.454 252.586 200.865 270.769 422.635 329.826 422.635 659.169 514.682 329.826 514.682 401.729 0.804239 0.314716 0.240859 0.314716 0.49564 0.3868 0.240859 0.3868 0.703762 New Point (Non-Optimum): {0.340987,-0.0000193931,0.204752} after 1 iterations {sol, hist} = QuasiNewtonMethod[f, {c1,c2,c3}, {1, 1, 1}, ResetHessian 10 Using BFGS method with approximate inverse hessian reset after 10 iterations and Exact line search Optimum:{2.09108,1.75465,-3.50823} after 3 iterations Dakle, funkcija u obliku z izracunato = c 1 x 2 + c 2 y 2 + c 3 xy, koja najbolje opisuje date podatke je: z = 2.09108x 2 + 1.75465y 2 3.50823xy 85
5 Nelinearna optimizacija pod ograničenjima 5.1 Normalizacija Numerički algoritmi za rešavanje nelinearnih probelma optimizacije pod ograničenjima obično bolje funkcionišu ako je problem normalizovan pre početka rešavnja. 5.1.1 Normalizacija ograničenja Ideja normalizacije ograničenja je da se ograni-čenja zapišu tako da sva ograničenja problema imaju slične opsege blizu granice ograničenja. Ukoliko se sva ograničenja mogu normalizovati na ovaj način, onda je lakše numerički odrediti najbolji smer pretrage i dužinu koraka. Bez normalizacije, samo na osnovu numeričkih vrednosti, ne možemo odrediti koliko smo blizu granice ograničenja. Pošto se izbor smera i dužine koraka u većini numeričkih algoritama zasniva na poznavanju granica ograničenja, normalizacija ograničenja je obično veoma korisna. Sledeći primer ilustruje ove ideje: Primer 5.1. Posmatrajmo sledeći problem koji ima dva ograničenja: Minimizirati f ( = 230x 1 + 20x 2 0.1x 4 Pod ograničenjima 1 Sin[x 2 2] 0.001 230x 1 + 20x 3 2 1000 ) Ograničenja zapisujemo u standardnoj formi: g 1 = 0.1x 4 1 + Sin[x 2 2] + 0.001 0 g 2 = 230x 1 + 20x 3 2 1000 0 U proizvoljnoj tački, x 1 = 1 i x 2 = 3.4, ograničenja imaju sledeće vrednosti: g 1 = 0.943896 i g 2 = 16.08 Na osnovu ovih vrednosti, možemo videti da je drugo ograničenje prekoračeno u ovoj tački, ali ne možemo odrediti koliko je to prekoračenje. Slično, vidimo da je prvo ograničenje zadovoljeno ali ne znamo koliko nam još fali da bismo prekršili ovo ograničenje. U stvari, izabrana tačka (1,3.4) je veoma blizu granice ograničenja g 2, a veoma daleko od granice ograničenja g 1, kao što se može videti na Slici 5.1. Medutim, ako posmatramo samo numeričke vrednosti, verovatno bismo stekli pogrešan utisak. Normalizacija deljenjem vrednostima gornjih granica Kod većine praktičnih problema, ograničenja su predstavljena kao funkcije od optimizacionih promenljivih čija je vrednost manja ili jednaka od odredene vrednosti.
5 NELINEARNA OPTIMIZACIJA POD OGRANIČENJIMA Slika 5.1: Grafik na kome je prikazana pozicija izabrane tačke u odnosu na granice ograničenja Za ovakava ograničenja najjednostavniji i veoma efikasan način normalizacije je da se obe strane podele svojim gornjim granicama. U ovom obliku, sva ograničenja imaju gornju granicu čija je vrednost 1. Tačka u kojoj je vrednost ograničenja blizu nule(npr 0.01) bila bi veoma blizu granice tog ograničenja. Primer 5.2. Oba ograničenja iz prethodnog primera mogu da se normalizuju deljenjem njihovim gornjim granicama. Dakle, ako podelimo g 1 sa 0.001, a g 2 sa 1000, dobijamo sledeća normalizovana ograničenja: ( g1 = 1 100x 4 1 + 1000Sin[x 2 ) 2] 1 g 2 = 1 + 23x 1 100 + x3 2 50 1 Računanjem vrednosti normalizovanih ograničenja u tački (1, 3.4), dobijamo sledeće vrednosti: g 1 = 943.896 i g 2 = 0.01608 Ove vrednosti nam jasno pokazuju da smo blizu granice ograničenja g 2, a daleko od granice ograničenja g 1. Ako posmatramo ove numeričke vrednosti, u zavisnosti od željene numreičke preciznosti, možemo smatrati da su oba ograničenja zadovoljena. Normalizacija deljenjem optimizacionim promenljivama Posmatrajmo ograničenje koje je zadato u sledećem obliku: x 1 x 2 ili x 1 x 2 0 Ako normalizujemo ovo ograničenje sa x 1 x 2 1 0 87
5 NELINEARNA OPTIMIZACIJA POD OGRANIČENJIMA javljaju se dva problema. Prvi problem je što je ovaj izraz validan samo ako je x 2 veće od nule. Ako to nije slučaj, deljenjem negativnim brojem bi se promenio smer nejednakosti. Normalizacija bi bila moguća ako uzmemo apsolutnu vrednost promenljive x 1 Abs[x 2 ] 1 0 Drugi problem je taj što jednostavno linearno ograničenje u normalizovanoj formi postaje nelinearno. Kako je obično lakše raditi sa linearnim ograničenjem, ovakva normalizacija nije poželjna. Apsolutne vrednosti kod ograničenja još više komplikuju stvari. Iz ovih razloga, u opštem slučaju, nije dobra ideja naormalizovati ograničenja njihovim deljenjem sa optimizacionim promenljivama. 5.1.2 Skaliranje optimizacionih promenljivih Numeričke metode zasnovane na gradijentu obično imaju poteškoća sa rešavanjem problema kod kojih optimizacione promenljive imaju znatno različite opsege. Ukoliko je poznata odgovarajuća gornja granica optimizacionih promenljivih, reformulisanje problema u smislu skaliranja promenljivih može poboljšati izvršavanje numeričkih metoda. Trebalo bi napomenuti da skaliranje optimizacionih promenljivih obično menja oblik izvodljive oblasti. Prema tome, potrebno je voditi računa prilikom izbora odgovarjućih faktora skaliranja. Kada nismo potpuno sigurni, bolje je ne koristiti nikakvo skaliranje optimizacionih promenljivih. 5.2 Kaznene metode Postoji veoma veliki broj indirektnih metoda kod kojih se originalni problem transformiše u ekvivalentni problem bez ograničenja, koji se zatim rešava metodama za rešavanje problema bez ograničenja. Kaznene metode pripadaju ovoj klasi indirektnih metoda. Osnovna ideja kaznenih metoda je da se definiše problem bez ograničenja dodavanjem ograničenja, pomnoženih parametrom kazne, na ciljnu funkciju. Dodatni izrazi su definisani tako da ako su zadovoljena ograničenja, onda nema kazne, a ako je jedno ili više ograničenja prekršeno, onda se dodaje veliki parametar kazne. Postoji nekoliko načina za definisanje kaznenih izraza. Razmatraćemo spoljašne, unutrašnje i tzv. tačne kaznene funkcije. Na dalje će se podrazumevati da je problem optimizacije zapisan u sledećoj standardnoj formi: Pronaći x koje minimizira f(x) Pod ograničenjima h i (x) = 0, i = 1, 2,..., p i g i (x) 0, i = 1, 2,..., m. 88
5 NELINEARNA OPTIMIZACIJA POD OGRANIČENJIMA 5.2.1 Spoljašne kaznene funkcije Ovo je jedan od najjednostavnijih metoda, kod njega se ekvivalentni problem bez ograničenja definiše na sledeći način: [ m φ(x, µ) = f(x) + µ (Max[0, g i (x)]) 2 + i=1 p ] (h i (x)) 2 i=1 gde je µ veoma veliki pozitivan broj, koji se naziva parametar kazne. Ukolko je ograničenje u obliku nejednakosti zadovoljeno, onda je g i < 0 i Max[0, g i ] vraća 0, prema tome to ograničenje ne utiče na funkciju φ. Ukoliko ograničenje nije zdovoljeno, tj. g i > 0 ili h i 0, odredeni izraz se dodaje funkciji φ. Da bi metod mogao da funkcioniše, parametar kazne µ mora da ima veoma veliku vrednost. U stvari, u teoriji minimum funkcije φ odgovara rešenju originalnog problema samo ako važi da µ. Primer 5.3. Neka je dat sledeći problem optimizacije: Minimizirati ( f = 1 2 x2 1 + x 1 x 2 2 ) x Pod ograničenjima 1 x 2 2 = 10 2x 2 1 + x 2 /3 0 Pomoću KT uslova se lako može utvrditi da je optimalno rešenje datog problema (x 1 = 0.774, x 2 = 3.594). <<OptimizationToolbox OptimalityConditions KTSolution[(1/2)*x1 2 +x1*x2 2,{x1*x2 2 ==10,-2*x1 2 +x2/3 0},{x1,x2} ***** Lagrangian x1 2 /2+u1(s1 2-2x1 2 +x2/3)+x1x2 2 +v1(-10+x1x2 2 ) ***** Valid KT Point(s) ***** f 10.2995 x1 0.773997 x2 3.59443 u1 0.2 s1 2 0 v1-1.01198 Funkcija φ ovog problema je: φ = 1 2 x2 1 + x 1 x 2 2 + µ((x 1 x 2 2 10) 2 + Max[0, 2x 2 1 + x 2 /3)]) 2 ) Na sledećoj slici su prikazni grafici ove funkcije za dve različite vrednosti µ. Grafici nam pokazuju da je minimum problema bez ograničenja blizu optimalnog rešenja. Sa slike se takode može videti da, kako se vrednost parametra µ povećava, konture postaju sve bliže jedna drugoj. Metodi, kao što je na primer metod najstrmijeg pada, imaju velikih poteškoća prilikom nalaženja minimuma ovakvih funkcija. 89
5 NELINEARNA OPTIMIZACIJA POD OGRANIČENJIMA Slika 5.2: Grafici funkcije φ za vrednosti µ=50 i µ=200 5.2.2 Unutrašnje kaznene funkcije Kod unutrašnjih kaznenih funkcija, kazneni izraz je definisan tako da zadržava rešenje unutar izvodljive oblasti. Problem je na početku definisan na sledeći način: Pronaći x koje minimizira f(x) Pod ograničenjima g i (x) 0, i = 1, 2,..., m. Dve unutrašnje kaznene funkcije koje se najčešće koriste su: [ m ] φ(x, µ) = f(x) µ Log[ g i (x)] Logaritamska barijerna f unkcija i=1 [ m 1 ] φ(x, µ) = f(x) µ Inverzna barijerna f unkcija g i (x) i=1 gde je µ pozitivan broj, koji se naziva parametar kazne. Pretpostavlja se da su ograničenja u obliku nejednakosti zadovoljena u svakom trenutku i zbog toga je g i < 0 i pozitivan izraz se dodaje ciljnoj funkciji. Kako se približavamo granici ograničenja, izraz velike vrednosti se dodaje ciljnoj funkciji zato što g i 0. Dakle, metod sprečava rešenje da napusti granice ograničenja, i otuda se ovaj metod naziva i metodom barijerne funkcije. Minimiziranjem funkcije φ bi trebalo da se spreči prekoračenje ograničenja. Kada je rešenje na granici ograničenja, da bi metod mogao da funkcioniše, kazneni parametar µ mora da ima veoma malu vrednost. U stvari, teoretski, minimum funkcije φ odgovara rešenju originalnog problema samo ako µ 0. Primer 5.4. Neka je dat sledeći problem optimizacije: 90
5 NELINEARNA OPTIMIZACIJA POD OGRANIČENJIMA Minimizirati f ( = xy + y 2 ) 1 Pod ograničenjima 4 y2 1 0 x/5 + y/2 1 0 Pomoću KT uslova se lako može utvrditi da je optimalno rešenje problema u tački (x = 10, y = 2). <<OptimizationToolbox OptimalityConditions KTSolution[xy + y 2, { 1 4 y2 -l 0,x/5+y/2-l 0},{x,y} ***** Lagrangian xy + y 2 + ( 1 4 y2 -l+s 2 1 )u 1+(x/5+y/2-l+s 2 2 )u 2 ***** Valid KT Point(s) ***** f 0 f -16 x 0 x 10 y 0 y -2 u1 0 u1 11 u2 0 u2 10 s1 2 1 s1 2 0 s2 2 1 s2 2 0 (a) Pomoću invezne barijerne funkcije dobijamo sledeću funkciju φ: ( 1 φ = xy + y 2 + µ 1 4 y2 1 + 1 ) x/5 + y/2 1 Potreban uslov za minimum ove funkcije je da gradijent bude jednak nuli. Iz ovog uslova dobijamo sledeće dve jednačine: ( µ ) y + == 0 5( 1+ x 5 + y 2 )2 µ yµ x + 2y + + == 0 2( 1+ x 5 + y 2 )2 )2 2( 1+ y2 4 U sledećoj tabeli je, za različite vrednosti kaznenog parametra µ, dato nekoliko rešenja ovog sistema jednačina: µ = 1 {x 7.3926,y -1.65277}, {x 9.29953,y - 2.30849}, {x 10.9855,y -1.71027}, {x 12.1669,y - 2.27360} µ = 0.1 {x 9.23956,y -1.90097}, {x 9.7521,y - 2.0962}, {x 10.2764,y -1.90566}, {x 10.7192,y - 2.09216} µ = 0.0001 {x 9.99188,y -1.99698}, {x 9.99304,y - 1.99698}, {x 10.0072,y -2.00301}, {x 10.0079,y - 2.00301} Jasno je da, kako se vrednost µ približava 0, rešenja problema bez ograničenja postaju sve bliža rešenju originalnog problema sa ograničenjima. Takode bi trebalo napomenuti da ako uzmemo da je µ = 0 dobijamo x = y = 0, što očigledno nije tačno rešenje. Prema tome, tačno rešenje se može dobiti samo kroz proces ograničavanja kada µ 0. 91
5 NELINEARNA OPTIMIZACIJA POD OGRANIČENJIMA (b) Primenom logaritamske barijerne funkcije dobijamo sledeću funkciju φ: φ = xy + y 2 µ ( Log[ ( 1 4 y2 1)] + Log[ (x/5 + y/2 1)] ) Potreban uslov za minimum ove funkcije je da gradijent bude nula. Na osnovu ovoga dobijamo sledeće dve jednačine: ( µ y + == 0 ) 5(1 x 5 y 2 ) µ x + 2y + + yµ == 0 2(1 x 5 y 2 ) 2(1 y2 4 ) Rešenja ovog sistema za različite vrednosti parametra µ su data u sledećoj tabeli: µ = 1 {x 0.000775589, y -0.183234}, {x 9.23548, y -1.90425} µ = 0.1 {x -0.00889614, y -0.0197694}, {x 9.92693, y -1.99087} µ = 0.0001 {x -9.99888 10 6, y - 0.0000199998}, {x 0.000300084, y 1.9999}, {x 0.833116, y 1.66678}, {x 9.99993, y -1.99999} I ovde se jasno vidi da je poslednje dobijeno rešenje problema bez ograničenja najbliže rešenju originalnog problema sa ograničenjima. 5.2.3 Kaznena funkcija uvećanog Lagranžijana I spoljašne i unutrašnje kaznene funkcije koriste jednostavnu ideju prevodenja probelma sa ograničenjima u ekvivalentni problem bez ograničenja. Obe metode imaju numeričkih poteškoća prilikom rešavanja problema bez ograničenja. Pored toga, rešenje problema bez ograničenja je približno rešenju originalnog problema, ali zapravo nikada nije jednako tačnom rešenju. Da bi se prevazišli ovi nedostaci, razvijene su tzv. tačne kaznene funkcije. Kao što samo ime govori, ove metode definišu probleme bez ograničenja tako da se tačno rešenje originalnog problema dobija za konačnu vrednost parametra kazne. Kaznena funkcija uvećanog Lagranžijana je primer tačne kaznene funkcije. Kod ovakvog pristupa, funkcija bez ograničenja se dobija dodavanjem izraza spoljašne kazne na Lagranžijan(umetso na ciljnu funkciju) originalnog problema. Ograničenja u obliku nejednakosti se prevode u ograničenja u obliku jednakosti dodavanjem pozitivnih težinskih promenljivih. Dakle, ako je originalni problem zadat na sledeći način, Pronaći x koje minimizuje f(x) Pod ograničenjima h i (x) = 0, i = 1, 2,..., p i g i (x) 0, i = 1, 2,..., m. 92
5 NELINEARNA OPTIMIZACIJA POD OGRANIČENJIMA onda je kaznena funkcija uvećanog lagranžijana definisana na sledeći način: p m φ(x, u, v, s, µ) =f(x) + v i h i (x) + u i (g i (x) + s 2 i ) i=1 i=1 [ m + µ (g i (x) + s 2 i ) 2 + i=1 i=1 p ] (h i (x)) 2 Na sledećem primeru ćemo pokazati da, ako su Lagranžovi množioci optimalni, onda rešenje problema bez ograničenja odgovara rešenju originalnog problema bez obzira na vrednost parametra kazne. Primer 5.5. Neka je dat sledeći problem optimizacije: Minimizirati f = 1 2 x2 + xy 2 Pod ograničenjima (x + y 2 = 10) Optimalno rešenje se može lako izračunati pomoću KT uslova: <<OptimizationToolbox OptimalityConditions KTSolution[ 1 2 x2 +xy 2, {x+y 2-10==0},{x,y} ***** Lagrangian 1 2 x2 + xy 2 + (-10+x+y 2 )v 1 ***** Valid KT Point(s) ***** f 50 x 10 y 0 v1-10 Optimum je: x = 10 y = 0 Lagranžov množilac je: v = 10 Kod uvećanog Lagranžijana, funkcija bez ograničenja se dobija dodavanjem izraza spoljašne kazne na Lagranžijan originalnog problema. Za ovaj primer dobijamo sledeću funkciju: φ = 1 2 x2 + xy 2 + v(x + y 2 10) + µ(x + y 2 10) 2 Na osnovu potrebnih uslova za minimum ove funkcije dobijamo sledeće jednačine: ( v + x + y 2 20µ + 2xµ + 2y 2 µ = 0 2vy + 2xy 40yµ + 4xyµ + 4y 3 µ = 0 ) Zamenom v = 10, dobijamo: ( 10 + x + y 2 20µ + 2xµ + 2y 2 µ = 0 20y + 2xy 40yµ + 4xyµ + 4y 3 µ = 0 Druga jednačina se može zapisati na sledeći način: y( 20 + 2x 40µ + 4xµ + 4y 2 µ) = 0 ) 93
5 NELINEARNA OPTIMIZACIJA POD OGRANIČENJIMA Dakle, y = 0 je rešenje ove jednačine za bilo koju vrednost µ. Zamenom y = 0 u prvoj jednačini dobijamo 10 + x 20µ + 2xµ = 0 odnosno ( 10 + x)(1 + 2µ) = 0 Prema tome, x = 10 je rešenje ove jednačine. Dakle, kod kaznene funkcije Lagranžijana optimalno rešenja se dobija ako znamo optimalne vrednosti Lagranžovih množioca. Zato je, u tom smislu, ona tačna kaznena funkcija. Jasno je da, kada rešavamo neki problem, mi ne znamo optimalne Lagranžove množioce. Medutim, kada koristimo Lagranžove množioce izbor kaznenog parametra nije toliko bitan. U postupku računanja koji je zasnovan na kaznenoj funkciji uvećanog Lagranžijana, počinje se sa proizvoljnim vrednostima Lagranžovih množioca, a zatim se razvija procedura koja množioce približava njihovim optimalnim vrednostima. Dakle, blizu minimuma, funkcija φ ne zavisi toliko od vrednosti µ, i postupak konvergira do pravog optimalnog rešenja. Eliminacija težinskih koeficijenata Kaznena funkcija uvećanog Lagranžijana uvodi težinske koeficijente za ograničenja u obliku nejednakosti. Na taj način se povećava ukupan broj promenljivih. Ove promenljive se mogu ukloniti ako potrebne uslove za minimum zapišemo u zavisnosti od s. Pogodno je kombinovati dva izraza koji uključuju težinske koeficijente: µ(g i (x) + s 2 i + u i 2µ )2 = µ Kada sredimo izraze dobijamo [ (g i (x) + s 2 i ) 2 + ( u i 2µ )2 + 2(g i (x) + s 2 i ) ( u i 2µ µ(g i (x) + s 2 i ) 2 + u i (g i (x) + s 2 i ) = µ(g i (x) + s 2 i + u i 2µ )2 u2 i 4µ Pomoću ovoga, φ(x, u, v, s, µ) možemo zapisati na sledeći način: φ(x, u, v, s, µ) =f(x) + + µ m i=1 p v i h i (x) + µ i=1 p (h i (x)) 2 i=1 (g i (x) + s 2 i + u i 2µ )2 m i=1 u 2 i 4µ ) ] Ukoliko potrebne uslove za minimum funkcije φ zapišemo u zavisnosti od težinskih koeficijenata, dobijamo φ/ s i = 0 = 2µ(g i (x) + s 2 i + u i 2µ )2s i = 0 = s i (g i (x) + s 2 i + u i ) = 0, i = 1,..., m 2µ 94
5 NELINEARNA OPTIMIZACIJA POD OGRANIČENJIMA Na osnovu ovoga je ili s i = 0 ili g i (x) + s 2 i + u i 2µ = 0 = s2 i = [ g i (x) + u ] i 2µ Ova dva uslova mogu da se zajedno zapišu u obliku sledeće funkcije: [ r i = Max g i (x) + u ] i 2µ, 0, i = 1,..., m Pomoću ove funkcije r i, funkcija φ može da se zapiše na sledeći način: φ(x, u, v, µ) = f(x) + p p m v i h i (x) + µ (h i (x)) 2 + µ ri 2 i=1 i=1 i=1 m i=1 u 2 i 4µ je nepre- Trebalo bi napomenuti da funkcija r i nije diferencijabilna. Medutim, ri 2 kidna i ima dobro definisane prve izvode: (r 2 i ) x j = 2r i g i x j j = 1,..., n Sledeći primer numerički ilustruje ovu činjenicu. Primer 5.6. Za sledeću funkciju odrediti prvi izvod i grafički ga uporediti sa njegovom aproksimacijom konačne razlike. Prvi izvod ove funkcije je: df dx f(x) = (Max[0, Sin[x]]) 2 = 2Max[0, Sin[x]]Cos[x] Grafik funkcije i grafik njenog prvog izvoda su prikazani na sledećoj slici: f[x ] := Max[0, Sin[x]] 2 ; gr1=plot[f[x], {x,0,10},plotlabel f[x] df[x ] := 2Cos[x]Max[0, Sin[x] gr2=plot[df[x], {x,0,10},plotlabel df[x] Slika 5.3: Grafik funkcije f(x) = (Max[0, Sin[x]]) 2 i grafik njenog izvoda 95
5 NELINEARNA OPTIMIZACIJA POD OGRANIČENJIMA Aproksimaciju konačne razlike izvoda funkcije f(x) možemo dobiti na sledeći način: finitediff := (f[x+0.00001] - f[x])/0.00001; Grafik ove funkcije, koji je prikazan na sledećoj slici, identičan je sa grafikom analitičkog izvoda, i on nam pokazuje da je funkcija diferencijabilna i da je analitički izraz za izvod date funkcija tačan. Plot[finiteDiff[x], {x, 0, 10}] Slika 5.4: Grafik prvog izvoda funkcije f(x) = (Max[0, Sin[x]]) 2 dobijen preko konačnih razlika Računanje Lagranžovih množioca Da bismo mogli da koristimo kaznenu funkciju uvećanog Lagranžijana za rešavanje problema optimizacije pod ograničenjima, moramo odrediti proceduru, koja startujući od proizvoljnih vrednosti, vodi blizu do optimalnih vrednosti Lagranžovih množioca. Sada ćemo razmotriti jednu jednostavnu proceduru zasnovanu na uporedivanju potrebnih uslova za minimum funkcije Lagranžijana i kaznene funkcije uvećanog Lagranžijana. Lagranžijan problema koji ima samo ograničenja u obliku jednakosti je: p L(x, v) = f(x) + v i h i (x) (a) L/ x j = 0 = f x j + p i=1 v i h i x j = 0 Odgovarajuća kaznena funkcija je i=1 φ(x, v, µ) = f(x) + p p v i h i (x) + µ (h i (x)) 2 i=1 i=1 (b) φ/ x j = 0 = f x j + p i=1 (v i + 2µh i ) h i x j = 0 96
5 NELINEARNA OPTIMIZACIJA POD OGRANIČENJIMA Uporedivanjem jednačina (a) i (b), dobijamo sledeće pravilo za računanje Lagranžovih množioca u k-toj iteraciji: v (k+1) i = v (k) i + 2µh i (x (k) ), i = 1,..., p Ukoliko imamo i ograničenja u obliku nejednakosti, prethodna analiza ne daje tako dobre rezulate kao kod jednakosti. U praksi se uvodi sledeće pravilo zasnovano na sličnosti sa jednakostima: u (k+1) i = u (k) i + 2µr i (x (k) ), i = 1,..., m Na početku procesa, svim množiocima se dodeljuju proizvoljne vrednosti, obično nule. Takode, množioci se ažuriraju samo kada se prekoračenja ograničenja značajno smanje. Kompletan metod kaznene funkcije uvećanog Lagranžijana (i) Podesiti brojač iteracija na k = 0. Podesiti množioce u i = 0, i = 1,..., m i v i = 0, i = 1,..., p. Postaviti brojač ažuriranja množioca na l = 0. Izabrati parametar kazne µ i koeficijent c > 1 koji služi za povećavanje parametra kazne kroz iteracije. Obično se uzimaju vrednosti µ = 10 i c = 2. (ii) Odrediti problem minimizacije bez ograničenja. φ(x, u, v, µ) = f(x) + p p m v i h i (x) + µ (h i (x)) 2 + µ ri 2 i=1 i=1 i=1 m i=1 u 2 i 4µ gde je r i = Max[g i (x) + u i 2µ, 0] Pomoću odgovarajućeg metoda za minimizaciju bez ograničenja pronaći tačku minimuma x (k). Izvodi funkcije φ po x j, računaju se pomoću sledeće jednačine: φ = f + x j x j p i=1 v i h i x j + 2µ p i=1 h i h i x j + 2µ m i=1 r i g i x j, j = 1,..., n (iii) Proveravanje konvergencije. Jednostavan kriterijum konvergencije je da se zaustavimo kada su sva ograničenja zadovoljena, a vrednsot ciljne funkcije se ne menja mnogo u uzastopnim iteracijama. Dakle, postupak se zaustavlja ako su sledeća dva uslova ispunjena. U suprotnom se prelazi na korak (iv). Abs[f(x (k) ) f(x (k 1) )/f(x (k) )] < ɛ V (x (k) ) < ɛ gde je V (x (k) ) = Max[g i (x (k) ), i = 1,..., m, Abs[h i (x (k) ), i = 1,..., p]] maksimalno prekoračenje ograničenja. 97
5 NELINEARNA OPTIMIZACIJA POD OGRANIČENJIMA (iv) Ažurirati množioce i kazneni parametar: Ako je V (x (k) ) 1 4 V (x(l) ) ažurirati množioce u (l+1) i v (l+1) i l = l + 1 = u (l) i + 2µr i (x (k) ), i = 1,..., m = v (l) i + 2µh i (x (k) ), i = 1,..., p U suprotnom ažurirati parametar kazne µ (k+1) = cµ (k) (v) Postaviti brojač iteracija na k = k + 1 i vratiti se nazad na korak (ii). Ovaj algoritam je u Mathematica implementiran u funkciji pod nazivom ALPF. ALPF[f, cons, vars, pt, opts] - rešava problem optimizacije pod ograničenjima pomoću kaznene funkcije uvećanog Lagranžijana. f-ciljna funkcija, cons-lista ograničenja, vars-lista promenljivih, pt-početna tačka, opts-opcije koje su dozvoljene kod ove funkcije Opcije koje se mogu koristiti sa ovom funkcijom su: opcija default PrintLevel 1 odreduje da li se štampaju sve iteracije ili samo krajnji rezultat MaxIterations 20 maksimalan broj iteracija ConvergenceTolerance 0.001 tolerancija konvergencije ProblemType Min tip problema,može biti M in ili M ax SolveUnconstrainedUsing FindMinimum odreduje metod koji se koristi za rešavanje problema bez ograničenja MaxUnconstrainedIterations 50 maksimalan broj iteracija kod rešavanja problema bez ograničenja PenaltyParameters {10,2} odreduje početnu vrednost parametra µ i koeficijenta c Evo kako izgleda ova funkcija u Mathematica: ALPF[fs, con List, vars, pt, opts?optionq] := Module[{newpt=pt,eps,maxIter,iter=0,prevMaxViolation,maxViolation, history={{"point","f", "maxviolation"}},flabel="f", glabels={},hlabels={}, g={}, h={}, prsetup, df,dg={},dh={},dflabel=" f",dglabels={}, dhlabels={}, Converged=False,prResults, fpt, gpt, hpt, φ, dφ, unconstmethod, type, f,prevf, stepprint, rpt, maxunconstiter,histprint,unconstdetails,µ,c,u,v,r,sol,gradient}, {type, prresults, gradient, maxiter, eps, unconstmethod, maxunconstiter,{µ, c}} = {ProblemType, PrintLevel, Gradient, MaxIterations, ConvergenceTolerance,SolveUnconstrainedUsing, MaxUnconstrainedIterations, PenaltyParameters}/. Flatten[{opts, Options[ALPF]} 98
5 NELINEARNA OPTIMIZACIJA POD OGRANIČENJIMA Switch[prResults, 0, {prsetup, histprint, stepprint, unconstdetails} = {False, False, False, False}, 1, {prsetup,histprint, stepprint, unconstdetails} = {True, False, False, False}, 2, {prsetup,histprint, stepprint, unconstdetails} = {True, True, False, False}, 3, {prsetup,histprint, stepprint, unconstdetails} = {True, True, True, False},, {prsetup,histprint, stepprint, unconstdetails} = {True, True, True, True} If[And[ToString[gradient]==="Numerical", unconstmethod===findminimum],unconstmethod=conjugategradient If[type===Max,f=-fs,f=fs Switch[ToString[gradient], "Automatic", df=grad[f,vars], "Numerical", df="numerical",, df=gradient[[1]] {g,h} = StandardConstraints[con If[g!={}, glabels = Table["g"<>ToString[i],{i,1,Length[g]} dglabels=map[" "<>#&,glabels Switch[ToString[gradient], "Automatic", dg=grad[g,vars], "Numerical", dg=table["numerical",{length[g]}],, dg=take[drop[gradient,1],length[g]] If[h!={}, hlabels = Table["h"<>ToString[i],{i,1,Length[h]} dhlabels=map[" "<>#&,hlabels Switch[ToString[gradient], "Automatic", dh=grad[h,vars], "Numerical", dh=table["numerical",{length[h]}],, dh=take[drop[gradient,1+length[g]],length[h]] If[prSetup, PrintLabelledList[{f,{df}},{"Minimize "<>flabel,dflabel},1 If[g!={}, PrintLabelledList[{Thread[g<=0],dg}, {"LE Constraints: If[h!={}, "MatrixForm[gLabels],MatrixForm[dgLabels]},1] PrintLabelledList[{Thread[h==0],dh}, {"EQ Constraints: "MatrixForm[hLabels],MatrixForm[dhLabels]},1] ] u = Table[0, {Length[g]} v = Table[0, {Length[h]} rpt = u; {fpt, gpt, hpt} = {f,g,h} /.ToRules[vars==newpt maxviolation = Max[0, gpt, Abs[hpt] prevmaxviolation = 10ˆ10; AppendTo[history, {newpt, fpt, maxviolation} While [And[++iter <= maxiter,not[converged]], If[histPrint, StylePrint["------------------ ALPF Iteration "<> ToString[iter]<> "------------------","Output",FontWeight->"Bold" PrintLabelledList[{{newpt}, MatrixForm[{fpt, gpt, hpt}], maxviolation}, {"Current point", "Function values"matrixform[{"f","g","h"}], "Max Violation"},1 If[stepPrint, PrintLabelledList[{µ,v,rpt,u},{"µ","v","r","u"},2] 99
5 NELINEARNA OPTIMIZACIJA POD OGRANIČENJIMA r = Map[Max[#,0]&,g+(u/(2µ)) φ = Expand[f + v.h + µ Apply[Plus,hˆ2] + µ Apply[Plus,rˆ2] - Apply[Plus,(uˆ2)/(4µ)] If[ToString[gradient]==="Numerical", dφ="numerical", dφ = Expand[df + v.dh + 2µ h.dh + µ 2 r.dg] If[unconstDetails, PrintLabelledList[{φ, dφ}, {"φ"," φ"},1] If[unconstMethod===FindMinimum, sol = FindMinimum[Evaluate[φ], Evaluate[Apply[Sequence, Transpose[{vars,newpt}]]], Evaluate[Gradient->dφ],MaxIterations->maxUnconstIter, Evaluate[FilterOptions[FindMinimum,opts]],AccuracyGoal->1], sol=unconstmethod[evaluate[φ], vars, newpt, Gradient->dφ, MaxIterations->maxUnconstIter, PrintLevel->If[unconstDetails,2,0], FilterOptions[unconstMethod,opts]][[1]] If[Or[Head[sol]===unconstMethod,Not[NumericQ[sol[[1]]]]], Message[ALPF::"Fail",newpt PrintLabelledList[{sol},{"Solution"},1 Abort[] If[stepPrint, PrintLabelledList[{sol},{"Solution"},1] newpt = vars/.sol[[2] prevf = fpt; {fpt, gpt, hpt} = {f,g,h} /.ToRules[vars==newpt maxviolation = Max[0, gpt, Abs[hpt] AppendTo[history, {newpt,fpt,maxviolation} If[Max[maxViolation,Abs[(prevf-fpt)/fpt]]<=eps, Converged=True, If[And[maxViolation>0,maxViolation<=prevMaxViolation/4], prevmaxviolation = maxviolation; rpt = Map[Max[#,0]&,gpt+(u/(2µ)) v = v + 2 µ hpt; u = u + 2 µ rpt, µ = c µ sol = Thread[vars->newpt If[prSetup, If [Converged, PrintLabelledList[{iter-1}, {"Optimum point: Iterations performed"},1], PrintLabelledList[{iter-1}, {"NonOptimum point: Iterations performed"},1] PrintLabelledList[{{sol}, MatrixForm[{fpt, gpt, hpt}]}, {"Point", "Function values"matrixform[{"f","g","h"}]},1 PrintLabelledList[{µ,maxViolation,v,u}, {"µ","max Violation","v","u"},2] {{fpt, sol, If[Converged, "Optimum", "NonOptimum"]}, history} Primer 5.7. Rešiti sledeći problem optimizacije pomoću ALPF funkcije. Koristiti početnu tačku {3,1}. Minimizirati f = 1 2 x2 1 + x 1 x 2 2 x 1 x 2 2 = 10 Pod ograničenjima 2x 2 1 + x 2 /3 0 x 2 4 100
5 NELINEARNA OPTIMIZACIJA POD OGRANIČENJIMA vars = {x1, x2}; (pt = {3.0,1.0};) f=x1 2 /2+x1x2 2 ; cons={x1x2 2 ==10, -2x1 2 +x2/3 0, x1-4}; Za prve dve iteracije su prikazana sva izračunavanja. ALPF[f, cons, vars, pt, Maxlterations 2, PrintLevel 3, PenaltyParameters {10, 2} Minimize f x12 2 +x1x22 f (x1+x2 2 2x1x2) ( ) ( g1 2x1 LE Constraints: 2 + x2/3 0 g2 4 x2 0 ( ) ( ) g1 4x1 1 3 g2 0 1 EQ Constraints: (h1) (-10+x1x2 2 ==0) ( h1) (x2 2 2x1x2) ------------------ ALPF Iteration 1 ------------------ Current point (3. 1.) Function values f 7.5 g { 17.6667, 5.} h { 7.} Max Violation 7. µ 10 ( v (0) ) ( ) 0 0 r u 0 0 φ 1000+10Max[0,-4-x2] ( 2 +10Max[0,-2x1 2 +x2/3] 2 +x1 2 /2-199x1x2 2 +10x1 2 x2 4 x1 80Max[0, 2x1 φ 2 + x2/3]x1 199x2 2 + 20x1x2 4 ) 20Max[0, 4 x2] + 20 3 Max[0, 2x12 + x2/3] 398x1x2 + 40x1 2 x2 3 Solution {10.9915, {x1 1.35001, x2 2.7008}} ) ------------------ ALPF Iteration 2 ------------------ Current point (1.35001 2.7008) Function values f 10.7587 g { 2.74478, 6.7008} h { 0.15257} Max Violation 0.15257 µ 10 ( v (-3.0514) ) ( ) 0 0 r u 0 0 φ 1030.51+10Max[0,-4-x2] 2 +10Max[0,-2x1 2 +x2/3] 2 +x1 2 /2-202.051x1x2 2 +10x1 2 ( x2 4 x1 80Max[0, 2x1 φ 2 + x2/3]x1 202.051x2 2 + 20x1x2 4 20Max[0, 4 x2] + 20 3 Max[0, 2x12 + x2/3] 404.103x1x2 + 40x1 2 x2 3 Solution {10.6337, {x1 1.15703, x2 2.94269}} NonOptimum point: Iterations performed 2 Point (1.15703 2.94269) Function values f 10.6885 g { 1.69653, 6.94269} h {0.0191806} µ 10 Max Violation ( ) 0.0191806 0 v (-2.66779) u 0 ) Proces se nastavlja sve dok ne pronademo optimalno rešenje. {sol, hist} = ALPF[f, cons, vars, pt, PrintLevel 0, PenaltyParameters {10,2} Optimum point: Iterations performed 11 Point (0.773997 3.59443) Function values f g h µ 640 Max Violation 8.4953 10 8 10.2995 {8.4953 10 8, 7.59443} {1.48753 10 8 } 101
5 NELINEARNA OPTIMIZACIJA POD OGRANIČENJIMA v (-1.01199) ( 0.199888 u 0 ) Pomoću KT uslova se lako može utvrditi da su optimalno rešenje i Lagranžovi množioci tačni. Sve tačke po iteracijama su prikazane u sledećoj tabeli: TableForm[hist] Point f maxviolation 3. 1. 7.5 7. 1.35001 2.7008 10.7587 0.15257 1.15703 2.94269 10.6885 0.0191806 1.0017 3.16195 10.5166 0.0149226 0.902785 3.32897 10.4122 0.00472714 0.819396 3.49424 10.3403 0.00457097 0.773646 3.59603 10.3036 0.00436978 0.773816 3.5965 10.3086 0.00916707 0.773907 3.59547 10.304 0.00458353 0.773952 3.59495 10.3018 0.00229178 0.773975 3.59469 10.3007 0.00114587 0.773997 3.59443 10.2995 8.4953 10 8 Na sledećem grafiku je prikazano rešenje sa kompletnom putanjom pretrage. Slika 5.5: Grafik koji prikazuje putanju pretrage Primer 5.8. Rešiti sledeći problem optimizacije pomoću ALPF funkcije. Minimizirati f = e x 1 x 2 ( + x 1 x 2 + x 2 2 1 ) Pod ograničenjima 4 e x 1 + 1 4 x2 2 1 0 x 1 /5 + x 2 /2 1 0 102
5 NELINEARNA OPTIMIZACIJA POD OGRANIČENJIMA vars = {x1, x2}; pt = {1.0,1.0}; f=exp[-x1-x2]+x1x2+x2 2 ; g={ 1 4 Exp[-x1]+x22 /4-1 0, x1/5+x2/2-1 0}; Za prve dve iteracije su prikazana sva izračunavanja. ALPF[f, g, vars, pt, Maxlterations 2, PrintLevel 3, PenaltyParameters {10, 2} Minimize f E x 1 x 2 +x 1 x 2 +x 2 2 f (-E x 1 x 2 +x 2 -E x 1 x 2 +x 1 +2x 2 ) ( ) ( ) g1 1 + LE Constraints: E x1 + x22 0 4 4 g2 1 + x1 5 + x2 2 ( ) ( ) 0 g1 E x1 x2 4 2 g2 1 1 5 2 ------------------ ALPF Iteration 1 ------------------ Current point (1. 1.) Function values f g h Max Violation 0 µ 10 ( v {} ) ( ) 0 0 r u 0 0 2.13534 { 0.65803, 0.3} {} φ -E x 1 x 2 +10Max[0,-1+ x1 5 + x2 2 ]2 +10Max[0,-1+ E x1 + x22 4 4 ]2 +x1x2+x2 2 φ ( E x 1 x 2 + 4Max[0, 1 + x1 5 + x2 2 ] 5E x1 Max[0, 1 + E x1 + x22 4 4 ] + x2 E x 1 x 2 + 10Max[0, 1 + x1 5 + x2 E x1 ] + x1 + 2x2 + 10Max[0, 1 + + x22 2 4 4 ]x2 Solution {-5.61293, {x1 5.14616, x2-2.27336}} ) ------------------ ALPF Iteration 2 ------------------ Current point (5.14616-2.27336) Function values f 6.47436 g {0.293501, 1.10745} h {} Max Violation 0.293501 µ 10 ( v {} ) ( ) 0.293501 5.87003 r u 0 0 φ -0.86143+E x 1 x 2 +10Max[0,-1+ x1 5 + x2 2 ]2 +10Max[0,-0.706499+ E x1 + x22 4 4 ]2 +x1x2+x2 2 φ ( E x 1 x 2 + 4Max[0, 1 + x1 5 + x2 2 ] 5E x1 Max[0, 0.706499 + E x1 + x22 4 4 ] + x2 E x 1 x 2 + 10Max[0, 1 + x1 5 + x2 E x1 ] + x1 + 2x2 + 10Max[0, 0.706499 + + x22 2 4 4 ]x2 Solution {-19.8145, {x1 13.7027, x2-2.32061}} NonOptimum point: Iterations performed 2 Point (13.7027-2.32061) Function values f 26.4134 g {0.346306, 0.58024} h {} µ 20 Max( Violation ) 0.58024 5.87003 v {} u 0 Optimalno rešenje se dobija posle 11 iteracija: ) {sol, hist} = ALPF[f, g, vars, pt, PrintLevel 0, PenaltyParameters {10,2} Optimum point: Iterations performed 11 Point (9.99683-1.9988) Function values f g h 15.9861 { 0.00119097, 0.0000334746} {} 103
5 NELINEARNA OPTIMIZACIJA POD OGRANIČENJIMA µ 2560 Max ( Violation ) 0 17.1014 v {} u 10.1677 Slika 5.6: Grafik koji prikazuje putanju pretrage za dati primer Sve tačke pretrage su prikazane u sledećoj tabeli: TableForm[hist] Point f maxviolation 1. 1. 2.13534 0 5.14616-2.27336-6.47436 0.293501 13.7027-2.32061-26.4134 0.58024 11.7066-2.14577-20.5153 0.268441 10.8183-2.06868-18.0999 0.129309 10.4009-2.03323-17.0129 0.063548 9.89409-1.96204-15.5626 0 9.94836-1.98097-15.7828 0 9.97451-1.99047-15.8916 0 9.98732-1.99523-15.9457 0 9.99367-1.99761-15.9726 0 9.99683-1.9988-15.9861 0 Primer 5.9. Rešiti problem projektovanja zgrade, koji je pominjan kod formulacije optimizacionih problema, pomoću ALPF metoda. Problem je sledeći: Da bi se smanjili troškovi energije za hladenje i grejanje, arhitekta razmatra dizajniranje pravougaone zgrade koja je delom ispod zemlje. Ukupna podna površina je 20000m 2. Maksimalna dužina i širina zgrade ne mogu biti veće od 50m. Odnos 104
5 NELINEARNA OPTIMIZACIJA POD OGRANIČENJIMA izmedu dimenzija zgrade mora biti jednak zlatnom odnosu(1.618), a svaki sprat mora imati visinu od 3.5m. Troškovi grejanja i hladenja su procenjeni na 100$ po m 2 spoljašne površine zgrade. Godišnji troškovi energije ne smeju da prelaze 225000$. Cilj je odrediti dimenzije zgrade tako da troškovi iskopavanja budu minimalni. Odrediti d, h i w koji d=dubina zgrade ispod zemlje h=visina zgrade w=širina zgrade Minimiziraju f = 1.618dw 2 Pod ograničenjima 100(5.236hw + 1.618w 2 ) 225000 1.618w 50 0.462286(d + h)w 2 20000 d 0, h 0, w 0 Deljenjem ograničenja njihovim desnim stranama, dobijamo normalizovanu formu ograničenja: 100(5.236hw + 1.618w 2 )/225000 1 1.618w/50 1 0.462286(d + h)w 2 /20000 1 U Mathematica se ovaj problem zadaje na sledeći način: vars = {d, h, w}; f = 1.618dw 2 ; cons = { 100(5.236hw + 1.618w 2 )/225000 1, 1.618w/50 1, 0.462286(d + h)w 2 /20000 1, d 0, h 0, w 0 } ; Startujući od sledeće početne tačke, rešenje dobijamo pomoću ALPF metoda. pt = {40, 10, 20}; ALPF[f, cons, vars, pt, MaxIterations 1, PrintLevel 3 Minimize f 1.618dw 2 f (1.618w 2 0 3.236dw) LE Constraints: g 1 g 2 g 3 g 4 g 5 g 6 1 + (5.236hw + 1.618w 2 )/2250 0 1 + 0.03236w 0 1 0.0000231143(d + h)w 2 0 d 0 h 0 w 0 ------------------ ALPF Iteration 1 ------------------ Current point (40 10 20) Function values f g h Max Violation 0.537714 µ 10 v {} 0 0 0 0 0 0 r 0 u 0 0 0 0 0 25888. { 0.246933, 0.3528, 0.537714, 40, 10, 20} {} 105
5 NELINEARNA OPTIMIZACIJA POD OGRANIČENJIMA φ 1.618dw 2 + 10Max[0, -d] 2 + 10Max[0, -h] 2 + 10Max[0, -1 + 0.03236w] 2 + 10Max[0,-w] 2 + l0max [ 0, 1-0.0000231143(d + h)w 2] 2 [ ] + 10Max 0, -l + (5.236hw + 1.618w 2 )/2250 2 Solution {10., {d 34.9998, h 10.0008, w 4.84836 10 12 }} NonOptimum point: Iterations performed 1 Point (34.9998 10.0008 4.84836 10 12 ) Function values f g h 1.33117 10 21 { 1., 1., 1., 34.9998, 10.0008, 4.84836 10 12 } {} µ 10 Max Violation 1. 0 0 20. v {} u 0 0 0 Konačno rešenje je sledeće: {sol, hist} = ALPF[f, cons, vars, pt, MaxIterations 20, PrintLevel 0, MaXUnconstrainedIterations 100, PenaltyParameters {1000, 2} Optimum point: Iterations performed 14 Point (80.217 13.322 21.5132) Function values f g h 60069.9 { 0.000232023, 0.303831, 0.000657117, 80.217, 13.322, 21.5132} {} µ 2048000 Max Violation 0 15962.8 0 72726.1 v {} u 0 0 0 Dakle, optimalne dimenzije zgrade bi bile d=80.217, h=13.322 i w=21.5132. Primer 5.10. Pretpostavimo da želimo da napravimo kutiju čija je dužina tri puta veća od njene širine. Pri tome, materijal koji se koristi za donju i gornju stranu kutije košta 10$/m 2, a materijal za ostale strane kutije košta 6$/m 2. Zapremina kutije mora da bude 50m 3. Odrediti dimenzije kutije koje minimiziraju troškove konstruisanja kutije. Slika 5.7: Kutija čija je dužina tri puta veća od širine 106
5 NELINEARNA OPTIMIZACIJA POD OGRANIČENJIMA Dakle, mi želimo da minimiziramo cenu materijala pod ograničenjem da zapremina kutije mora da bude 50m 3. Cena za jednu stranu kutije jednaka je proizvodu površine te strane i odgovarajuće cene materijala. Kako je l = 3w, problem formulišemo na sledeći način: Minimizirati C = 10(2lw) + 6(2wh + 2lh) = 60w 2 + 48wh Pod ograničenjem lwh = 3w 2 h = 50 Pošto smo definisali ciljnu funkciju i ograničenje, pristupamo rešavanju ovog primera u Mathematica. ALPF[60*w 2 + 48*w*h, {3*w 2 *h == 50, w 0, h 0}, {w, h}, {1, 1} Optimum point: Iterations performed 3 Point (w 1.88677 h 4.68185) Function values f 637.603 g { 1.88677, 4.68185} h {0.000508647} µ 10 Max Violation ( ) 0.000508647 0 v {-8.53799} u 0 Dakle, optimalne dimenzije za ovakvu kutiju su w = 1.88677, l = 3 w = 5.66031 i h = 4.68185. Minimalna cena u tom slučaju bi bila C = 637.603$. Primer 5.11. Proizvodač treba da napravi posudu u obliku cilindra koja može da primi 1.5 litara tečnosti. Odrediti dimenzije posude tako da potrošnja materijala za njeno konstruisanje bude minimalna. Kod ovog problema ograničenje je zapravo zapremina posude, a mi želimo da minimiziramo potrošnju materijala. To znači da mi zapravo hoćemo da minimiziramo površinu posude. Formule za zapreminu(v ) i površinu(p ) cilindra su: V = r 2 πh P = 2r 2 π + 2πrh Kako je 1l = 1000cm 3, onda je 1.5l = 1500cm 3. Dakle, dobili smo zapreminu izraženu u cm 3, što znači da ćemo dužinu poluprečnika osnove (r) i visinu cilindra (h) dobiti izražene u centimetrima. Formulacija problema je: Rešenje je: Minimizirati P = 2r 2 π + 2πrh Pod ograničenjem r 2 πh = 1500 ALPF[2*Pi*r*h + 2*Pi*r 2, {h*pi*r 2 == 1500, r 0, h 0}, {r, h}, {1, 1} Optimum point: Iterations performed 5 Point (r 6.45132 h 11.4721) Function values f 726.524 g { 6.45132, 11.4721} h { 7.6119 10 8 } µ 40 Max Violation ( ) -7.6119 10 8 0 v {-0.328164} u 0 Što znači da bi optimalne dimenzije bile r = 6.45132cm i h = 11.4721cm. 107
5 NELINEARNA OPTIMIZACIJA POD OGRANIČENJIMA 5.3 Linearizacija nelinearnog problema Jednostavan način za rešavanje nelinearnog problema ograničene optimizacije je da se on linearizuje, a da se za rešavanje zatim iskoristi metod linearnog programiranja. Linearizacija se može lako postići aproksimiranjem ciljne funkcije i ograničenja oko trenutne tačke, pomoću Tejlorovog razvoja. Podrazumeva se da je problem zadat u sledećem obliku: Pronaći x koje minimizuje f(x) Pod ograničenjima h i (x) = 0, i = 1, 2,..., p i g i (x) 0, i = 1, 2,..., m Trenutna tačka se obeležava sa x k, a sledeća sa x k+1. 5.3.1 Linearizovani problem Koristeći samo izraze prvog reda Tejlorovog razvoja, ciljna funkcija i ograničenja mogu da se aproksimiraju oko trenutne tačke na sledeći način: f(x k + d) f(x k ) + f(x k ) T d gde je d = x k+1 x k h i (x k + d) h i (x k ) + h i (x k ) T d = 0, g i (x k + d) g i (x k ) + g i (x k ) T d 0, i = 1, 2,..., p i = 1, 2,..., m Kompletan linearizovani problem se može zapisati na sledeći način: Minimizirati Pod ograničenjima f(x ( k ) + f(x k ) T d hi (x k ) + h i (x k ) T d = 0, i = 1, 2,..., p g i (x k ) + g i (x k ) T d 0, i = 1, 2,..., m ) Konstantni izraz u linearizovanoj ciljnoj funkciji (f(x k )) može da se izostavi pošto on ne utiče na minimum. Takode, promenljive linearizovanog problema predstavljaju promene vrednosti optimizacionih promenljivih u trenutnoj tački. 5.3.2 Grafičko uporedivanje linearizovanog i originalnog problema Linearizovani problem je zapisan u zavisnosti od promenljivih koje su obeležene sa d i koje predstavljaju promene vrednosti u trenutnoj tački. Ukoliko želimo da grafički uporedimo originalni sa linearizovanim problemom, lineraizovani problem se mora izaraiti preko originalnih promenljvih x k+1 = x k + d Dakle, linearizovani problem se može zapisati u zavisnosti od originalnih promenljivih ako uzmemo da je d i = x i x k i, i = 1,..., n. Funkcija pod nazivom Linearize, iz paketa OptimizationToolbox, generiše linearnu aproksimaciju za dati skup funkcija. Kao rezultat vraća linearizovane funkcije i od d promenljivih i od originalnih promenljivih. 108
5 NELINEARNA OPTIMIZACIJA POD OGRANIČENJIMA Linearize[f,fLabels,vars,pt,dvars] - Linearizuje funkciju f(vars) u datoj tački (pt).f Labels su oznake linearizovanih funkcija.dobijeni rezultati su izraženi preko dvars i preko vars. Primer 5.12. Linearizovati sledeći optimizacioni problem oko tačke (1,2). Grafički uporediti problem posle linearizacije sa prvobitnim problemom. Minimizirati f ( = 1 2 x2 1 + x 1 x 2 2 ) h = x1 x Pod ograničenjima 2 2 1 = 0 g = 2x 2 1 + x 2 /3 0 << OptimizationToolbox ConstrainedNLP ; f=x1 2 /2+x1x2 2 ; h=x1x2 2-1;g=-2x1 2 +x2/3; vars = {x1, x2}; dvars = {d1, d2}; pt = {1, 2}; {lpd,lpx} = Linearize[{f,g,h}, {"f ", "g", "h"},vars,pt,dvars *****( Gradient ) vectors ( ) ( ) x1 + x2 2 4x1 x2 2 f g 1 h 2x1x2 2x1x2 3 ***** Function values at {1,2} f 9 g 4 h 3 2 3 *****( Gradient ) vectors ( at {1,2} ) ( ) 5 4 4 f g 1 h 4 4 3 ***** Linearized functions at {1,2} f 9 2 +5d1+4d2 g 4 d2-4d1+ h 3+4d1+4d2 3 3 ***** In terms of original variables {d1-1 + x1, d2-2 + x2} f 17 x2 +5x1+4x2 g 2-4x1+ h -9+4x1+4x2 2 3 { {lpt, lpg, lph} = lpx - 17 x2 +5x1+4x2,2-4x1+ 2 3,-9+4x1+4x2} Slika 5.8: Grafik originalnog i grafik linearizovanog problema Grafici originalnog i linearizovanog problema su prikazani na Slici 5.8. Primećujemo da je rešenje linearizovanog problema dobro definisano. Pored toga, pomeranjem u smeru rešenja linearizovanog problema približavamo se rešenju originalnog problema. 109
5 NELINEARNA OPTIMIZACIJA POD OGRANIČENJIMA 5.4 Sekvencijalno linearno programiranje - SLP Da bi ideja linearizacije mogla da se transformiše u algoritam za rešavanje ograničenih nelinearnih problema, neophodno je definisati koja je dozvoljena promena iz trenutne tačke x k. Ovo je potrebno uraditi iz dva razloga. Prvi razlog je taj što ako se pomerimo previše daleko od trenutne tačke, onda linearna aproksimacija zasnovana na Tejlorovom razvoju postaje nemoguća. Drugi razlog je da se LP problem ograniči. Kako je LP rešenje uvek na granici linearizovane oblasti, važno je da se ova oblast ograniči. U suprotnom, LP problem ne bi imao rešenje. Kod sekvencijalnog linearnog programiranja(slp), jednostavna ograničenja pomeraja se dodaju na linearizovani problem. Ova ograničenja predstavljaju odredeni procenat(npr. 50%) od trenutne tačke. Ukoliko LP rešenje daje veoma veliku vrednost za d, ovaj procenat se smanjuje. Ako ne postoji izvodljivo rešenje, procenat se povećava. Sledi kompletan algoritam: SLP algoritam 1. k = 0. Izabrati početnu tačku x 0 i parametar pomeraja β(recimo β = 0.5). 2. Rešiti LP podproblem po d. Minimizovati Pod ograničenjima Granice pomeraja: f(x ( k ) T d hi (x k ) + h i (x k ) T d = 0, i = 1, 2,..., p g i (x k ) + g i (x k ) T d 0, i = 1, 2,..., m βx k d βx k ) Smanjiti vrednost β ukoliko rešenje rezultira veoma velikom vrednošću za d. Povećati β ako ne postoji izvodljivo rešenje problema. Promenljive ovog problema(d i -ovi) mogu da budu bilo kog znaka. Ovo se mora uzeti u obzir kada, npr. koristimo simpleks metod, za rešavanje ovakvog LP problema. 3. Izračunati novu tačku x k+1 = x k + d 4. Ako je d tol, zaustaviti postupak. U suprotnom, povećati k(k = k + 1) i vratiti se nazad na korak 2. Ovaj algoritam je implementiran u Mathematica funkciji SLP. SLP[f, con, vars, x0, opts] - Računa minimum funkcije f(vars) SLP metodom,pod ograničenjima con,startujući od x0.lp potproblem se rešava pomoću ugradene Mathematica funkcije NMinimize.SLP funkcija kao rezultat vraća {x, hist}.x je tačka optimuma ili tačka dostignuta nakon maksimalnog broja iteracija.hist sadrži isprobane vrednosti po svim iteracijama Opcije koje se mogu koristiti kod ove funkcije su: 110
5 NELINEARNA OPTIMIZACIJA POD OGRANIČENJIMA opcija default vrednost PrintLevel 1 odreduje da li se štampaju sve iteracije ili samo krajnji rezultat MaxIterations 10 maksimalan broj iteracija ConvergenceTolerance 0.001 tolerancija konvergencije DirVarName d promenljiva koja označava smer MoveLimit 0.5 vrednost parametra β Sledi implementacija SLP metoda u Mathematica: SLP[f, con List, vars, x0, opts Rule] := Module[{eps, maxiter, dvarname, dvars, iter=0, move, lpf, lpg, dir, x = x0, g={},h={},dg={},dh={}, prlevel, prsetup, prresults, sol={}, fstar={}, glabels={}, hlabels={},dglabels={}, dhlabels={}, flabel="f",df,dflabel=" f", history={}, status="nonoptimum"}, {prlevel, maxiter, eps, dvarname, move} = {PrintLevel, MaxIterations, ConvergenceTolerance,DirVarName, MoveLimit} /. Flatten[{opts, Options[SLP]} Switch[prLevel, 0, {prsetup, prresults}={false, False}, 1, {prsetup, prresults}={true, False},, {prsetup, prresults}={true, True} dvars = Table[mySubscript[dvarName,i],{i,1,Length[vars]} {g,h} = StandardConstraints[con df=grad[f,vars {g,h} = StandardConstraints[con If[g!={}, glabels = Table["g"<>ToString[i],{i,1,Length[g]} dglabels=map[" "<>#&,glabels dg=grad[g,vars] If[h!={}, hlabels = Table["h"<>ToString[i],{i,1,Length[h]} dhlabels=map[" "<>#&,hlabels dh=grad[h,vars] If[prSetup, PrintLabelledList[{f,{df}},{"Minimize "<>flabel,dflabel},1 If[g!={}, PrintLabelledList[{Thread[g<=0],dg}, {"LE Constraints: If[h!={}, "MatrixForm[gLabels],MatrixForm[dgLabels]},1] PrintLabelledList[{Thread[h==0],dh}, {"EQ Constraints: "MatrixForm[hLabels],MatrixForm[dhLabels]},1] ] AppendTo[history,{"x"," d "} AppendTo[history,{x,"--"} While[And[status==="NonOptimum", ++iter<=maxiter], If[prResults, Print["***** Iteration "<>ToString[iter]<>"*****" {lpf, lpg}=generatelp[f,df,flabel,dflabel, g,dg,glabels,dglabels,h,dh,hlabels,dhlabels,vars,x, dvars, Table[move,{Length[vars]}], prresults dir = SolveSLPdirection[lpf, lpg, dvars Which[ dir==="unbounded",move=move/2; Message[SLP::"moveLimit",move], dir==="infeasible",move=2*move; Message[SLP::"moveLimit",move], True, If[Norm[dir]<=eps, status="optimum" x = x + dir; AppendTo[history,{x,Norm[dir]} 111
5 NELINEARNA OPTIMIZACIJA POD OGRANIČENJIMA If[prResults,PrintLabelledList[{dir,x}, {"Direction","New point"}]] sol = Thread[vars->x fstar = f/.sol; If[prSetup, If[status==="Optimum", Print["Optimum: ",sol, "after ", iter,"iterations"], Print["New Point (Non-Optimum): ",sol, "after ",iter-1, "iterations"] ] {{fstar, sol, status},history} Primer 5.13. Odrediti minimum sledećeg problema SLP metodom. vars={x1,x2}; f = (x1-2) 2 +(x2-1) 2 ; cons = {x1 2 /4+x2 2-1 0,x1-2x2+1==0}; x0 = {2,2}; Sva izračunavanja u prvoj iteraciji su sledeća: SLP[f, cons, vars, x0, MoveLimit 0.7, PrintLevel 2, Maxlterations 1 Minimize f (x1-2) 2 +(x2-1) 2 f (-4+2x1-2+2x2) LE Constraints: (gl) (-1 + x1 2 /4 +x2 2 0) ( g1) (x1/2 2x2) EQ Constraints: (h1) (1+x1-2x2==0) ( h1) (1-2) ***** Iteration 1 ***** Function values at {2, 2} f 1 g1 4 h1-1 Gradient ( values ) at ( {2, ) 2} ( ) 0 1 1 f g1 h1 2 4 2 Linearized functions at {2, 2} f 1+2d2 g1 4+d1+4d2 h1-1+d1-2d2 -------Complete LP subproblem------- Minimize 2d2 4 + d1 + 4d2 0 1.4 + d1 0 1.4 + d2 0 Subject to 1.4 d1 0 1.4 d2 0 1 + d1 2d2 == 0 ( ) ( ) 1.4 0.6 Direction New point 1.2 0.8 New Point (Non-Optimum): {x1 0.6, x2 0.8} after 1 iterations Konačno rešenje je sledeće: {sol, hist} = SLP[f, cons, vars, x0, MoveLimit 0.7, Maxlterations 20 Optimum: {0.822876,0.911438} after 4 iterations TableForm[hist] 112
5 NELINEARNA OPTIMIZACIJA POD OGRANIČENJIMA x 2 2 0.6 0.8 0.845455 0.922727 0.823065 0.911533 0.822876 0.911438 d -- 1.84391 0.274427 0.0250321 0.000211802 Na sledećem grafiku je prikazano dobijeno rešenje kao i putanja pretrage SLP algoritma. Slika 5.9: Grafik na kome je prikazana putanja pretrage SLP metoda 5.5 Sekvencijalno kvadratno programiranje - SQP Najveći nedostatak sekvencijalnog linearnog programiranja je što se granice pomeraja biraju proizvoljno. Mala vrednost parametra β može da izazove veoma sporu konvergenciju ka optimalnom rešenju. S druge strane, veoma velika vrednost može uzrokovati lošu aproksimaciju linearizovanih ograničenja. Umesto eksplicitnog definisanja granica pomeraja, moguće je indirektno ograničiti d dodavanjem kvadratnog izraza 1 2 dt d na linearizovanu ciljnu funkciju. Pošto je ovaj izraz uvek pozitivan, a mi pokušavamo da minimizujemo ciljnu funkciju, vrednost d ne može da se veoma mnogo poveća. Ciljna funkcija je sada kvadratna funkcija, a ograničenja su i dalje linearna. Prema tome, potproblem traženja smera je sledeći problem kvadratnog programiranja(qp): Minimizirati Pod ograničenjima ( f(x k ) T d + 1 2 dt d hi (x k ) + h i (x k ) T d = 0, i = 1, 2,..., p g i (x k ) + g i (x k ) T d 0, i = 1, 2,..., m ) 113
5 NELINEARNA OPTIMIZACIJA POD OGRANIČENJIMA Optimalno rešenje QP problema leži unutar izvodljive oblasti ili na granici ograničenja. Pored toga QP potproblem je konveksan. 5.5.1 Dualni QP za traženje smera Za računanje je najpovoljnije formirati dualni problem tražeja smera i rešvanjem tog problema odrediti smer. Funkcija Lagranžijana je L(d, u, v) = f(x k ) T d + 1 m 2 dt d + u i [g i (x k ) + g i (x k ) T d] + i=1 p v i [h i (x k ) + h i (x k ) T d] i=1 gde su vektori Lagranžovih množioca za ograničenja u obliku nejednakosti i u obliku jednakosti u = [u 1,..., u m ] T 0, v = [v 1,..., v p ] T Definisanjem vrsta matrica J g (m n) i J h (p n) tako da one sadrže gradijente funkcija ograničenja, Lagranžijan se može zapistai u formi matrice na sledeći način: g 1 (x k ) T h 1 (x k ) T J g (x k g 2 (x k ) T ) = J h(x k h 2 (x k ) T ) =. g m (x k ) T. h p (x k ) T L(d, u, v) = f(x k ) T d + 1 2 dt d + u T g(x k ) + u T J g (x k )d +v T h(x k ) + v T J h (x k )d Dualna funkcija se dobija minimizovanjem ove funkcije po d. M(u, v) = Min [ f(x k ) T d + 1 2 dt d + u T g(x k ) + u T J g (x k )d +v T h(x k ) + v T J h (x k )d ] Diferenciranjem po d dobijamo: odakle sledi da je f(x k ) + d + J g (x k ) T u + J h (x k ) T v = 0 d = f(x k ) J g (x k ) T u J h (x k ) T v Transponovanjem i množenjem sa d dobijamo d T d = f(x k ) T d + u T J g (x k )d v T J h (x k )d Prema tome, dualna funkcija problema je Dualni problem traženja smera je sledeći: M(u, v) = 1 2 dt d + u T g(x k ) + v T h(x k ) 114
5 NELINEARNA OPTIMIZACIJA POD OGRANIČENJIMA Maksimizirati 1 2 dt d + u T g(x k ) + v T h(x k ) Pod ograničenjima u i 0, i = 1,..., m Problem možemo zapisati u standardnoj QP formi na sledeći način: ( ) u Vektor Lagranžovih množioca: λ = v ( ) g(x Vektor ograničenja: r(x k ) = k ) ( h(x k ) ) Jakobijan vektora ograničenja: J r (x k Jg (x ) = k ) J h (x k ) Stoga je odakle sledi d = f(x k ) J r (x k ) T λ i d T = f(x k ) T λ T J r (x k ) d T d = f(x k ) T [ f(x k ) J r (x k ) T λ] λ T J r (x k )[ f(x k ) J r (x k ) T λ] što daje d T d = f(x k ) T f(x k ) + 2 f(x k ) T J r (x k ) T λ + λ T J r (x k )J r (x k ) T λ Ciljna funkcija QP problema je: 1 1 2 dt d + u T g(x k ) + v T h(x k ) = [ 2 f(xk ) T f(x k ) } + { f(x k ) T J r (x k ) T r(x k ) T λ + 1 ] 2 λt J r (x k )J r (x k ) T λ Transformacijom u problem minimizacije i izostavljanjem prvog izraza(jer je on konstanta), dobijamo sledeći QP problem: Minimizirati Pod ograničenjima ( c T λ + 1 2 λt Qλ λ i 0, i = 1, 2,..., m λ i neograniceno, i = m + 1,..., p ) gde je c = J r (x k ) f(x k ) r(x k ) i Q = J r (x k )J r (x k ) T Kada nam je poznat vektor Lagranžovih množioca λ, smer se može izračunati po formuli d = f(x k ) J r (x k ) T λ 115
5 NELINEARNA OPTIMIZACIJA POD OGRANIČENJIMA 5.5.2 Merna funkcija SQP algoritam bi bio robustniji ako bismo mu dodali odredenu kontrolu koraka. Osnovna iteracija praktičnih metoda za rešavanje nelinearnih problema sa ograničenjima je: x k+1 = x k + αd Smer d se računa rešavanjem QP potproblema. Kod problema bez ograničenja, dužina koraka se računa minimizacijom ciljne funkcije u izračunatom smeru. Za opšte nelinearne probleme situacija je kompleksnija. Jasno je da želimo da minimizujemo ciljnu funkciju, ali ne po cenu kršenja ograničenja. U stvari, ako ograničenja nisu zadovoljena u trenutnoj tački, naš prioritet je da prvo zadovoljimo ograničenja, pre nego što pokušamo da smanjimo vrednost funkcije cilja. Koristeći principe kaznenih funkcija, merna funkcija uzima u obzir i ograničenja i ciljnu funkciju prilikom računanja dužine koraka. Sledeća funkcija se najčešće koristi sa SQP metodom: φ(α) = f(x k + αd) + µv (x k + αd) gde je f ciljna funkcija, µ je parametar kazne, a V je maksimalno prekoračenje ograničenja. V je definisano na sledeći način: V (x k ) = Max[0, {Abs[h i (x k )], i = 1,..., p}, {g i (x k )], i = 1,..., m}] Ograničenje u obliku nejednakosti je prekršeno ako je g i > 0. Za ograničenje u obliku jednakosti, svaka vrednost koja je različita od nule ukazuje na kršenje tog ograničenja. Zbog toga se u prethodnoj formuli koristi apsolutna vrednost. Ukoliko su sva ograničenja zadovoljena(svako g i 0 i h i = 0), onda je V = 0 i funkcija mere je ista kao i ciljna funkcija. Ukoliko je neko ograničenje prekoračeno, onda je V > 0 i minimizacijom funkcije φ, mi pokušavamo da minimizujemo sumu ciljne funkcije i maksimalnog prekoračenja ograničenja. Parametar kazne µ se uvodi zbog dodatne kontrole nad funkcijom φ. Veoma velika vrednost parametra µ u prvi plan stavlja minimizaciju prekoračenja ograničenja u odnosu na minimizaciju ciljne funkcija, i obrnuto. Može se pokazati da SQP metod konvergira ako je parametar kazne µ definisan pomoću Lagranžovih množioca, na sledeći način: [ µ Max 1, p Abs[v i ] + i=1 m ] u i gde su v i Lagranžovi množioci za ograničenja u obliku jednakosti, a u i za ograničenja u obliku nejednakosti. Pošto v i -ovi mogu biti bilo kog znaka, kod sumiranja se koristi njihova apsolutna vrednost. Ova definicija parametra µ ima smisla, zato što Lagranžovi množioci odreduju osetljivost ciljne funkcije na promene ograničenja. Dakle, za osetljivija ograničenja, ova definicija naglašava kršenje ograničenja u mernoj funkciji. Ukoliko ograničenja nisu mnogo osetljiva, onda ciljna funkcija ima veću važnost kod merne funkcije. 116 i=1
5 NELINEARNA OPTIMIZACIJA POD OGRANIČENJIMA Još uvek nemamo proceduru za odredivanje parametra µ, zato što su nam Lagranžovi množioci nepoznati. Računaju se jedino Lagranžovi množioci za traženje smera QP potproblema. Prema tome, prilikom izračunavanja, µ se podešava u svakoj iterciji na sledeći način: [ ( p m )] µ k+1 = Max µ k, 2 Abs[v i ] + u i i=1 gde je k brojač iteracija, a Lagranžovi množioci su dobijeni rešavanjem QP problema u k-toj iteraciji. Kako je QP zasnovan na linearizaciji originalne funkcije, blizu tačke otimuma QP Lagranžovi množioci su prilično blizu Lagranžovim množiocima originalnog problema. Medutim, u početnim izračunavanjima, može se desiti da množioci QP problema nisu naročito dobre aproksimacije pravih množioca. Prema tome, sa podešenom vrednošću za µ, vrednost merne funkcije se može povećati. Tj., možemo imati sledeću situaciju: i=1 f(x k ) + µ k+1 V (x k ) > f(x k ) + µ k V (x k ) U ovoj situaciji, može se desiti da kriterijum za minimizaciju merne funkcije nikada ne bude ispunjen i da metod ne konvergira. Ako se vrednost merne funkcije ne povećava, da bi se izbegao ovaj problem, uzima se nova vrednost parametra µ zasnovana na Lagranžovim množiocima. A ako se njena vrednost povećava, koristi se nova vrednost za µ, a sa izračunavanjima se kreće od početka da bi se izbegli problemi sa konvergencijom. 5.5.3 Minimizacija merne funkcije Da bismo odredili odgovarajuću dužinu koraka α u izračunatom smeru d, moramo minimizovati mernu funkciju φ(α). Teoretski, ovo je isti problem kao i jednodimenzionalni line search koji smo pominjali kod problema bez ograničenja. Medutim, iz definicije funkcije φ je jasno da ona nije diferencijabilna, i prema tome, ne možemo koristiti analitički metod(tj., ne možemo odrediti α iz jednačine dφ/dα = 0). Moramo koristiti numeričku pretragu. U principu, možemo koristiti pretragu zlatnog preseka, ali bi ova procedura zahtevala veoma mnogo izračunavanja. To je zbog toga što za svaku vrednost α, prvo moramo izračunati sva ograničenja da bismo odredili prekoračenje ograničenja V, a zatim dobili vrednost φ. Izvršavanje veoma velikog broja iteracija za probleme sa velikim brojem ograničenja bi bilo veoma mnogo zahtevno. Kako nam nije cilj da dobijemo tačan minimum funkcije φ(α), već da rešimo prvobitni problem optimizacije pod ograničenjima, obično je najbolje koristiti aproksimirani line search. Aproksimirani line search metod Metod počinje računanjem merne funkcije za α = 0. Ova vrednost se oznažava sa φ 0 : φ 0 = f(x k ) + µv (x k ) 117
5 NELINEARNA OPTIMIZACIJA POD OGRANIČENJIMA Zatim se računaju vrednosti φ(α) = f(x k + αd) + µv (x k + αd) sukcesivno za α = 1, 1/2, 1/4, 1/8,... sve dok α ne zadovolji sledeći kriterijum: φ(α) φ 0 αγ d 2 gde je γ dodatni parametar koji se uvodi da bi omogućio bolju kontrolu nad procesom pretrage. γ obično ima vrednost 0.5. Kao što vidimo na osnovu ovog kriterijuma, umesto nalaženja pravog minimuma funkcije φ(α), mi kod ovog line search metoda prihvatamo ono α koje smanjuje inicijalnu vrednost funkcije φ za αγ d 2. Pošto ovaj izraz sadrži α, kako se smanjuje dužina koraka, smanjuje se i očekivano smanjenje. Stoga, sve dok je d opadajući smer, kriterijum mora biti ispunjen posle konačnog broja iteracija. 5.5.4 SQP algoritam Neka su dati parametar kazne µ(recimo µ = 1) i parametar dužine koraka γ(recimo γ = 0.5). SQP algoritam: 1. Podesiti brojač iteracija k = 0. Početna tačka je x 0. 2. Izarčunati d rešavnjem QP potproblema. Možemo koristiti primarni ili dualni QP. 3. Ažurirati parametar kazne µ. (i) µ k+1 = Max[µ k, 2( p i=1 Abs[v i] + m i=1 u i)] (ii) Ako je f(x k ) + µ k+1 V (x k ) > f(x k ) + µ k V (x k ), vratiti se na korak 1. U suprotnom, preći na korak 4. 4. Izračunati dužinu koraka pomoću aproksimiranog line search metoda na sledeći način: (i) Izračunati φ 0 = f(x k ) + µ k+1 V (x k ). i = 0. (ii) α = (1/2) i. (iii) Izračunati φ(α) = f(x k + αd) + µv (x k + αd) (iv) Ukoliko je φ(α) φ 0 αγ d 2, prihvatiti α. U suprotnom, povećati i, i = i + 1, i vratiti se na korak (ii). 5. Izračunati novu tačku x k+1 = x k + αd 6. Ako je d tol, zaustaviti proces. U suprotnom, povećati brojač iteracija k = k + 1 i vratiti se nazad na korak 2. Ovaj algoritam je implementiran u funkciji pod nazivom SQP iz paketa OptimizationToolbox. Ova funkcija se zadaje na sledeći način. 118
5 NELINEARNA OPTIMIZACIJA POD OGRANIČENJIMA SQP[f, cons, vars, pt, opts] - Rešava problem optimizacije pod ograničenjima SQP algoritmom.f-ciljna funkcija,cons-lista ograničenja,vars-lista promenljivih, pt-početna tačka,opts-opcije. Opcije koje se mogu koristiti kod ove funkcije su: opcija default vrednost PrintLevel 1 odreduje da li se štampaju sve iteracije ili samo krajnji rezultat MaxIterations 10 maksimalan broj iteracija ConvergenceTolerance 0.001 tolerancija konvergencije ProblemType Min tip problema, može biti M in(minimum) ili M ax(maksimum) SolveQPUsing ActiveSetDual metod koji se koristi za rešavanje QP potproblema, može biti ActiveSet ili Active- SetDual MaxQPIterations 20 maksimalan broj iteracija prilikom rešavanja QP problema StartingMu 10 početna vrednost kaznenog parametra µ LineSearchGamma 0.5 vrednost parametra γ MaxLineSearchIterations 10 maksimalan broj iteracija line search metoda SQP algoritam napisan Mathematica kôdom: SQP[fs, con List, vars, pt, opts?optionq] := Module[{ newpt = pt, qpsoln={}, gamma, eps, maxiter, qpvars,iter=0, history={{"point",d"," d ","φ"}},flabel="f", qpstatus, glabels={},hlabels={}, g={}, h={},prsetup, fstar, sol, df,dg={},dh={},dflabel=" f",dglabels={}, dhlabels={}, Converged=False,dNorm,prResults,maxLineIter, d, w, abswsum, fcnvals, phi, qpmethod, type, f, phinew, maxqpiter,histprint, qpprint, qpdetails, stepprint, stepdetails}, {type, prresults,maxiter, eps, gamma,µ, maxlineiter,qpmethod, maxqpiter} = {ProblemType, PrintLevel, MaxIterations, ConvergenceTolerance, LineSearchGamma, StartingMu, MaxLineSearchIterations,SolveQPUsing,MaxQPIterations} /.Flatten[{opts,Options[SQP]} qpmethod = ToString[qpMethod Switch[prResults, 0, {prsetup, histprint, qpprint, qpdetails, stepprint, stepdetails} = {False, False, False, False, False, False}, 1, {prsetup, histprint, qpprint, qpdetails, stepprint, stepdetails} = {True, False, False, False, False, False}, 2, {prsetup, histprint, qpprint, qpdetails, stepprint, stepdetails} = {True, True, False, False, True, False}, 3, {prsetup, histprint, qpprint, qpdetails, stepprint, stepdetails} = {True, True, True, False, True, False}, 4, {prsetup, histprint, qpprint, qpdetails, stepprint, stepdetails} = {True, True, True, False, True, True},, {prsetup, histprint, qpprint, qpdetails, stepprint, stepdetails} = {True, True, True, True, True, True} 119
5 NELINEARNA OPTIMIZACIJA POD OGRANIČENJIMA If[type===Max,f=-fs,f=fs df=grad[f,vars {g,h} = StandardConstraints[con If[g!={}, glabels = Table[mySubscript["g",i],{i,1,Length[g]} dglabels=map[" "#&,glabels dg=grad[g,vars] If[h!={}, hlabels = Table[mySubscript["h",i],{i,1,Length[h]} dhlabels=map[" "#&,hlabels dh=grad[h,vars] If[prSetup, PrintLabelledList[{f,{df}},{"Minimize "<>flabel,dflabel},1 If[g!={}, PrintLabelledList[{Thread[g<=0],dg}, {"LE Constraints:"MatrixForm[gLabels],MatrixForm[dgLabels]},1] If[h!={}, PrintLabelledList[{Thread[h==0],dh}, {"EQ Constraints:"MatrixForm[hLabels],MatrixForm[dhLabels]},1] ] While [And[++iter <= maxiter,not[converged]], fcnvals = {f,g,h} /.ToRules[vars==newpt phi = meritfunction[fcnvals, µ If[histPrint, StylePrint["------------------ SQP Iteration "<> ToString[iter]<> "------------------","Output",FontWeight->"Bold" PrintLabelledList[{{newpt}, MatrixForm[fcnVals]}, {"Current point", "Function values"matrixform[ {"f","g","h"}]},1] {{d,w},qpstatus} =SQPDirection[f,g,h,df,dg,dh,vars,newpt, qpmethod, maxqpiter, eps, qpprint, qpdetails If[qpStatus!="Optimum", sol = Thread[vars->newpt fstar = f/.sol; Message[SQP::"QPFailed", qpstatus, newpt Return[{{fstar, sol, "QPFailed"}, history}] abswsum=apply[plus,abs[w] dnorm=norm[d If[histPrint, PrintLabelledList[{{d},dNorm,{w}}, {"Direction"," d ","Lagrange multipliers"},2] AppendTo[history, {newpt,d,dnorm,phi} If[dNorm<=eps,Converged=True, If[µ>absWsum, newpt = SQPApproxLineSearch[vars, f, g, h, newpt, d, µ, phi, gamma,maxlineiter,stepprint, stepdetails], µ = 2 * abswsum; phinew = meritfunction[fcnvals, µ If[Or[phiNew<=phi, iter===1], newpt = SQPApproxLineSearch[vars, f, g, h, newpt, d, µ, phinew, gamma, maxlineiter,stepprint, stepdetails], Message[SQP::"Restart",iter, newpt, µ, phi, phinew newpt = pt If[histPrint, Print["New point"->newpt] ] sol = Thread[vars->newpt fstar = f/.sol; 120
5 NELINEARNA OPTIMIZACIJA POD OGRANIČENJIMA ] If[prSetup, If[Converged, PrintLabelledList[{{sol},iter-1}, {"Optimum point","iterations performed"},1], PrintLabelledList[{{sol},iter-1}, {"NonOptimum point","iterations performed"},1] ] {{fstar, sol, If[Converged, "Optimum", "NonOptimum"]}, history} Primer 5.14. SQP metodom rešiti sledeći problem optimizacije. Koristiti početnu tačku (3,1). vars={x1,x2}; f = x1 2 /2+x1x2 2 ; cons = {x1x2 2 ==10,-2x1 2 +x2/3 0,x2-4}; pt = {3,1}; Minimizirati f = 1 2 x2 1 + x 1 x 2 2 x 1 x 2 2 = 10 Pod ograničenjima 2x 2 1 + x 2 /3 0 x 2 4 Za prve dve iteracije će biti prikazana sva izračunavanja. Dualna forma QP-a se koristi za traženje smera. QP se rešava pomoću ActiveSetDualQP. << OptimizationToolbox ConstrainedNLP ; SQP[f, cons, vars, pt, PrintLevel 4, Maxlterations 2 Minimize f x1 2 /2+x1x2 2 f (x1+x2 2 2x1x2) ( ) ( g1 2x1 LE Constraints: ) + x2/3 0 g2 4 x2 0 ( ) ( ) g1 4x1 1 3 g2 0 1 EQ Constraints: (h1) (-10+x1x2 2 ==0) ( h1) (x2 2 2x1x2) ------------------ SQP Iteration 1 ------------------ Current point (3. 1.) Function values f 7.5 g { 17.6667, 5.} h { 7.} ( ) 4. Gradients: f 6. ( ) 12. 1 g 3 0 1 h (1. 6.) -------QP subproblem for direction------- Minimize 4.d1+6.d2+ 1 2 (d12 +d2 2 ) 17.6667 12.d1 + 0.333333d2 0 Subject to 5. 1.d2 0 7. + 1.d1 + 6.d2 == 0 -------Dual QP subproblem------- Minimize -28.3333u1-1.u2+47.v1+ 1 2 (u1(144.111u1-0.333333u2-10.v1) +u2(-0.333333u1+1.u2-6.v1)+v1(-10.u1-6.u2+37.v1)) Direction (-1.43318 1.40553) d 2.00737 Lagrange multipliers (0.110535 0-1.2404) -------- Step length calculations -------- µ 10 d 2 4.02952 φ 0 77.5 γ 0.5 ---- Try α 1 Point (1.56682 2.40553) 121
5 NELINEARNA OPTIMIZACIJA POD OGRANIČENJIMA Function values f g h 10.294 { 4.10801, 6.40553} { 0.933478} φ 19.6288 φ + αγd 2 21.6435 φ Test Passes Step length 1 New point {1.56682, 2.40553} ------------------ SQP Iteration 2 ------------------ Current point (1.56682 2.40553) Function values f 10.294 g { 4.10801, 6.40553} h { 0.933478} ( ) 7.35339 Gradients: g f ( 6.26728 1 3 0 1 7.53807 ) h (5.78657 7.53807) -------QP subproblem for direction------- Minimize 7.35339d1+7.53807d2+ 1 2 (d12 +d2 2 ) Subject to 4.10801 6.26728d1 + 0.333333d2 0 6.40553 1.d2 0 0.933478 + 5.78657d1 + 7.53807d2 == 0 -------Dual QP subproblem------- Minimize -39.4651u1-1.13254u2+100.307v1+ 1 2 (u1(39.3899u1-0.333333u2-33.753v1)+u2(-0.333333u1+1.u2-7.53807v1) +v1(-33.753u1-7.53807u2+90.306v1)) Direction (-0.623429 0.602409) d 0.866926 Lagrange multipliers (0.0737302 0-1.08318) -------- Step length calculations -------- µ 10 d 2 0.75156 φ 0 19.6288 γ 0.5 ---- Try α 1 Point (0.943391 3.00794) Function values f g h 8.98051 { 0.777328, 7.00794} { 1.46448} φ 23.6254 φ + αγd 2 24.0011 φ Test Fails ---- Try α 0.5 Point (1.25511 2.70673) Function values f g h 9.98307 { 2.24834, 6.70673} { 0.80458} φ 18.0289 φ + αγd 2 18.2168 φ Test Passes Step length 0.5 New point {1.25511,2.70673} NonOptimum point (x1 1.25511 x2 2.70673) Iterations performed 2 Slika 5.10: Putanja pretrage SQP algoritma 122
5 NELINEARNA OPTIMIZACIJA POD OGRANIČENJIMA Optimalno rešenje se dobija posle 7 iteracija i prikazano je na Slici 5.10. {sol, hist} = SQP[f, cons, vars, pt Optimum point (x1 0.773997 x2 3.59443) Iterations performed 7 Primer 5.15. Posmatrajmo sada primer projektovanja zgrade, koji smo pominjali na početku, kod formulacije optimizacionih problema. Problem optimizacije je bio sledeći: d-dubina zgrade ispod zemlje h-visina zgrade w-širina zgrade Minimizovati f = 1.618dw 2 Pod ograničenjima 100(5.236hw + 1.618w 2 )/225000 1 1.618w/50 1 0.462286(d + h)w 2 /20000 1 d 0, h 0, w 0 U Mathematica, problem zadajemo na sledeći način: vars = {d, h, w}; f = 1.618w 2 ; cons = {100(5.236hw + 1.618w 2 )/225000 1, 1.618w/50 1, 0.462286(d + h)w 2 /20000 1, d 0, h 0, w 0}; Sada ćemo videti sva izračunavanja koja su izvršena u prvoj iteraciji SQP metoda. pt={50,10,25}; SQP[f, cons, vars, pt, PrintLevel 4, Maxlterations 1, SolveQPUsing ActiveSetDual Minimize f 1.618w 2 f (1.618w 2 0 3.236dw) g1 1 + 5.236hw+1.618w2 0 2250 g2 1 + 0.03236w 0 g3 LE Constraints: g4 1 0.0000231143(d + h)w 2 0 d 0 g5 h 0 g6 w 0 g1 g2 g3 g4 g5 g6 0 0.00232711w 0.00232711h + 0.00143822w 0 0 0.03236 0.0000231143w 2 0.0000231143w 2 0.0000462286dw 0.0000462286hw 1 0 0 0 1 0 0 0 1 ------------------ SQP Iteration 1 ------------------ Current point (50 10 25) Function values f g h Gradients: f 1011.25 0 4045. 50562.5 {0.0312222, 0.191, 0.133214, 50, 10, 25} {} 123
5 NELINEARNA OPTIMIZACIJA POD OGRANIČENJIMA g 0 0.0581778 0.0592267 0 0 0.03236 0.0144464 0.0144464 0.0693429 1 0 0 0 1 0 0 0 1 h {} -------QP subproblem for direction------- Minimize 1011.25d1+4045.d3+ 1 2 (d12 +d2 2 +d3 2 ) 0.0312222 + 0.0581778d2 + 0.0592267d3 0 0.191 + 0.03236d3 0 0.133214 0.0144464d1 0.0144464d2 0.0693429d3 0 Subject to 50 1.d1 0 10 1.d2 0 25 1.d3 0 -------Dual QP subproblem------- Minimize 239.541u1 + 131.087u2-295.234u3-961.25u4 + 10.u5-4020.u6 + 1 (u1(0.00689245u1 + 0.00191657u2-0.00494741u3 + 0.u4 2-0.0581778u5-0.0592267u6) + u2(0.00191657u1 + 0.001047169u2-0.00224394u3 + 0.u4 + 0.u5-0.03236u6) + u4(0.u1 + 0.u2 + 0.0144464u3 + 1.u4 + 0.u5 + 0.u6) + u5(-0.0581778u1 + 0.u2 + 0.0144464u3 + 0.u4 + 1.u5 + 0.u6) + u3(-0.00494741u1-0.00224394u2 + 0. 005225836u3 + 0.0144464u4 + 0.0l44464u5 + 0.0693429u6) + u6(-0.0592267u1-0.03236u2 + 0.0693429u3 + 0.u4 + 0.u5 + 1.u6)) Direction (52.3751 10.935-11.2685) d 54.6782 Lagrange multipliers (18094.4 0 73625.4 0 0 0) -------- Step length calculations -------- µ 182440 d 2 2989.71 φ 0 74999.2 γ 0.5 ---- Try α 1 Point (102.375 20.935 13.7315) Function values f g h 31232.5 { 0.195438, 0.555649, 0.46258, 102.375, 20.935, 13.7315} {} φ 116088. φ + αγd 2 117583. φ Test Fails ---- Try α 0.5 Point (76.1876 15.4675 19.3657) Function values f g h 46230.7 { 0.0332483, 0.373325, 0.205479, 76.1876, 15.4675, 19.3657} {} φ 83923.7 φ + αγd 2 84671.1 φ Test Fails ---- Try α 0.25 Point (63.0938 12.7338 22.1829) Function values f g h 50234.3 {0.0112018, 0.282162, 0.137532, 63.0938, 12.7338, 22.1829} {} φ 75463.1 φ + αγd 2 75836.8 φ Test Fails ---- Try α 0.125 Point (56.5469 11.3669 23.5914) Function values f g h 50920.9 {0.0242657, 0.236581, 0.12633, 56.5469, 11.3669, 23.5914} {} φ 74094.9 φ + αγd 2 74281.7 φ Test Passes Step length 0.125 New point {56.5469, 11.3669, 23.5914} NonOptimum point (d 56.5469 h 11.3669 w 23.5914) Iterations performed 1 124
5 NELINEARNA OPTIMIZACIJA POD OGRANIČENJIMA Optimalno rešenje se dobija nakon 9 iteracija. {sol, hist} = SQP[f, cons, vars, pt, Maxlterations 20 Optimum point (d 80.0277 h 13.3062 w 21.5298) Iterations performed 9 125
Literatura [1] M. Asghar Bhatti, Practical Optimization Methods With M athematica Applications, Springer-Verlag, New York, 2000. [2] Antonio J. Conejo, Enrique Castillo, Roberto Mínguez, Raquel Garca-Bertrand, Decomposition Techniques in Mathematical Programming, Springer-Verlag, Heidelberg, 2006. [3] George B. Dantzig, Mukund N. Thapa, Linear Programming 1: Introduction, Springer-Verlag, New York, 1997. [4] Anthony V. Fiacco, Mathematical Programming with Data Perturbations, Marcel Dekker, New York, 1998. [5] John Gray, Mastering Mathematica, Academic Press, Cambridge, 1994. [6] Sadri Hassani, Mathematical Methods Using Mathematica, Springer-Verlag, New York [7] Hartmut F. W. Höft, Margret Höft, Computing with Mathematica Second Edition, Academic Press Elsevier Science, San Diego, 2003. [8] David G. Luenberger, Yinyu Ye, Linear and Nonlinear Programming Third Edition, Springer Science+Business Media, New York, 2008. [9] Roman E. Maeder, Computer Science with Mathematica, Cambridge University Press, New York, 2000. [10] David McMahon, Daniel M. Topa, A Beginners Guide to Mathematca, Chapman & Hall/CRC Taylor & Francis Group, 2006. [11] Jorge Nocedal, Stephen J. Wright, Numerical Optimization, Springer-Verlag, New York, 1999. [12] Inna Shingareva, Carlos Lizárraga-Celaya, Maple and Mathematica, Springer- Verlag, Wien, 2007. [13] Cameroon Smith, Nancy Blachman, The Mathematica Graphics Guidebook, Addison-Wesley Publishing Company, New York, 1995. [14] P.S. Stanimirović, N.V. Stojković, M.D. Petković, Matematičko Programiranje, Prirodno-Matematički fakultet, Niš, 2007. [15] Michael Trott, The Mathematica GuideBook for Numerics, Springer Science+Business Media, New York, 2006. [16] Stan Wagon, Mathematica in Action Third Edition, Springer Science+Business Media, New York, 2010.
LITERATURA [17] Paul R. Wellin, Richard J. Gaylord, Samuel N. Kamin, An Introduction to Programming with Mathematica Third Edition, Cambridge University Press, New York, 2005. [18] Stephen Wolfram, The Mathematica Book, 5th ed., Wolfram Media, 2003. [19] Wolfram M athematica Tutorial Collection, Unconstrained Optimization, Wolfram Research, 2008. [20] Wolfram M athematica Tutorial Collection, Constrained Optimization, Wolfram Research, 2008. 127
Прилог 5/1 ПРИРОДНO - MАТЕМАТИЧКИ ФАКУЛТЕТ НИШ КЉУЧНА ДОКУМЕНТАЦИЈСКА ИНФОРМАЦИЈА Редни број, РБР: Идентификациони број, ИБР: Тип документације, ТД: Тип записа, ТЗ: Врста рада, ВР: Аутор, АУ: Ментор, МН: Наслов рада, НР: монографска текстуални / графички мастер рад Далибор Спасић Предраг Станимировић ОПТИМИЗАЦИЈА У ПРОГРАМСКОМ ПАКЕТУ МАТHЕМАТICА И ПРИМЕНЕ Језик публикације, ЈП: Језик извода, ЈИ: Земља публиковања, ЗП: Уже географско подручје, УГП: српски енглески Р. Србија Р. Србија Година, ГО: 2013. Издавач, ИЗ: ауторски репринт Место и адреса, МА: Ниш, Вишеградска 33. Физички опис рада, ФО: (поглавља/страна/ цитата/табела/слика/графика/прилога) Научна област, НО: Научна дисциплина, НД: Предметна одредница/кључне речи, ПО: УДК Чува се, ЧУ: 127 стр. ; граф. прикази Рачунарске науке Oперациона истраживања Оптимизација, Минимум функције 004.432.42 Mathematica библиотека Важна напомена, ВН: Извод, ИЗ: У овом мастер раду је описана формулација проблема оптимизације, описане су методе за оптимизацију без ограничења и методе за оптимизацију под ограничењима. Представљена је имплементација ових метода у програмском пакету Mathematica, као и њихова примена код решавања конкретних проблема. Датум прихватања теме, ДП: Датум одбране, ДО: Чланови комисије, КО: Председник: Члан: Члан, ментор: Образац Q4.09.13 - Издање 1
ПРИРОДНО - МАТЕМАТИЧКИ ФАКУЛТЕТ НИШ Прилог 5/2 KEY WORDS DOCUMENTATION Accession number, ANO: Identification number, INO: Document type, DT: Type of record, TR: Contents code, CC: Author, AU: Mentor, MN: Title, TI: monograph textual / graphic university degree thesis (master thesis) Dalibor Spasić Predrag Stanimirović OPTIMIZATION WITH MATHEMATICA APPLICATIONS Language of text, LT: Language of abstract, LA: Country of publication, CP: Locality of publication, LP: Serbian English Serbia Serbia Publication year, PY: 2013 Publisher, PB: author s reprint Publication place, PP: Niš, Višegradska 33. Physical description, PD: (chapters/pages/ref./tables/pictures/graphs/appendixes) Scientific field, SF: Scientific discipline, SD: Subject/Key words, S/KW: 127 p. ; graphic representations Computer Science Operational Researches Optimization, Minimum UC 004.432.42 Mathematica Holding data, HD: library Note, N: Abstract, AB: Optimization problem formulation, unconstrained optimization methods and constrained optimization methods are described in this master thesis. Implementation of this methods in Mathematica and their use for solving different problems is also presented. Accepted by the Scientific Board on, ASB: Defended on, DE: Defended Board, DB: President: Member: Member, Mentor: Образац Q4.09.13 - Издање 1