Luento 10: Optimointitehtävien numeerinen ratkaiseminen; optimointi ilman rajoitusehtoja Seuraavassa esitetään optimointitehtävien numeerisia ratkaisumenetelmiä, eli optimointialgoritmeja, keittokirjamaisesti. Jos ratkaisumenetelmässä ratkaistaan tehtävän välttämättömiä ehtoja, esim. Lagrangen välttämättömiä ehtoja, jolloin esiintyy vain yhtälörajoituksia, puhumme epäsuorista ratkaisumenetelmistä. Jos taas optimipistettä etsitään suoraan, esim. lasku- tai noususuuntia käyttäen, kyseessä on suora menetelmä. Tällöin voimme käyttää luennoilla 8 ja 9 esitettyä teoriaa, esim. välttämättömiä ja riittäviä ehtoja, menetelmien suppenemistarkasteluissa, jotka tässä sivuutetaan. Monet mutkikkaammat optimointialgoritmit ovat yhdistelmiä yksinkertaisemmista perusalgoritmeista. Esimerkiksi, melkein kaikissa n-ulotteisissa algoritmeissa on osana jonkinlainen 1-ulotteinen haku, jolla määrätään perusmenetelmän optimaalinen askelpituus. 1-ulotteiset optimointialgoritmit Menetelmät, joissa ei käytetä derivaattoja: Esim. tasahaku, puolitusmenetelmä eli dikotoominen haku, kultaisen leikkauksen menetelmä, Fibonaccin menetelmä sekä neliöllinen ja kuutiollinen sovitus. Derivaattoja käyttäviä menetelmiä ovat Newtonin menetelmä ja sen johdannaiset. Puolitusmenetelmä Oletetaan yksinkertaisuuden vuoksi, että f : [a, b ] R on aidosti kvasikonveksi: z, λ, µ [a, b ] ja z (λ, µ) on f(z) < max{f(λ), f(µ)}. Jos edellä on -merkki, sanomme, että f on kvasikonveksi., ks. kuva 1. Funktio f : [a, b ] R on kvasikonkaavi, jos f on kvasikonveksi. Tutkimme seuraavassa numeerisesti aidosti kvasikonveksin funktion minimointia tai aidosti kvasikonkaavin funktion maksimointia. Kun etsitään funktion f minimiä välillä [a, b ], ko. väliä kutsutaan epävarmuusväliksi, se on siis väli, missä f:n minimi x tämän hetkisen tiedon nojalla on. Luku l = b a on epävarmuusvälin pituus. 1
y f x Kuva 1: Kvasikonveksi funktio Aidosti kvasikonveksin funktion kuvaajalla ei ole vaakasuoria pätkiä; kvasikonveksin funktion kuvaajalla voi olla. Lause Olkoon f aidosti kvasikonveksi ja λ, µ [a, b ], λ < µ. Lasketaan f(λ) ja f(µ). Tällöin: (a) f(λ) > f(µ) uusi epävarmuusväli on [λ, b ]. (b) f(λ) f(µ) uusi epävarmuusväli on [a, µ ]. Tod. Ks. kuva 2. 01 f( λ) 01 f( µ ) 01 f( µ ) 01 f( λ) a λ µ b a λ µ b 01 01 01 uusi epävarmuusväli Kuva 2: Epävarmuusvälin kutistuminen Esitetään puolitusmenetelmä numeerisen algoritmin muodossa, jonka voi koodata esimerkiksi Matlabilla. 2
Puolitusmenetelmä: 0. Valitaan δ > 0, ja lopullisen epävarmuusvälin pituus l > 0; molemmat pieniä. Olk. [a, b ] alkuperäinen väli. 1. b a < l, stop. Minimi välillä [a, b ]. Muuten x 1 = a + b a 2 δ 2, 2. f(x 1 ) > f(x 2 ) a = x 1, b = b f(x 1 ) f(x 2 ) a = a, b = x 2. go to 1. x 2 = a + b a 2 + δ 2 Kultaisen leikkauksen menetelmä (golden section method) Kultaisen leikkauksen suhde on: a/(a + b) = b/a = α α 2 + α 1 = 0 α 0.618 Valitaan iteroinnilla k: λ k = a k + (1 α)(b k a k ) µ k = a k + α(b k a k ), missä [a k, b k ] on k:s väli, ja λ k ja µ k uudet laskentapisteet. a k λ k µ k b k a k+1 λ k+1 µ k+1 b k+1 f( ) > λ k f( µ k ) f( λ k ) 01< f( µ k ) a k+1 λ k+1 µ k+1 b k+1 Kuva 3: Kultaisen leikkauksen menetelmä Pätee: b k+1 a k+1 = α(b k a k ). Siis: kun k = 1 lasketaan f(λ 1 ), f(µ 1 ), ja kun k > 1 lasketaan vain 1 arvo: joko f(λ k ) tai f(µ k ), sillä on joko λ k+1 = µ k tai µ k+1 = λ k. 3
Fibonaccin menetelmä Kuten kultaisen leikkauksen menetelmässä, 1. kerralla lasketaan 2 funktion arvoa, mutta seuraavilla kerroilla tarvitsee laskea vain 1 uusi funktion arvo. Menetelmä perustuu ns. Fibonaccin lukujen ominaisuuksiin, jotka määritellään rekursiivisesti: F n+1 = F n + F n 1 ; n = 1, 2,... F 0 = F 1 = 1 Ensimmäiset F-luvut ovat siis: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,... Iteroinnoilla k valitaan: λ k = a k + F n k 1 F n k+1 (b k a k ) µ k = a k + F n k F n k+1 (b k a k ) b k+1 a k+1 = F n k F n k+1 (b k a k ) Lisäksi joko λ k+1 = µ k tai µ k+1 = λ k. Toisin kuin kultaisen leikkauksen menetelmässä, f:n arvon laskujen lukumäärä n pitää kiinnittää etukäteen. Jos esim. halutaan tarkkuus l, pitää n valita s.e. (b 1 a 1 )/F n < l. Newtonin menetelmä Pisteestä x k tiedetään f(x k ), f (x k ), f (x k ). f:n kvadraattinen approksimaatio on q(x) := f(x k ) + f (x k )(x x k ) + 1 2 f (x k )(x x k ) 2 Saadaan estimaatti x k+1, f(x):n minimille: 0 = q (x k+1 ) = f (x k ) + f (x k )(x k+1 x k ) x k+1 = x k f (x k ) f (x k ) 4
q (x) f (x) g ( x k ) g (x) x k+1 x k x k+1 x k Kuva 4: Funktion minimointi Newtonin menetelmällä; funktion 0-kohdan etsintä Newtonin menetelmällä. Muista: Newtonin menetelmä yhtälön g(x) = 0, esimerkiksi g = f, ratkaisemiseksi; ks. kuvan 4 oikea puoli. Kuvasta 4: g(x k ) x k x k+1 = g (x k ) x k+1 = x k g(x k) g (x k ) Newtonin iterointi differenssiapproksimaatiolla Eo. iterointikaavoissa voidaan käyttää erilaisia differenssiarvioita: Sekanttimenetelmä f (x) f(x + h) f(x) =, h > 0 ja pieni h f (x) g(x + h) g(x) = ; g := f (x) h f (x) f(x + h) + f(x h) 2f(x) = h 2 Sekanttimenetelmässä iteraatiossa k+1 Newtonin menetelmän [f (x k )] 1 korvataan arviolla, joka lasketaan x k :n ja x k 1 :n avulla; ks. myös n-ulotteinen sekanttimenetelmä myöhemmin: [ ] f (x k ) f 1 (x k 1 ) x k+1 = x k f (x k ) x k x }{{ k 1 } =f (x k ) 1 5
n-ulotteiset derivaattoja käyttävät menetelmät Jos f : R n R, ns. suorat haut ovat yleisesti muotoa: 0. Valitse alkupiste x 1, ja k = 1 1. Generoi laskusuunta d k ; noususuunta, kun maksimoidaan Laske askelpituus α k x k+1 = x k + α k d k 2. Lopputesti: esim. x k+1 x k < ɛ. Jos jatketaan k k +1; go to 1. Muista. d laskusuunta, f(x) T d < 0, f(x+λd) < f(x) λ (0, δ), jollakin δ > 0 f vähenee ko. suunnassa. d noususuunta, f(x) T d > 0, f(x+λd) > f(x) λ (0, δ), jollakin δ > 0 f kasvaa ko. suuntaan. Optimaalinen askelpituus saadaan, kun lasketaan ao. tehtävän ratkaisu α k : min f(x k + αd k ), α L missä L = {α α 0} tai {α a α b} tai joku muu sopiva joukko. Huom. θ(α) := f(x k + αd k ) θ (α) = f(x k + αd k ) T d, ja θ (α) = 0, jos minimi α L:n sisäpisteessä. Gradienttimenetelmä (steepest descent method) x k+1 = x k α k f(x k ) ja α k on optimaalinen askelpituus. Muista luennon 8 lopusta, että suunta d k = f(x k ) on lokaalissa mielessä jyrkimmän laskun suunta. Siis: 0. Valitaan ɛ > 0, x 1, k = 1 1. g k := f(x k ), α k ratkaisee tehtävän min α 0 f(x k αg k ) x k+1 = x k α k g k 2. g k+1 < ɛ stop; muuten k k + 1, go to 1. 6
Huom. Kun f:ää maksimoidaan, valitaan d k :ksi noususuunta f(x k ). Tällöin gradienttimenetelmästä käytetään nimeä steepest ascent method. Newtonin menetelmä Funktion f : R n R kvadraattinen approksimaatio on: q(x) := f(x k ) + f(x k ) T (x x k ) + 1 2 (x x k) T H(x k )(x x k ) q:n minimin välttämätön ehto: 0 = q(x k ) = f(x k ) + H(x k )(x x k ) x k+1 = x k H(x k ) 1 f(x k ) Lause Jos f(x) = 0, f kahdesti jatkuvasti differentioituva, ja H(x) positiivisesti definiitti H(x) 1 eräässä x:n ympäristössä, ja menetelmä on tällöin hyvin määritelty. Lisäksi x k x 0, k, ja c > 0 s.e. x k+1 x < c x k x 2, kun k on riittävän suuri. Tällöin sanotaan, että menetelmän konvergenssimäärä, iteraatiota kohti, on vähintään 2 (order two rate of convergence). Sekanttimenetelmät Newtonin menetelmässä suunta d k valitaan s.e. d k = H(x k ) 1 f(x k ) ja viivahakua ei yleensä suoriteta: x k+1 = x k + d k. Sekanttimenetelmä, eli kvasi-newton-menetelmä, eli Broydenin menetelmä sopii erityisesti tilanteisiin, joissa f:n Hessen matriisi, tai sen käänteismatriisi, on vaikea tai raskas laskea. Sekanttimenetelmässä H(x k ) 1 :lle muodostetaan arvio B k pelkkien gradienttien avulla. Muista ns. 1-ulotteinen sekanttimenetelmä aiemmin. Nyt valitaan d k = B k f(x k ), missä B k on symmetrinen ja positiivisesti definiitti d k laskusuunta, so. f(x k ) T d k = f(x k ) T B k f(x k ) < 0. Lisäksi B k :n tulee toteuttaa ns. sekanttiehto: B 1 k (x k x k 1 ) = f(x k ) f(x k 1 ) Sekanttimenetelmässä on lisäksi viivahaku suuntaan d k. 7
Yleisimmin käytetyt sekanttimenetelmät ovat DFP- ja BFGS-menetelmät, jotka kuuluvat ns. Broydenin perheeseen. (DFP = Davidon-Fletcher-Powell; BFGS = Broyden-Fletcher-Goldfarb-Shanno) Esim. Davidon-Fletcher-Powell-menetelmä. Valitaan B 1 = I ja B k+1 = B k + y T k y k B k s T k s k B k, k = 1, 2,... y kt s k s kt B k s k y k := x k+1 x k, s k := f(x k+1 ) f(x k ) Konjugaattigradienttimenetelmä (Fletcher-Reevesin menetelmä) Olkoon H R n n positiivisesti definiitti. Vektorit d 1,..., d n ovat H-konjugaatteja, jos d i T H d j = 0, i j. H positiivisesti definiitti, d 1,..., d n lineaarisesti riippumattomia. Minimoitaessa 2. asteen funktiota f(x) = 1 2 xt H x k + c T x menetelmällä x k+1 = x k + α k d k, missä d k :t ovat H-konjugaatteja minimi löytyy viimeistään n:nnellä askeleella riippumatta aloituspisteestä x 1. Fletcher-Reevesin menetelmässä valitaan suunnat d k seuraavasti: d 1 := f(x 1 ) (= H x 1 c, jos f yo. muotoa) d k := f(x k ) + β k d k 1 β k := f(x k) 2, k = 2, 3,..., n f(x k 1 ) 2 Jos jatketaan (esim. numeerinen viivahaku ei koskaan ole tarkka minimin laskeminen voi viedä yli n askelta; tai jos minimoidaan ei-kvadraattista funktiota eo. menetelmällä), aloitetaan alusta, ja valitaan d n+1 := f(x n+1 ), jne... Myös DFP-menetelmä tuottaa (minimoitaessa eo. 2. asteen funktiota) H- konjugaatteja suuntia. 8