Optimointialgoritmit. Marko M. Mäkelä. Turun yliopisto Matematiikan laitos

Samankaltaiset tiedostot
Luento 10: Optimointitehtävien numeerinen ratkaiseminen; optimointi ilman rajoitusehtoja

. Kun p = 1, jono suppenee raja-arvoon 1. Jos p = 2, jono hajaantuu. Jono suppenee siis lineaarisesti. Vastaavasti jonolle r k+1 = r k, suhde on r k+1

Yhden muuttujan funktion minimointi

Keskeiset tulokset heikko duaalisuus (duaaliaukko, 6.2.1) vahva duaalisuus (6.2.4) satulapisteominaisuus (6.2.5) yhteys KKT ehtoihin (6.2.

Luento 8: Epälineaarinen optimointi

Kimppu-suodatus-menetelmä

Malliratkaisut Demot

Luento 11: Rajoitusehdot. Ulkopistemenetelmät

Luento 8: Epälineaarinen optimointi

Este- ja sakkofunktiomenetelmät

Osakesalkun optimointi. Anni Halkola Turun yliopisto 2016

Malliratkaisut Demot

1 Kertaus. Lineaarinen optimointitehtävä on muotoa:

12. Hessen matriisi. Ääriarvoteoriaa

Numeeriset menetelmät TIEA381. Luento 12. Kirsi Valjus. Jyväskylän yliopisto. Luento 12 () Numeeriset menetelmät / 33

Duaalisuus kokonaislukuoptimoinnissa. Mat , Sovelletun matematiikan tutkijaseminaari, kevät 2008, Janne Karimäki

Numeeriset menetelmät

Malliratkaisut Demot

Oletetaan ensin, että tangenttitaso on olemassa. Nyt pinnalla S on koordinaattiesitys ψ, jolle pätee että kaikilla x V U

Epälineaaristen yhtälöiden ratkaisumenetelmät

Malliratkaisut Demo 1

Osakesalkun optimointi

Luento 12: Duaalitehtävä. Tarkennuksia Lagrangen kertoimen tulkintaan. Hajautettu optimointi.

1 Lineaariavaruus eli Vektoriavaruus

, on säännöllinen 2-ulotteinen pinta. Määrää T x0 pisteessä x 0 = (0, 1, 1).

b 1. b m ) + ( 2b Ax) + (b b)

Taustatietoja ja perusteita

MS-A0204 Differentiaali- ja integraalilaskenta 2 (ELEC2) Luento 6: Ääriarvojen luokittelu. Lagrangen kertojat.

Optimaalisuusehdot. Yleinen minimointitehtävä (NLP): min f(x) kun g i (x) 0 h j (x) = 0

Numeeriset menetelmät

Avaruuden R n aliavaruus

Matematiikan johdantokurssi, syksy 2016 Harjoitus 11, ratkaisuista

Gradient Sampling-Algoritmi

1 sup- ja inf-esimerkkejä

MS-A0204 Differentiaali- ja integraalilaskenta 2 (ELEC2) Luento 7: Pienimmän neliösumman menetelmä ja Newtonin menetelmä.

Inversio-ongelmien laskennallinen peruskurssi Luento 7 8

Luento 9: Yhtälörajoitukset optimoinnissa

802320A LINEAARIALGEBRA OSA I

MS-A0205/MS-A0206 Differentiaali- ja integraalilaskenta 2 Luento 6: Ääriarvojen luokittelu. Lagrangen kertojat.

Harjoitus 6 ( )

Matematiikan tukikurssi

1 Määrittelyjä ja aputuloksia

2 Konveksisuus ja ratkaisun olemassaolo

Matematiikan tukikurssi

Demo 1: Simplex-menetelmä

MATEMATIIKAN JA TILASTOTIETEEN LAITOS

1 Rajoittamaton optimointi

Lineaarikombinaatio, lineaarinen riippuvuus/riippumattomuus

Luento 12: Duaalitehtävä. Tarkennuksia Lagrangen kertoimen tulkintaan. Hajautettu optimointi.

Lineaarinen optimointitehtävä

Luku 2. Jatkuvien funktioiden ominaisuuksia.

Lineaarinen yhtälöryhmä

Ratkaisuehdotus 2. kurssikoe

MS-A0207 Differentiaali- ja integraalilaskenta 2 (Chem) Yhteenveto, osa I

Cantorin joukon suoristuvuus tasossa

1 Supremum ja infimum

Johdatus matematiikkaan

Sekalaiset tehtävät, 11. syyskuuta 2005, sivu 1 / 13. Tehtäviä

Vapaus. Määritelmä. jos c 1 v 1 + c 2 v c k v k = 0 joillakin c 1,..., c k R, niin c 1 = 0, c 2 = 0,..., c k = 0.

Matematiikan tukikurssi, kurssikerta 3

Dierentiaaliyhtälöistä

Täydellisyysaksiooman kertaus

Likimääräisratkaisut ja regularisaatio

1. Osoita, että joukon X osajoukoille A ja B on voimassa toinen ns. de Morganin laki (A B) = A B.

TEKNILLINEN KORKEAKOULU Systeemianalyysin laboratorio. Kimmo Berg. Mat Optimointioppi. 9. harjoitus - ratkaisut

Ellipsoidimenetelmä. Samuli Leppänen Kokonaislukuoptimointi. S ysteemianalyysin Laboratorio

Ratkaisuehdotus 2. kurssikokeeseen

Positiivitermisten sarjojen suppeneminen

Injektio (1/3) Funktio f on injektio, joss. f (x 1 ) = f (x 2 ) x 1 = x 2 x 1, x 2 D(f )

Talousmatematiikan perusteet: Luento 12. Lineaarinen optimointitehtävä Graafinen ratkaisu Ratkaisu Excel Solverilla

Konjugaattigradienttimenetelmä

1 sup- ja inf-esimerkkejä

2 Osittaisderivaattojen sovelluksia

min x x2 2 x 1 + x 2 1 = 0 (1) 2x1 1, h = f = 4x 2 2x1 + v = 0 4x 2 + v = 0 min x x3 2 x1 = ± v/3 = ±a x 2 = ± v/3 = ±a, a > 0 0 6x 2

Derivaatta: funktion approksimaatio lineaarikuvauksella.

6. Differentiaaliyhtälösysteemien laadullista teoriaa.

JAKSO 2 KANTA JA KOORDINAATIT

Harjoitus 6 ( )

Numeeriset menetelmät

r > y x z x = z y + y x z y + y x = r y x + y x = r

MS-C1340 Lineaarialgebra ja

Matematiikan tukikurssi

FUNKTIONAALIANALYYSIN PERUSKURSSI Johdanto

Funktion raja-arvo ja jatkuvuus Reaali- ja kompleksifunktiot

Numeeriset menetelmät

3.1 Väliarvolause. Funktion kasvaminen ja väheneminen

Matematiikan tukikurssi

Analyysi III. Jari Taskinen. 28. syyskuuta Luku 1

1 Reaaliset lukujonot

(iv) Ratkaisu 1. Sovelletaan Eukleideen algoritmia osoittajaan ja nimittäjään. (i) 7 = , 7 6 = = =

Analyysi 1. Harjoituksia lukuihin 1 3 / Syksy Osoita täsmällisesti perustellen, että joukko A = x 4 ei ole ylhäältä rajoitettu.

Matematiikan peruskurssi 2

1 Sisätulo- ja normiavaruudet

IV. TASAINEN SUPPENEMINEN. f(x) = lim. jokaista ε > 0 ja x A kohti n ε,x N s.e. n n

Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9

Malliratkaisut Demot

6. Luennon sisältö. Lineaarisen optimoinnin duaaliteoriaa

Kuva 1: Funktion f tasa-arvokäyriä. Ratkaisu. Suurin kasvunopeus on gradientin suuntaan. 6x 0,2

Diofantoksen yhtälön ratkaisut

Matematiikan tukikurssi

Transkriptio:

Optimointialgoritmit Marko M. Mäkelä Turun yliopisto Matematiikan laitos Syksy 2014

Sisältö Esipuhe 1 I Johdanto 2 1 Algoritmit ja algoritminen kuvaus 2 2 Suljettu kuvaus ja konvergenssi 4 3 Yhdistetyt kuvaukset 8 4 Algoritmien vertailuperusteita 12 4.1 Yleisyys, luotettavuus ja tarkkuus....................... 12 4.2 Herkkyys parametrien ja datan suhteen.................... 13 4.3 Valmistelu- ja laskuaika eli algoritmin tehokkuus............... 13 4.4 Konvergenssi.................................. 13 II Yksiulotteinen optimointi eli viivahaku 15 5 Viivahaku ilman derivaattoja 15 5.1 Tasavälinen haku................................ 16 5.2 Puolitusmenetelmä............................... 16 5.3 Kultaisen leikkauksen menetelmä eli jatkuvasuhdehaku........... 18 5.4 Fibonacci-menetelmä.............................. 21 5.5 Kultaisen leikkauksen menetelmän ja Fibonacci-menetelmän vertailua... 26 5.6 Yhteenveto................................... 27 6 Viivahaku derivaattoja käyttäen 29 6.1 Bisektiomenetelmä............................... 29 6.2 Newtonin menetelmä.............................. 30 6.3 Sekanttimenetelmä............................... 30 6.4 Kuutiopolynomi................................. 31 7 Muita viivahakumenetelmiä 34 7.1 Toisen asteen polynomiapproksimaatio.................... 34 7.2 Epätarkka viivahaku.............................. 35 8 Viivahakukuvauksen sulkeutuneisuus 38 III Moniulotteinen rajoitteeton optimointi 39

9 Suorat menetelmät 39 9.1 Syklisten koordinaattien menetelmä...................... 39 9.2 Hooke Jeeves-menetelmä............................ 40 9.3 Rosenbrockin menetelmä............................ 43 9.4 Polytooppimenetelmä.............................. 47 9.5 Satunnaisten suuntien menetelmät...................... 48 10 Derivaattoja käyttävät klassiset menetelmät 51 10.1 Nopeimman laskeutumisen menetelmä (NLM)................ 51 10.2 Newtonin menetelmä.............................. 58 10.3 Levenberg Marquardt-algoritmi........................ 61 10.4 Luottamusaluealgoritmi............................ 62 10.5 Dog leg -algoritmi............................... 65 11 Konjugaattisuuntien menetelmät 66 11.1 Konjugaattisuuntien merkitys......................... 66 11.2 Davidon Fletcher Powell-menetelmä (DFP)................. 70 11.3 Broydenin perhe ja BFGS........................... 77 11.4 Skaalaus..................................... 80 11.5 Konjugaattigradienttimenetelmät....................... 82 11.6 Powellin algoritmi................................ 88 11.7 Zangwillin algoritmi.............................. 90 11.8 PARTAN-menetelmä.............................. 91 11.9 Vertailu..................................... 94 IV Rajoitteinen optimointi 96 12 Sakko- ja reunafunktiomenetelmät 97 12.1 Sakkofunktion käsite.............................. 97 12.2 Ulkopuolinen sakkofunktiomenetelmä..................... 99 12.3 KKT-kertoimet ja sakkofunktiomenetelmä.................. 103 12.4 Eksakti sakkofunktiomenetelmä........................ 104 12.5 Lisätyn Lagrangen funktion menetelmä.................... 106 12.6 Reunafunktiomenetelmät............................ 109 13 Sallittujen suuntien menetelmät 116 13.1 Lineaariset rajoitteet.............................. 116 13.2 Epälineaariset epäyhtälörajoitteet....................... 124 13.3 Topkis Veinott-muunnelma.......................... 132 2

14 Rosenin gradientin projisiointi 134 15 Redusoidun gradientin menetelmä 146 16 Peräkkäiset kvadraattiset approksimaatiot (SQP-menetelmä) 153 16.1 Yhtälörajoitteet................................. 153 16.2 Epäyhtälörajoitteet............................... 154 16.3 Kvasi-Newton-approksimaatio......................... 155 16.4 Globaalisesti konvergoiva muunnos...................... 156 17 Lineaariset approksimaatiot 159 17.1 Peräkkäisten lineaaristen approksimaatioiden menetelmä.......... 159 17.2 Leikkaustasoalgoritmi.............................. 163 LIITTEET 169 Ohjelmistot 169 Kirjallisuutta 176 3

Esipuhe Optimointialgoritmit on optimoinnin syventävä kurssi, jonka esitietoina oletetaan kuunnelluksi kurssi Konveksi analyysi ja optimointi. Kurssilla tutustutaan erilaisiin epälineaarisen optimoinnin menetelmiin ja ratkaisualgoritmeihin, joiden avulla optimointitehtäviä voidaan ratkaista numeerisesti tietokoneen avulla. Kurssilla tarkastellaan klassista (sileää, lokaalia ja yksitavoitteista) yksi- ja moniulotteista rajoitteeetonta sekä rajoitteista optimointia. Itse algoritmien lisäksi käydään läpi niiden konvergenssi-, tehokkuus-, ym. ominaisuuksia. Lopuksi esitellään vielä joitakin saatavilla olevia ohjelmistoja. Menetelmien suuresta lukumäärästä johtuen niitä on ymmärrettävyytensä parantamiseksi pyritty ryhmittelemään ja luokittelemaan ominaisuuksiensa mukaan. Yleisimmin luokittelua tehdään sen pohjalta käyttääkö menetelmä derivaattainformaatioita vaiko ei. Menetelmää kutsutaan suoraksi (tai derivaattavapaaksi), jos se hyödyntää toiminnassaan ainoastaan funktion arvoja eikä lainkaan derivaattaa tai gradienttia. Moniulotteisessa rajoitteettomassa optimoinnissa käsitellään lisäksi omana ryhmänään menetelmät, jotka hyödyntävät konjugaattisuutta. Rajoitteisessa optimoinnissa suoralla menetelmällä puolestaan ymmärretään sellaista algoritmia, joka käsittelee rajoitteita eksplisiittisesti. Sen sijaan epäsuorat menetelmät pyrkivät muuntamaan tehtävän ensiksi rajoitteettomaksi käyttäen esimerkiksi sakkofunktiota tai Lagrangen funtiota. Luentomoniste on laadittu emeritusprofessori Ulla Pursiheimon vuonna 1998 kirjoittaman samannimisen monisteen pohjalta. Kyseisen monisteen lähteenä on käytetty pääasiassa teoksen [1] lukuja 7 10. Ohjelmistoja koskeva liite perustuu verkkojulkaisuun [7]. Kirjallisuusliitteessä on lueteltu lisäksi muita alaa koskevia klassikkoteoksia, joita ei ole käytetty suoraan tämän monisteen lähdekirjoina. Erityiskiitos Rami Rakkolaiselle tekstin huolellisesta ladonnasta ja kuvien tuottamisesta. Turussa syksyllä 2010 Marko M. Mäkelä 1

Osa I Johdanto 1 Algoritmit ja algoritminen kuvaus Tehtävän min f(x) (1.1) s. t. x S ratkaisutapa eli algoritmi on iteratiivinen prosessi, joka generoi jonon pisteitä tiettyjen sääntöjen mukaan ja lopettaa, kun tietty lopetuskriteeri astuu voimaan. Määritelmä 1.1. Olkoon piste x k annettu. Käyttämällä algoritmin sääntöjä saadaan seuraava piste x k+1. Tämä prosessi on nimeltään algoritminen kuvaus, josta käytetään merkintää A. Kuvaus on yleisemmin pisteeltä joukolle oleva kuvaus, joka liittää jokaiseen joukon X pisteeseen jonkin joukon X osajoukon. Algoritminen kuvaus määrittelee alkupisteestä x 1 lähtien jonon x 1, x 2,..., missä x k+1 A(x k ) kaikilla indeksin k arvoilla. Siirtyminen pisteestä x k pisteeseen x k+1 edustaa algoritmin yhtä iteraatiokierrosta. Esimerkki 1.2. Tarkastellaan tehtävää min x 2 s. t. x 1, jonka optimiratkaisu on x = 1. Olkoon pisteeltä pisteelle -kuvaus seuraava: A(x) = 1 (x + 1). 2 On helppo osoittaa, että kuvauksen generoima jono konvergoi kohti optimipistettä. Jos x 1 = 4, niin saadaan jono {4, 2.5, 1.75, 1.375,... }. Tarkastellaan toisena tapauksena pisteeltä joukolle olevaa kuvausta [ 1, 1 A(x) = (x + 1)], jos x 1 2 [ 1 (x + 1), 1], jos x < 1. 2 Jokaisen pisteen x kuva on suljettu väli ja mikä hyvänsä välin pisteistä voidaan valita seuraavaksi pisteeksi. Nytkin algoritmi konvergoi kohti optimipistettä. Esimerkiksi aloittamalla pisteestä x 1 = 4 saadaan yhdeksi mahdolliseksi pistejonoksi {4, 2, 1.2, 1.1, 1.02,... }. 2

(a) Pisteeltä pisteelle -kuvaus. (b) Pisteeltä joukolle -kuvaus. Kuva 1: Esimerkin 1.2 havainnollistus. Toivottavaa olisi, että algoritmi löytäisi globaalin optimipisteen, mutta näin ei aina käy. Monissa tapauksissa voidaan ja on pakko tyytyä vähempään. Yleensä algoritmi pysähtyy, kun jokin niin sanottu ratkaisujoukko Ω saavutetaan. Seuraavassa on esitetty joitakin esimerkkejä tehtävän (1.1) erilaisista ratkaisujoukoista: 1. Ω = {x x on tehtävän lokaali optimipiste}. 2. Ω = {x x S, f(x ) b}, missä b on jokin kohdefunktion hyväksyttävä raja. 3. Ω = {x x S, f(x ) LB + ε}, missä ε > 0 on annettu virheraja ja LB on optimiarvon alaraja. Tyypillinen alaraja saadaan Lagrangen duaalitehtävän avulla. 4. Ω = {x x S, f(x ) f < ε}, missä ε > 0 on annettu ja f on tunnettu globaalin optimin arvo. 5. Ω = {x x S, x y < ε}, missä ε > 0 on annettu ja y on tunnettu lokaali tai globaali optimipiste. 6. Ω = {x x on tehtävän KKT-piste}. 7. Ω = {x x on tehtävän Fritz John-piste}. Määritelmä 1.3. Algoritmi A : X X konvergoi eli suppenee joukossa Y X, jos jokaista aloituspistettä x 1 Y kohti sen generoiman jonon x 1, x 2,... mielivaltaisen konvergoivan osajonon rajapiste kuuluu ratkaisujoukkoon Ω. Jos Y = X, niin algoritmi konvergoi globaalisti eli lähtöpisteestä riippumatta. Jos Y X, niin algoritmi konvergoi lokaalisti. 3

2 Suljettu kuvaus ja konvergenssi Esimerkki 2.1. Tarkastellaan edelleen esimerkin 1.2 tapausta. Otetaan ratkaisujoukoksi globaali optimipiste eli Ω = {1} ja tarkastellaan kuvausta [ 3 A(x) = + 1x, 1 + 1x], jos x 2 2 4 2 1(x + 1), jos x < 2. 2 Jokaista aloituspistettä x 1 2 kohti algoritmin generoima jono konvergoi selvästi kohti pistettä ˆx = 2 / Ω. Toisaalta jokainen pisteestä x 1 < 2 alkava algoritmi konvergoi kohti optimipistettä x = 1. Kuva 2: Esimerkin 2.1 havainnollistus. Huomautus 2.2. Esimerkkien 1.2 ja 2.1 algoritmeilla on seuraavat ominaisuudet: 1. Jos x k S = {x x 1}, niin myös x k+1 S. 2. Jos x k S, mutta x k / Ω, niin f(x k+1 ) < f(x k ). 3. Jos x k S Ω, niin myös x k+1 S Ω. Esimerkin 1.2 algoritmit konvergoivat globaalisti, kun taas esimerkin 2.1 algoritmi konvergoi lokaalisti joukossa Y = (, 2). Määritelmä 2.3. Oletetaan, että X ja Y ovat epätyhjiä suljettuja joukkoja avaruuksissa R p ja R q. Olkoon A : X Y pisteeltä joukolle oleva kuvaus. Kuvaus A on suljettu pisteessä x X, jos siitä, että x k X, x k x y k A(x k ), y k y 4

seuraa y A(x). Kuvaus A on suljettu joukossa Z X, jos se on suljettu jokaisessa joukon Z pisteessä. Esimerkin 2.1 tapauksessa kuvaus ei ole suljettu, sillä jono {x k }, missä x k = 2 1 k konvergoi kohti pistettä x = 2, kun taas jono y k = A(x k ) = 3 1 konvergoi kohti pistettä 2 2k y = 3, mutta nyt y / A(x) = {2}. Sen sijaan esimerkin 1.2 molemmat algoritmit ovat 2 suljettuja. Seuraavassa konvergenssilauseessa on esitetty ne ehdot, jotka takaavat algoritmisen kuvauksen konvergenssin. Monen jäljempänä esitettävän algoritmin konvergenssi perustuu tähän tulokseen. Lause 2.4. Olkoon X epätyhjä suljettu joukko avaruudessa R n ja Ω X epätyhjä ratkaisujoukko. Algoritmi A : X X olkoon pisteeltä joukolle oleva kuvaus. Kun alkupiste x 1 X on annettu, niin jono {x k } generoidaan seuraavasti: Jos x k Ω, niin pysähdytään. Muutoin valitaan x k+1 A(x k ), korvataan k luvulla k + 1 ja toistetaan menettely. Oletetaan, että algoritmin generoima jono x 1, x 2,... sisältyy erääseen joukon X kompaktiin osajoukkoon ja oletetaan, että on olemassa jatkuva vähenemisfunktio α, jolle on voimassa α(y) < α(x), jos x / Ω ja y A(x). Jos algoritmi A on suljettu joukon Ω komplementissa, niin silloin algoritmi joko pysähtyy äärellisen askelmäärän jälkeen johonkin ratkaisujoukon Ω pisteeseen tai sitten se generoi päättymättömän jonon pisteitä {x k } siten, että 1. jokaisen jonon {x k } konvergoivan osajonon rajapiste kuuluu joukkoon Ω (eli algoritmi konvergoi) ja 2. on olemassa x Ω siten, että α(x k ) α(x). Todistus. Jos jollakin iteraatiokierroksella on saatu piste x k Ω, niin algoritmi pysähtyy. Oletetaan siis, että algoritmi generoi päättymättömän jonon pisteitä {x k }. Olkoon {x k } K jokin tämän jonon konvergoiva osajono ja x vastaava rajapiste. Koska α on jatkuva funktio, niin silloin α(x k ) α(x) indekseillä k K. Tämän nojalla jokaista annettua ε > 0 kohti on olemassa K K siten, että α(x k ) α(x) < ε, k K, k K. Erityisesti kun k = K, niin α(x K ) α(x) < ε. 5

Olkoon sitten k > K. Koska α on laskeva funktio, niin α(x k ) < α(x K ), jolloin edellisen nojalla saadaan α(x k ) α(x) = α(x k ) α(x K ) + α(x K ) α(x) < 0 + ε = ε. Koska tämä on voimassa kaikille indekseille k > K ja koska ε oli mielivaltainen, niin lim α(x k) = α(x). (2.1) k Osoitetaan seuraavaksi, että piste x Ω. Tehdään vastaoletus, että x / Ω ja tarkastellaan jonoa {x k+1 } K. Tämä on ääretön jono kompaktissa joukon X osajoukossa, joten sillä on konvergoiva osajono {x k+1 } K, jonka rajapiste olkoon x X. Nyt tuloksen (2.1) nojalla α(x) = α( x). Koska A on suljettu pisteessä x sekä x k x, x k+1 A(x k ) ja x k+1 x, kun k K, niin x A(x). Tällöin on oltava α( x) < α(x), mikä johtaa edellä saadun kanssa ristiriitaan ja näin ollen todistaa sen, että x Ω. Seuraus 2.5. Jos edellisessä lauseessa Ω = {x }, niin x k x. Huomautus 2.6. Jos x k / Ω, niin algoritmi generoi uuden iteraatiopisteen x k+1 siten, että α(x k + 1) < α(x k ). Vähenemisfunktioksi α valitaan usein suoraan kohdefunktio f, mutta esimerkiksi differentioituvassa rajoitteettomassa tapauksessa voidaan valita myös α(x) := f(x). Koska edellä olevan nojalla algoritmi saavuttaa ratkaisujoukon Ω yleensä vasta rajalla indeksin k lähestyessä ääretöntä, niin käytännön laskusuorituksia varten täytyy olla muita lopetussääntöjä. Seuraavassa on esitetty viisi tavallisesti käytettyä sääntöä, joissa ε on pieni positiivinen reaaliluku ja N on positiivinen kokonaisluku. 1. x k+n x k < ε. Algoritmi pysähtyy, jos pisteiden välinen etäisyys on pienempi kuin ε, kun pisteestä on edetty algoritmia käyttäen N askelta. 2. 3. x k+1 x k x k < ε, x k = 0. Algoritmi pysähtyy, jos suhteellinen etäisyys siirryttäessä pisteestä seuraavaan on pienempi kuin ε. α(x k ) α(x k+n ) < ε. Algoritmi pysähtyy, jos vähenemisfunktio pienenee vähemmän kuin määrän ε siirryttäessä pisteestä N askelta eteenpäin. 6

4. α(x k ) α(x k+1 ) α(x k ) < ε α(x k ) 0. Algoritmi pysähtyy, jos vähenemisfunktion suhteellinen pieneneminen on vähemmän kuin ε siirryttäessä pisteestä seuraavaan. 5. α(x k ) α(x ) < ε, x Ω. Algoritmi pysähtyy, jos vähenemisfunktio on riittävän lähellä jotakin ratkaisujoukon Ω antamaa arvoa. Tämä on käytännöllinen lopetussääntö silloin kun jostain syystä tunnetaan funktion α arvo ratkaisujoukossa. Edellä olevat lopetussäännöt perustuvat menetelmän konvergenssiin. Niiden lisäksi voidaan käyttää myös optimaalisuuehtoihin perustuvia sääntöjä. 7

3 Yhdistetyt kuvaukset Useissa optimoitimenetelmissä algoritmilliset kuvaukset koostuvat yhdistetyistä kuvauksista, joissa ensin pyritään etsimään hakusuunta d k ja sen jälkeen optimaalista askelpituutta λ k siten, että se minimoi yksiulotteisen funktion α(x k + λd k ). Määritelmä 3.1. Olkoot X R n, Y R p ja Z R q epätyhjiä suljettuja joukkoja sekä B : X Y ja C : Y Z pisteeltä joukolle olevia kuvauksia. Yhdistetty kuvaus A = CB määritellään pisteeltä joukolle olevana kuvauksena seuraavasti: A(x) = C(y). y B(x) Kuva 3: Yhdistetty kuvaus. Lause 3.2. Olkoot X R n, Y R p ja Z R q epätyhjiä suljettuja joukkoja. Oletetaan, että B : X Y ja C : Y Z ovat pisteeltä joukolle olevia kuvauksia ja tarkastellaan yhdistettyä kuvausta A = CB. Oletetaan, että B on suljettu pisteessä x ja C on suljettu joukossa B(x). Edelleen oletetaan, että jos x k x ja y k B(x k ), niin on olemassa jonon {y k } konvergoiva osajono. Tällöin yhdistetty kuvaus A on suljettu pisteessä x. Todistus. Oletetaan, että x k x, z k A(x k ) ja z k z. Nyt riittää osoittaa, että z A(x). Kuvauksen A määrittelyn nojalla jokaista indeksiä k kohti on olemassa y k B(x k ) siten, että z k C(y k ). Oletuksen nojalla on olemassa konvergoiva osajono {y k } K, jonka rajapiste olkoon y. Koska B on suljettu pisteessä x, niin y B(x). Edelleen koska C on suljettu joukossa B(x), niin se on suljettu pisteessä y ja näin ollen z C(y). Tästä seuraa, että z C(y) CB(x) = A(x), joten kuvaus A on suljettu pisteessä x. 8

Seuraus 3.3. Olkoot X R n, Y R p ja Z R q epätyhjiä suljettuja joukkoja sekä B : X Y ja C : Y Z pisteeltä joukolle olevia kuvauksia. Oletetaan, että kuvaus B on suljettu pisteessä x, kuvaus C on suljettu joukossa B(x) ja joukko Y on kompakti. Tällöin A = CB on suljettu pisteessä x. Seuraus 3.4. Olkoot X R n, Y R p ja Z R q epätyhjiä suljettuja joukkoja, kuvaus B : X Y jatkuva funktio pisteessä x ja kuvaus C : Y Z pisteeltä joukolle oleva kuvaus. Oletetaan, että kuvaus C on suljettu pisteessä B(x). Tällöin A = CB on suljettu pisteessä x. Esimerkki 3.5. Tarkastellaan kuvauksia B : R R ja C : R R, kun 1 B(x) =, x 0 x 0, x = 0 C(y) = {z z y }. Helposti nähdään, että kuvaukset ovat suljettuja kaikkialla. Tarkastellaan sitten yhdistettyä kuvausta A = CB, jolloin kuvaukseksi saadaan {z z 1 x }, x 0 A(x) = CB(x) = {z z B(x) } = {0}, x = 0. Nyt huomataan, ettei kuvaus A ole suljettu origossa. Tämän osoittamista varten valitaan jono {x k }, missä x k = 1. Tällöin k A(x k ) = {z z k}. Nyt piste z k = 1 kuuluu joukkoon A(x k ) kaikilla indeksin k arvoilla ja tämän jonon rajapiste on triviaalisti z = 1. Jonon {x k } rajapiste on nyt x = 0, mutta tällöin z = 1 / A(x) = {0}, eikä kuvaus siis ole suljettu. Kuitenkin molemmat kuvaukset B ja C olivat suljettuja. Syy onkin siinä, että jonolla y k = B(x k ) = k ei ole konvergoivaa osajonoa. Lause 3.6. Olkoon X epätyhjä suljettu joukko avaruudessa R n ja olkoon Ω X epätyhjä ratkaisujoukko. Olkoon α : R n R jatkuva funktio. Tarkastellaan pisteeltä joukolle olevaa kuvausta C : X X, jolle on voimassa α(y) α(x) ja y C(x), kun x X on annettu. Olkoon B : X X pisteeltä joukolle oleva suljettu kuvaus joukon Ω komplementissa ja oletetaan, että on voimassa α(y) < α(x), jos x / Ω ja y B(x). Tarkastellaan algoritmia, jonka määrää yhdistetty kuvaus A = CB. Olkoon x 1 annettu ja generoidaan jono {x k } seuraavasti: X 9

Jos x k Ω, niin pysähdytään. Muutoin valitaan x k+1 A(x k ), korvataan luku k luvulla k + 1 ja toistetaan menettely. Oletetaan, että joukko Λ = {x α(x) α(x 1 )} on kompakti. Silloin algoritmi joko pysähtyy äärellisen askelmäärän jälkeen johonkin ratkaisujoukon Ω pisteeseen tai sitten se generoi päättymättömän jonon pisteitä {x k } siten, että jokaisen jonon {x k } konvergoivan osajonon rajapiste kuuluu joukkoon Ω (eli algoritmi konvergoi). Todistus. Jos jollakin iteraatiokierroksella on saatu x k Ω, niin algoritmi päättyy jälleen äärellisenä. Oletetaan siis, että algoritmi generoi äärettömän jonon pisteitä {x k }. Olkoon {x k } K jokin sen konvergoiva osajono ja sen rajapiste olkoon x. Tällöin α(x k ) α(x), kun k K. Käyttämällä lauseen 2.4 tapaan hyväksi funktion α monotonisuutta saadaan lim α(x k) = α(x). (3.1) k Osoitetaan nyt, että x Ω. Tehdään vastaoletus, että x / Ω ja tarkastellaan jälleen jonoa {x k+1 } K. Kuvauksen A määrittelyn mukaan x k+1 C(y k ) ja y k B(x k ). Nyt x k+1, y k Λ, joka oletuksen nojalla on kompakti joukko. Tällöin on olemassa indeksijoukko K K siten, että y k y ja x k+1 x, kun k K. Koska kuvaus B on suljettu pisteessä x / Ω, niin y B(x) ja α(y) < α(x). Koska x k+1 C(y k ), niin oletuksen nojalla α(x k+1 ) α(y k ) kaikilla indekseillä k K. Tästä saadaan α( x) α(y) menemällä rajalle k. Koska α(y) < α(x), niin α( x) < α(x), mikä on ristiriidassa tuloksen (3.1) kanssa, kun x k+1 x, missä k K. Siis vastaoletus on väärin ja lauseen väite on todistettu. Huomautus 3.7. Edellisessä lauseessa 1. kuvauksen C ei tarvitse olla suljettu. 2. joukko Λ on tasojoukko S α(x1 ). Seuraava lause osoittaa, että melko vähäisin oletuksin suuri joukko optimointialgoritmeja antaa ratkaisun. Lauseen todistusta ei tässä esitetä, mutta se löytyy teoksen [1] luvusta 7.3. Lause 3.8. Olkoon funktio f : R n R differentioituva ja tarkastellaan minimointitehtävää min x R n f(x). Tarkastellaan seuraavanlaista algoritmia A: Piste y A(x), merkitsee sitä, että y saadaan minimoimalla funktio f peräjälkeen suunnissa d 1, d 2,..., d n alkaen pisteestä x. Hakusuunnat d 1, d 2,..., d n voivat riippua pisteestä x ja niiden normeille on voimassa d k = 1 kaikilla indekseillä k. Oletetaan, että 1. on olemassa ε > 0 siten, että det(d 1, d 2,..., d n ) ε kaikilla x R n, 10

2. funktion f minimi mitä tahansa suuntaa pitkin on yksikäsitteinen. Oletetaan, että aloituspiste x 1 on annettu ja siitä lähtien algoritmi generoi pistejonon {x k }. Jos jollakin indeksin k arvolla f(x k ) = 0, niin algoritmi pysähtyy antaen optimipisteeksi pisteen x k. Muutoin x k+1 A(x), korvataan luku k luvulla k + 1 ja toistetaan prosessi. Jos jono {x k } tällöin sisältyy johonkin avaruuden R n kompaktiin osajoukkoon, niin silloin jokainen jonon {x k } kasautumispiste x toteuttaa ehdon f(x) = 0. Huomautus 3.9. Edellisessä lauseessa 1. kuvauksen A ei tarvitse olla suljettu. 2. ehdosta 1. seuraa, että suunnat d 1, d 2,..., d n ovat lineaarisesti riippumattomia. 3. ehdosta 2. seuraa, että f(x k+1 ) < f(x k ), kun f(x k ) 0. 4. ehto f(x) = 0 on tehtävän välttämätön optimaalisuuehto. 11

4 Algoritmien vertailuperusteita Jatkossa tullaan esittelemään lukuisa määrä eri optimointialgoritmeja. Esiin nousee luonnollisesti kysymys siitä, mitä algoritmia pitäisi missäkin tilanteessa käyttää. Tähän ei voida antaa mitään yleispätevää vastausta, vaan jokaisen käyttäjän on itse analysoitava omat vaatimuksensa sekä niiden ja algoritmista käytettävissä olevien tietojen avulla yritettävä valita paras tai ainakin mahdollisimman sopiva algoritmi. Tällöin tulee kiinnittää huomiota useisiin algoritmin ominaisuuksiin, joista mainittakoon esimerkiksi yleisyys, luotettavuus ja tarkkuus, herkkyys parametrien ja datan suhteen, algoritmin valmistelu- ja laskuaika sekä konvergenssiominaisuudet. 4.1 Yleisyys, luotettavuus ja tarkkuus Eri algoritmit on tarkoitettu ratkaisemaan erityyppisiä epälineaarisia optimointitehtäviä, joita ovat esimerkiksi rajoitteettomat tehtävät, epäyhtälörajoitteiset tehtävät, yhtälörajoitteiset tehtävät sekä tehtävät, joissa on kumpaakin tyyppiä olevia rajoitteita. Näidenkin luokkien sisällä on lisäksi erityisiä oletuksia esimerkiksi tehtävän rakenteesta. Joissakin rajoitteettomissa tehtävissä kohdefunktio oletetaan differentioituvaksi, kun taas toisissa tätä olettamusta ei tehdä, vaan käytetään ainoastaan funktion arvoja. Yhtälörajoitteisissa tehtävissä eritellään yleensä tehtävät, joissa rajoitteet ovat pelkästään lineaarisia, kun taas toiset algoritmit huolehtivat tehtävistä, joissa on myös epälineaarisia rajoitteita. Tehtävän yleisyys viittaa siis siihen, kuinka laajaa tehtäväaluetta algoritmilla voidaan käsitellä vai rajoittuuko se kovin spesifiseen tehtävätyyppiin. Toinen tärkeä tekijä on algoritmin luotettavuus. On hyvin helppo konstruoida jokaista algoritmia kohti jokin tehtävä, jota kyseinen algoritmi ei pysty ollenkaan tai pystyy vain hyvin tehottomasti ratkaisemaan. Luotettavuus merkitseekin algoritmin kykyä ratkaista useimmat tehtävät kohtuullisen tarkasti ja tehokkaasti siinä luokassa, johon algoritmi on lähinnä tarkoitettu. Tämän ominaisuuden ei pitäisi juurikaan riippua siitä, mistä (sallitusta) aloituspisteestä algoritmi lähtee liikkeelle. Menetelmän luotettavuudella sekä tehtävän koolla ja rakenteella on siis tietty suhde. Jotkut algoritmit ovat luotettavia, mikäli tehtävän muuttujien lukumäärä ei ole liian suuri tai rajoitukset eivät ole kovin epälineaarisia, mutta muutoin algoritmi saattaa olla epäluotettava. Lauseen 2.4 nojalla algoritmin konvergenssi on rajaprosessi ja optimiratkaisu saavutetaan varsinaisesti vasta äärettömän monen iteraatiokierroksen jälkeen, jos yleensä konvergenssia tapahtuu. Kuitenkin käytännön kannalta on tarkoituksenmukaista mitata algoritmin suorituskykyä järkevän, äärellisen monen iteraatiokierroksen jälkeen. Sellaiset algoritmit, jotka pian aloituksen jälkeen antavat sallitun ratkaisun ja kohdefunktion arvokin on lähellä optimiarvoa, ovat suositeltavampia kuin ne, jotka lähestyvät pitkään optimia ei-sallitulla alueella. Erilaiset myöhemmin tarkasteltavat rangaistusfunktio- ja duaalityyppiset menetelmät generoivat koko ajan ei-sallittuja pisteitä, kunnes vasta algoritmin 12

päättyessä ne päätyvät sallittuun ratkaisuun. Tällaisissakin algoritmeissa olisi parempi, että melko aikaisin saadut ratkaisut olisivat kohtuullisen lähellä sallittua aluetta, jolloin korjaus sallituksi on helppoa, mikäli algoritmi joudutaan lopettamaan kesken laskuprosessin. 4.2 Herkkyys parametrien ja datan suhteen Useissa algoritmeissa käyttäjä joutuu asettamaan itse joitakin alkuarvoja ja parametreja, joista esimerkkejä ovat aloitusvektori, askelpituus, kiihdytyskerroin ja lopetuskriteeri. Jotkut algoritmit saattavat olla hyvin herkkiä näille parametreille ja tehtävän datalle, jolloin pientenkin muutosten jälkeen ne tuottavat aivan erilaisia pistejonoja tai joutuvat jopa lopettamaan laskut kesken. Hyvän algoritmin pitäisi ratkaista tehtävä oikein, kunhan parametrit ovat tiettyjen sovittujen arvojen joukossa. Lisäksi algoritmin pitäisi olla skaalainvariantti eli muuttujien skaalaus ei saisi vaikuttaa ratkaisuun eikä sen tehokkuuteen. Myöskään datana annetut parametrit eivät saisi vaikuttaa algoritmin toimintaan, mikäli ne ovat valitulla sovitulla alueella. 4.3 Valmistelu- ja laskuaika eli algoritmin tehokkuus Yksi vertailukriteeri on laskentaan kuluva kokonaisaika, joka koostuu valmistelusta ja itse tietokoneajasta. Jos algoritmi esimerkiksi tarvitsee erikseen omina aliohjelminaan kohdefunktion ja rajoitefunktioiden gradientit ja mahdollisesti Hessen matriisit, niin tähän valmisteluun kuluu aikaa, vaikka se suoritettaisiinkin tietokoneen symbolista laskentamenettelyä käyttäen. Tavallisesti algoritmin vaatima laskenta-aika ilmaistaan tietokoneen käyttämänä CPU-aikana, iteraatiokierroksina sekä funktiokutsujen lukumäärän avulla. Mikään näistä ei yksinään ole tyydyttävä mittari. Tietokoneen laskenta-aika riippuu tietokoneen tehokkuudesta ja sen kuormituksesta, mutta myös algoritmin koodauksen tehokkuudesta. Iteraatiokierrosten määrä ei myöskään kerro kaikkea, sillä iteraatiokierros käsitteenä saattaa olla eri algoritmeissa hyvin erilainen. Joissakin algoritmeissa yhteen iteraatioon saattaa kuulua vain yksi funktion arvon lasku, kun taas joissakin se saattaa sisältää kokonaisen suuren matriisin kääntämisen. Lopulta myös funktiokutsujen lukumäärä on harhaanjohtava, koska siinäkään ei tule esille muita vaativampia operaatioita. Esimerkiksi jos osittaisderivaatat lasketaan numeerisesti, niin silloin tarvitaan funktion arvon laskuja enemmän kuin siinä tapauksessa, että osittaisderivaatat olisi annettu suoraan omina funktioinaan. 4.4 Konvergenssi Algoritmin teoreettinen konvergenssi on tärkeä ominaisuus. Konvergenssia voidaan mitata algoritmin konvergenssiasteella. 13

Määritelmä 4.1. Olkoon {r k } jono reaalilukuja ja oletetaan, että jono konvergoi kohti arvoa r. Oletetaan, että jonossa r k r kaikilla indekseillä k. Jonon {r k } konvergenssiaste on suurin sellainen ei-negatiivinen luku p, joka toteuttaa ehdon lim sup k r k+1 r = β <. (4.1) r k r p Jos p = 1 ja konvergenssisuhde β < 1, niin sanotaan, että jonon konvergenssi on lineaarista tai että jonolla on lineaarinen konvergenssiaste, koska tällöin on asymptoottisesti voimassa r k+1 r = β r k r. Jos taas p > 1 tai jos p = 1 ja β = 0, niin sanotaan, että jonon konvergenssi on superlineaarista. Jos erityisesti p = 2 ja β <, niin tällöin jonolla on neliöllinen eli kvadraattinen konvergenssiaste. Esimerkin 1.2 algoritmin generoima jono on {r k }, missä r k+1 = 1(r 2 k + 1), jolloin r k 1. Tällöin r k+1 1 = 1(r 2 k 1) ja näin ollen p = 1 ja β = 1. Jos olisi p > 1, niin 2 silloin saataisiin β =, joten konvergenssi on lineaarista. Jos r 1 = 4, niin algoritmi antaa jonon {4, 2.5, 1.75, 1.375, 1.1875,... }. Jos edellisen sijasta algoritmi olisikin r k+1 = 1 + 1 2 k (r k 1), niin tällä algoritmilla saadaan jono {4, 2.5, 1.375, 1.046875,... }. Jono konvergoi selvästi kohti arvoa 1. Nyt r k+1 1 r k 1 = 1 2 k. Tämä lähestyy arvoa nolla, kun k, joten konvergenssi on superlineaarista. Yleisesti jos kahdella algoritmilla on sama konvergenssiaste p, niin algoritmi, jonka konvergenssisuhde β on pienempi, konvergoi nopeammin. Kuitenkaan algoritmeja vertailtaessa ei pidä pelkästään tuijottaa konvergenssiasteeseen ja -suhteeseen, sillä nämäkin kertovat konvergenssista vasta äärettömyydessä. Parempi mitta olisi niin sanottu keskimääräinen konvergenssiaste, joka ottaa huomioon algoritmin kulun alusta lähtien. Määritellään vektori- tai pistejonon x k R n konvergenssi vastaavasti kuin kaavassa (4.1). Tällöin luvut p ja β määräytyvät ehdosta lim sup k x k+1 x x k x p = β <. Eräs optimoinnissa tärkeä kriteeri määriteltäessä algoritmin konvergenssikykyä on tarkastella algoritmin toimivuutta kvadraattisen funktion tapauksessa. Tämä siitä syystä, että lähellä minimiä funktion kvadraattinen approksimaatio on varsin hyvä. Jos algoritmi suoriutuu heikosti kvadraattisen funktion tapauksessa, niin se ei suoriudu hyvin muistakaan epälineaarisista funktioista varsinkaan silloin, kun haetaan viimeisiä tarkkoja arvoja. 14

Osa II Yksiulotteinen optimointi eli viivahaku 5 Viivahaku ilman derivaattoja Yksiulotteinen optimointi on oleellinen osa suurimmassa osassa kaikkia optimointialgoritmeja joitakin poikkeuksia lukuun ottamatta. Useimmat algoritmit toimivat nimittäin seuraavasti: Kun on annettu jokin iteraatiopiste x k, niin algoritmissa määrätään yleensä joku hakusuunta d k ja siinä suunnassa askelpituus λ k, jolloin seuraava iteraatiopiste on x k+1 = x k + λ k d k. Sen jälkeen prosessi toistetaan lähtien nyt pisteestä x k+1. Askelpituuden määrääminen tapahtuu usein siten, että määrätään hakusuunnassa d k funktion minimikohta. Toisin sanoen suoritetaan yksiulotteinen optimointi eli viivahaku seuraavasti: min λ f(x k + λd k ). Tässä luvun λ k täytyy olla sellainen, että saatu piste x k+1 = x k + λ k d k on sallittu. Olkoon funktio f : R n R differentioituva. Jos tarkastellaan viivahakua min λ θ(λ) = f(x k + λd k ), niin ensimmäinen ajatus on tietysti etsiä minimiä funktion derivaatan nollakohdasta ratkaisemalla yhtälö θ (λ) = 0. Kun kyseessä on useampiulotteisen funktion viivahaku, niin tämä johtaa yhtälöön θ (λ) = f(x k + λd k ) T d k = 0, jolloin tarvitaan funktion gradienttia ja yhtälö on usein hyvin epälineaarinen. Tästä syystä viivahaussa käytetäänkin usein menetelmiä, joissa ei tarvita gradienttia. Näitä menetelmiä kutsutaan suoriksi menetelmiksi. Määritelmä 5.1. Tarkastellaan funktion θ(λ) minimointia välillä a λ b. Koska minimin tarkkaa paikkaa tällä välillä ei tunneta, niin väliä kutsutaan epävarmuusväliksi (evv). Minimoinnin aikana suljetaan pois alueita, joilla minimi ei voi esiintyä, jolloin epävarmuusväli pienenee. Seuraavassa osoitetaan, että jos tiedetään funktion olevan aidosti kvasikonveksi, niin tämä on mahdollista laskemalla funktion arvo kahdessa välin pisteessä. Lause 5.2. Olkoon θ : R R aidosti kvasikonveksi funktio välillä [a, b] ja olkoot λ, µ [a, b] siten että λ < µ. Jos θ(λ) θ(µ) = θ(z) θ(µ), z [a, λ). Jos θ(λ) θ(µ) = θ(z) θ(λ), z (µ, b]. 15

Todistus. Oletetaan, että θ(λ) θ(µ) ja tarkastellaan jotakin pistettä z [a, λ). Tehdään vastaoletus, että θ(z) < θ(µ). Koska nyt λ on pisteiden z ja µ konveksi kombinaatio, niin aidon kvasikonveksisuuden nojalla θ(λ) < max {θ(z), θ(µ)} = θ(µ), mikä on ristiriidassa oletuksen θ(λ) θ(µ) kanssa. Siis vastaoletus on väärin ja lauseen väite oikein. Toinen osa lausetta todistetaan samoin. Tällä menettelyllä alkuperäinen epävarmuusväli voidaan pienentää joko väliksi [a, µ] tai [λ, b]. Seuraavassa esitetään joitakin menetelmiä, joilla aidosti kvasikonveksin funktion epävarmuusväliä pienennetään pelkästään funktion arvoja laskemalla. Oletetaan siis jatkossa, että funktio θ on aidosti kvasikonveksi. 5.1 Tasavälinen haku Tasavälinen haku on esimerkki rinnakkaisesta hausta, jossa määrätään etukäteen ne pisteet, joissa funktion arvo lasketaan. Epävarmuusväli [a 1, b 1 ] jaetaan pienempiin osaväleihin jakopisteillä (grid points) a 1 + kδ, missä k = 1, 2,..., n ja välin päätepiste b 1 saadaan kaavasta b 1 = a 1 + (n + 1)δ. Funktion θ arvot lasketaan kaikissa n eri jakopisteessä. Olkoon λ se jakopiste, jossa funktio saa pienimmän arvonsa. Jos θ on aidosti kvasikonveksi, niin silloin minimi sijaitsee välillä [λ δ, λ + δ]. Huomataan, että n funktion arvon laskemista pienentää alkuperäisen epävarmuusvälin pituudeltaan 2δ olevaksi epävarmuusväliksi. Jos halutaan lopputulokseksi tietyn pituinen epävarmuusväli, niin tarvitaan b1 a 1 n = 1 δ funktion arvon laskemista. Ilman rinnakkaislaskennan mahdollisuutta tämä on hyvin tehoton algoritmi. Silloinkin kannattaa suorittaa muutama kierros algoritmia pienentäen joka kierroksella osavälejä. Yleensä algoritmit käyttävät hyväkseen informaatiota, joka kertyy edellisillä kierroksilla aikaisempia funktion arvoja laskettaessa. Tällaisia menetelmiä esitellään seuraavassa kolme: puolitusmenetelmä, kultaisen leikkauksen menetelmä ja Fibonacci-menetelmä. 5.2 Puolitusmenetelmä Tarkastellaan funktiota θ, joka on minimoitava välillä [a 1, b 1 ]. Oletetaan, että funktio on aidosti kvasikonveksi. Tarvitaan vähintään kaksi uutta funktion arvon laskua, jotta epävarmuusväliä voitaisiin pienentää. Oletetaan, että uudet arvot lasketaan pisteissä λ 1 16

ja µ 1, jolloin uusi epävarmuusväli on joko [a 1, µ 1 ] tai [λ 1, b 1 ] saaduista funktion arvoista riippuen. Uuden epävarmuusvälin pituus on näin ollen joko µ 1 a 1 tai b 1 λ 1. Koska etukäteen ei tiedetä, kumpi väli tulee uudeksi epävarmuusväliksi, niin on järkevää toimia niin, että huonoinkin vaihtoehto on mahdollisimman hyvä. Jakopisteet kannattaa näin ollen valita, että max {b 1 λ 1, µ 1 a 1 } minimoituu. Tämän tehtävän ratkaisu johtaa kuitenkin tilanteeseen λ 1 = µ 1 = 1 2 (a 1 + b 1 ), jolloin ei saadakaan kahta jakopistettä. Ratkaisuna valitaan pisteet mahdollisimman läheltä alkuperäisen epävarmuusvälin keskipistettä. Tietokoneen pitää pystyä erottamaan kahdessa pisteessä lasketut funktion arvot, joten valitaan Algoritmi 5.3. (Puolitusalgoritmi) λ 1 = 1 2 (a 1 + b 1 ) ε µ 1 = 1 2 (a 1 + b 1 ) + ε. Askel 1. Valitse vakio ε > 0 siten, että funktioiden arvot ovat erotettavissa vakion 2ε välein. Valitse lopullisen epävarmuusvälin suuruus L > 0 ja aloitusepävarmuusväli [a 1, b 1 ]. Aseta k = 1 ja siirry askeleeseen 2. Askel 2. Jos b k a k < L, niin lopeta. Minimi sijaitsee tällöin välillä [a k, b k ]. Muutoin määrää jakopisteet ja siirry askeleeseen 3. λ k = 1 2 (a k + b k ) ε, µ k = 1 2 (a k + b k ) + ε Askel 3. Jos θ(λ k ) < θ(µ k ) = a k+1 = a k, b k+1 = µ k. Jos θ(λ k ) θ(µ k ) = a k+1 = λ k, b k+1 = b k. Aseta k k + 1 ja siirry askeleeseen 2. Nyt huomataan, että kierroksen k + 1 alussa epävarmuusvälin pituus on b k+1 a k+1 = 1 2 (b k 1 a 1 ) + 2ε (1 12 ). k Esimerkki 5.4. Määrätään funktion f(x) = x lopetusepävarmuusväli lähtien liikkeelle aloitusepävarmuusvälistä [a 1, b 1 ] = [ 1, 2]. Tällöin a 1 = 1, b 1 = 2, b 1 a 1 = 3, λ 1 = 0.5 0.01 = 0.49, µ 1 = 0.5 + 0.01 = 0.51. Nyt f(λ 1 ) < f(µ 1 ) = a 2 = 1, b 2 = 0.51, λ 2 = 0.255, µ 2 = 0.235. 17

Tällöin taas f(λ 2 ) > f(µ 2 ) = a 3 = 0.255, b 3 = 0.51, b 3 a 3 = 0.765. Kahden kierroksen eli neljän funktion arvon laskun jälkeen lopetusepävarmuusvälin pituus on 0.765 = 0.255 3, missä 3 on aloitusepävarmuusvälin pituus. Kuva 4: Epävarmuusvälit esimerkissä 5.4. 5.3 Kultaisen leikkauksen menetelmä eli jatkuvasuhdehaku Yleinen tapa verrata viivahakualgoritmien tehokkuutta on laskea tehokkuussuhde r n = epävarmuusvälin pituus n funktion arvon laskun jälkeen. epävarmuusvälin pituus alussa Mitä pienempi tämä suhde on, sitä tehokkaampi algoritmi on. Edellisessä puolitushaussa tämä suhde on likimain r n = 1. Kultaisen leikkauksen menetelmällä suhteeksi saadaan 2 n 2 r n = 0.618 n 1, joka osoittaa, että se on tehokkaampi kuin puolitusmenetelmä. Kultaisen leikkauksen menetelmä perustuu siihen, että vaikka kullakin kierroksella tarvitaan kaksi jakopistettä epävarmuusvälin pienentämiseksi, niin vain toisessa niistä tarvitsee laskea funktion arvo. Toinen arvo saadaan valmiiksi edellisen kierroksen avulla. Algoritmissa on seuraavat periaatteet: Kierroksella k uuden epävarmuusvälin pituus b k+1 a k+1 ei riipu siitä, kumpi väli kierroksella k on valittu uudeksi epävarmuusväliksi. Näin ollen jakopisteet sijaitsevat symmetrisesti epävarmuusvälin keskipisteen suhteen eli b k λ k = µ k a k. Lisäksi oletetaan, että joka kierroksella epävarmuusvälin pituus pienenee aina samassa suhteessa. Tällöin on oltava λ k = a k + (1 α)(b k a k ) (5.1) µ k = a k + α(b k a k ), jolloin b k+1 a k+1 = α(b k a k ). 18

Kun valitaan uudet jakopisteet λ k+1 ja µ k+1, niin silloin joko λ k+1 = µ k tai µ k+1 = λ k, ja tarvitaan siis vain yksi uusi funktion arvon lasku. Tapaus I: Jos θ(λ k ) > θ(µ k ), niin valitaan a k+1 = λ k ja b k+1 = b k. Jotta olisi λ k+1 = µ k, niin käyttämällä kaavoja (5.1) saadaan ehto µ k = λ k+1 = a k+1 + (1 α)(b k+1 a k+1 ) = λ k + (1 α)(b k λ k ). Sijoitetaan tähän jakopisteiden λ k ja µ k lausekkeet kaavoista (5.1), jolloin saadaan a k + α(b k a k ) = a k + (1 α)(b k a k ) + (1 α) [b k (a k + (1 α)(b k a k ))]. Tämä yksinkertaistuu muotoon α 2 + α 1 = 0. Tapaus II: Jos θ(λ k ) θ(µ k ), niin valitaan a k+1 = a k ja b k+1 = µ k. Jotta nyt olisi µ k+1 = λ k, niin kaavojen (5.1) avulla saadaan λ k = µ k+1 = a k+1 + α(b k+1 a k+1 ) = a k + α(µ k a k ). Sijoittamalla tähän jakopisteiden λ k ja µ k lausekkeet kaavoista (5.1) saadaan yhtälö a k + (1 α)(b k a k ) = a k + α 2 (b k a k ). Tämäkin sievenee edellä saaduksi yhtälöksi α 2 + α 1 = 0. Yhtälön juuret ovat α 1 = 1 + 5 2 0.618, α 2 = 1 5 2 1.618, joista vain ensimmäinen kelpaa. Luku on kultaisen leikkauksen suhde. Algoritmi 5.5. (Kultaisen leikkauksen menetelmä) Askel 1. Valitse lopetusepävarmuusvälin pituus L, aloitusepävarmuusväli [a 1, b 1 ] ja määrää ensimmäiset jakopisteet kaavoilla λ 1 = a 1 + (1 α)(b 1 a 1 ) µ 1 = a 1 + α(b 1 a 1 ). Laske funktion arvot θ(λ 1 ) ja θ(µ 1 ). Aseta k = 1 ja siirry askeleeseen 2. Askel 2. Jos b k a k < L, niin lopeta, jolloin lopetusepävarmuusväli on [a k, b k ]. Muussa tapauksessa toimi seuraavasti: Jos θ(λ k ) > θ(µ k ), niin siirry askeleeseen 3. Jos θ(λ k ) θ(µ k ), niin siirry askeleeseen 4. 19

Askel 3. Aseta a k+1 = λ k, b k+1 = b k, λ k+1 = µ k ja µ k+1 = a k+1 + α(b k+1 a k+1 ). Laske arvo θ(µ k+1 ) ja siirry askeleeseen 5. Askel 4. Aseta a k+1 = a k, b k+1 = µ k, µ k+1 = λ k ja λ k+1 = a k+1 + (1 α)(b k+1 a k+1 ). Laske arvo θ(λ k+1 ) ja siirry askeleeseen 5. Askel 5. Aseta k k + 1 ja siirry askeleeseen 2. Esimerkki 5.6. Tarkastellaan esimerkin 5.4 tapausta kultaisen leikkauksen menetelmällä. Nyt siis a 1 = 1, b 1 = 2, b 1 a 1 = 3, λ 1 = 1 + 0.382 3 = 0.146, µ 1 = 1 + 0.618 3 = 0.854. Tällöin f(λ 1 ) < f(µ 1 ) = a 2 = a 1 = 1, b 2 = µ 1 = 0.854 µ 2 = λ 1 = 0.146 λ 2 = 1 + 0.382 1.854 = 0.292. Nyt f(λ 2 ) > f(µ 2 ) = a 3 = λ 2 = 0.292, b 3 = b 2 = 0.854 λ 3 = µ 2 = 0.146 µ 3 = 0.292 + 0.618 1.146 = 0.416, jolloin f(λ 3 ) < f(µ 3 ) = a 4 = a 3 = 0.292, b 4 = µ 3 = 0.416, b 4 a 4 = 0.708. Lopetusepävarmuusvälin pituus on 0.708 = 0.236 3, missä 3 on aloitusepävarmuusvälin pituus. Koska jokaisella kierroksella epävarmuusvälin pituus on 0.618-kertainen edelliseen verrattuna, niin n funktion arvon laskun jälkeen lopetusepävarmuusvälin pituus on 0.618 n 1 kertaa aloitusepävarmuusväli. Kuvassa 6 nähdään virheen kertyminen, jos jakopisteet lasketaan vähennyslaskun avulla käyttäen hyväksi pisteiden symmetristä sijaintia. Kuva 7 puolestaan esittää pisteitä kaavojen (5.1) mukaan laskettuna. 20

Kuva 5: Epävarmuusvälit esimerkissä 5.6. Kuva 6: Jakopisteiden laskenta symmetriaa hyödyntäen. Kuva 7: Jakopisteiden laskenta kaavaa (5.1) käyttäen. 5.4 Fibonacci-menetelmä Tämän menetelmän voidaan teoreettisesti osoittaa olevan paras suorien menetelmien joukossa. Menetelmä perustuu myös siihen, että toinen jakopiste siirtyy aina seuraavalle kierrokselle, jolloin kullakin kierroksella tarvitaan vain yksi uusi funktion arvon lasku. Kultaisen leikkauksen menetelmästä poiketen epävarmuusväli ei kuitenkaan pienene vakiokertoimella. Nimensä algoritmi on saanut siitä, että oleellista osaa siinä esittävät Fibonaccin 21

luvut {F n }, jotka määritellään seuravasti: F 0 = 1, F 1 = 1 F n+1 = F n + F n 1, n = 1, 2,... Fibonaccin lukujonon alku on 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,... Tarvittavien funktiolaskujen lukumäärä n kiinnitetään etukäteen. Algoritmissa iteraatiokierroksella k epävarmuusvälin ollessa [a k, b k ] määrätään jakopisteet kaavoilla λ k = a k + F n k 1 F n k+1 (b k a k ), k = 1, 2,..., n 1 (5.2) µ k = a k + F n k F n k+1 (b k a k ), k = 1, 2,..., n 1, Lauseen 5.2 nojalla uusi epävarmuusväli on [a k+1, b k+1 ] = [λ k, b k ], jos θ(λ k ) > θ(µ k ). Toisaalta epävarmuusväli on [a k+1, b k+1 ] = [a k, µ k ], jos θ(λ k ) θ(µ k ). Edellisessä tapauksessa saadaan uuden epävarmuusvälin pituudeksi b k+1 a k+1 = b k λ k = b k a k F n k 1 F n k+1 (b k a k ) = Jälkimmäisessä tapauksessa epävarmuusväli taas on b k+1 a k+1 = µ k a k = F n k F n k+1 (b k a k ). F n k F n k+1 (b k a k ). Näin pisteet todella sijaitsevat symmetrisesti keskipisteen suhteen ja uusi epävarmuusväli on pituudeltaan sama riippumatta siitä, kumpi puoli valitaan. Samalla huomataan, että epävarmuusväli pienenee kertoimella F n k F n k+1 siirryttäessä kierrokselta toiselle. Osoitetaan sitten, että näin määriteltäessä toinen jakopisteistä on myös seuraavan kierroksen jakopiste eli µ k+1 = λ k tai λ k+1 = µ k. Oletetaan, että on saatu tulos θ(λ k ) > θ(µ k ). Tällöin a k+1 = λ k ja b k+1 = b k. Käyttämällä kaavoja (5.2) saadaan λ k+1 = a k+1 + F n k 2 (b k+1 a k+1 ) = λ k + F n k 2 (b k λ k ) F n k F n k = a k + F n k 1 (b k a k ) + F ( n k 2 b k a k F n k+1 F [ n k Fn k 1 = a k + + F ( n k 2 1 F )] n k 1 (b k a k ) F n k+1 F n k F ( n k+1 Fn k 1 = a k + + F n k 2 F n k+1 F n k+1 F n k 1 F n k+1 (b k a k ) ) (b k a k ) = a k + F n k F n k+1 (b k a k ) = µ k. Samoin voidaan toisessa tapauksessa θ(λ k ) θ(µ k ) osoittaa, että µ k+1 = λ k. Esimerkki 5.7. Valitaan n = 5, jolloin tarvittavat Fibonaccin luvut ovat n 0 1 2 3 4 5 F n 1 1 2 3 5 8 22 )

Tarkastellaan väliä [0, 1] ja oletetaan, että valitaan aina vasen puoli. Tällöin epävarmuusvälin evv 1 pituus on evv 1 = 1. 1. kierros: 2. kierros: 3. kierros: 4. kierros: λ 1 = F 3 F 5 = 3 8, µ 1 = F 4 F 5 = 5 8, evv 2 = 5 8. λ 2 = F 2 F 4 5 8 = 2 5 5 8 = 2 8, µ 2 = λ 1 = 3 8, evv 3 = 3 8. λ 3 = F 1 F 3 3 8 = 1 3 3 8 = 1 8, µ 3 = λ 2 = 2 8, evv 4 = 2 8. λ 4 = F 0 F 2 2 8 = 1 2 2 8 = 1 8, µ 4 = λ 3 = 1 8. Huomataan, että neljännellä kierroksella jakopisteet ovat samat, joten epävarmuusväliä ei voida pienentää. Jatketaan kuitenkin vielä yksi kierros ja valitaan sitä varten pisteeksi µ 4 hieman sen varsinaisen paikan oikealla puolella oleva piste µ 4 = λ 4 +ε. Tällöin lopulliseksi epävarmuusvälin pituudeksi saadaan noin 1 8 = 1 F 5. Kuva 8: Epävarmuusvälit esimerkissä 5.7. Tarkastellaan sitten yleistä tapausta. Olkoon evv k+1 = µ k a k = F n k F n k+1 (b k a k ) uusi epävarmuusvälin pituus. Tällöin epävarmuusväleille saadaan seuraavat pituudet: 1. kierros: (2 funktion arvoa laskettu) evv 2 = F n 1 F n (b 1 a 1 ). 23

2. kierros: (3 funktion arvoa laskettu) 3. kierros: (4 funktion arvoa laskettu) evv 3 = F n 2 F n 1 (b 1 a 1 ) = F n 2 (b 1 a 1 ). F n 1 F n F n evv 4 = F n 3 F n 2 (b 1 a 1 ) = F n 3 (b 1 a 1 ). F n 2 F n F n k:s kierros: (k + 1 funktion arvoa laskettu) F n. evv k+1 = F n k F n k+1 (b 1 a 1 ) = F n k (b 1 a 1 ). F n k+1 F n (n 2):s kierros: (n 1 funktion arvoa laskettu) (n 1):s kierros:. evv n 1 = F 2 F 3 F 3 F n (b 1 a 1 ) = F 2 F n (b 1 a 1 ) = 2 F n (b 1 a 1 ). λ n 1 = a n 1 + F 0 (b n 1 a n 1 ) = a n 1 + b n 1 F 2 2 µ n 1 = a n 1 + F 1 (b n 1 a n 1 ) = a n 1 + b n 1, F 2 2 jolloin λ n 1 = µ n 1. Valitaan siis µ n 1 = λ n 1 + ε, jossa pisteessä lasketaan n:s funktion arvo. Silloin epävarmuusvälille on voimassa likimain evv n = F 1 F 2 F 2 F n (b 1 a 1 ) = F 1 F n (b 1 a 1 ) = 1 F n (b 1 a 1 ). Jotta aloitusepävarmuusvälistä, jonka pituus on b 1 a 1, päästään pituudeltaan lukua L pienempään lopetusepävarmuusväliin, niin valitaan luvuksi n sellainen kokonaisluku, että 1 F n (b 1 a 1 ) < L. Esimerkki 5.8. Tarkastellaan aikaisemmin käsiteltyjä esimerkkejä 5.4 ja 5.6. Valitaan n = 4, jolloin joudutaan laskemaan funktion arvo neljä kertaa samoin kuin edellisissä algoritmeissa. Tarvittavat Fibonaccin luvut saadaan edellä olleesta taulukosta. Epävarmuusväliksi saadaan ensin [a 1, b 1 ] = [ 1, 2] ja lasketaan sitten λ 1 = a 1 + F 2 F 4 (b 1 a 1 ) = 1 + 2 5 3 = 0.2 µ 1 = a 1 + F 3 F 4 (b 1 a 1 ) = 1 + 3 5 3 = 0.8. 24

Nyt θ(λ 1 ) < θ(µ 1 ), joten [a 2, b 2 ] = [ 1, 0.8] ja seuraavaksi saadaan λ 2 = a 2 + F 1 (b 2 a 2 ) = 1 + 1 1.8 = 0.4 F 3 3 µ 2 = λ 1 = 0.2. Tällä kertaa θ(λ 2 ) > θ(µ 2 ), joten [a 3, b 3 ] = [ 0.4, 0.8] ja seuraavaksi saadaan µ 3 = a 3 + F 0 (b 3 a 3 ) = 0.4 + 1 1.2 = 0.2 F 2 2 λ 3 = µ 2 = 0.2. Valitaan µ 3 = 0.2001, jolloin θ(λ 3 ) < θ(µ 3 ) ja lopetusepävarmuusväli on [ 0.4, 0.2001]. = 0.2 kertaa aloitusepävarmuus- 1 Lopetusepävarmuusvälin pituus on nyt 0.6001 eli F 4 välin pituus. = 1 5 Kuva 9: Epävarmuusvälit esimerkissä 5.8. Algoritmi 5.9. (Fibonacci-algoritmi) Askel 1. Valitse lopetusepävarmuusvälin pituus L > 0 ja vakio ε > 0, jolla välillä funktion arvot ovat vielä erotettavissa. Olkoon [a 1, b 1 ] aloitusepävarmuusväli. Valitse luku n siten, että F n > 1 L (b 1 a 1 ). Määrää ensimmäiset jakopisteet kaavoilla λ 1 = a 1 + F n 2 F n (b 1 a 1 ) µ 1 = a 1 + F n 1 F n (b 1 a 1 ). Laske funktion arvot θ(λ 1 ) ja θ(µ 1 ). Aseta k = 1 ja siirry askeleeseen 2. Askel 2. Jos θ(λ k ) > θ(µ k ), niin siirry askeleeseen 3. Jos θ(λ k ) θ(µ k ), niin siirry askeleeseen 4. Askel 3. Aseta a k+1 = λ k, b k+1 = b k ja λ k+1 = µ k. Jos k = n 2, niin siirry askeleeseen 6. Muutoin laske µ k+1 = a k+1 + F n k 1 F n k (b k+1 a k+1 ), ja määrää θ(µ k+1 ). Siirry askeleeseen 5. 25

Askel 4. Aseta a k+1 = a k, b k+1 = µ k ja µ k+1 = λ k. Jos k = n 2, niin siirry askeleeseen 7. Muutoin laske λ k+1 = a k+1 + F n k 2 F n k (b k+1 a k+1 ) ja määrää θ(λ k+1 ). Siirry askeleeseen 5. Askel 5. Aseta k k + 1 ja siirry askeleeseen 2. Askel 6. Aseta λ n 1 = µ n 2 ja µ n 1 = µ n2 + ε. Siirry askeleeseen 8. Askel 7. Aseta λ n 1 = λ n 2 ja µ n 1 = λ n 2 + ε. Siirry askeleeseen 8. Askel 8. Jos Muutoin jos θ(λ n 1 ) > θ(µ n 1 ) = a n = λ n 1, b n = b n 1. θ(λ n 1 ) θ(µ n 1 ) = a n = a n 1, b n = µ n 1. Lopeta, jolloin lopullinen epävarmuusväli on [a n, b n ]. 5.5 Kultaisen leikkauksen menetelmän ja Fibonacci-menetelmän vertailua Kultaisen leikkauksen menetelmässä epävarmuusvälin pituus n funktion arvon laskun jälkeen on KL(n) = α n 1 (b 1 a 1 ), missä α on yhtälön α 2 + α 1 = 0 juuri eli α = 5 1 2 0.618. Fibonacci-algoritmissa lopetusepävarmuusväli n funktion arvon laskun jälkeen on Fib(n) = 1 F n (b 1 a 1 ), joten pituuksien suhde on 1 + 5 2 KL(n) Fib(n) = αn 1 F n. Määrätään tämä suhde käyttämällä hyväksi Fibonaccin lukujen esitystä ( ) F n = 1 n+1 ( ) n+1 = 1 [ (α + 1) n+1 ( α) n+1]. 5 5 1 5 2 Tällöin KL(n) Fib(n) = αn 1 F n = 1 [ (α(α + 1)) α 2 n+1 ( α 2 ) n+1] 5 = 1 [ 1 ( α α 2 2 ) n+1] 1 5 α 2 1.17082, kun n. 5 Jo hyvin pienillä luvun n arvoilla suhde on lähellä tätä raja-arvoa. Seuraavassa taulukossa on esitetty, kuinka monta prosenttia pidempi kultaisen leikkauksen lopullinen epävarmuusväli on verrattuna Fibonacci-algoritmin antamaan lopetusepävarmuusväliin, kun funktion arvo lasketaan n kertaa. n 2 3 4 5 6 7 8 9 10 25 % 23.6 14.59 18.03 16.72 17.22 17.03 17.10 17.07 17.085 17.082 26

5.6 Yhteenveto Tarkastellaan edellä esitettyjä neljää algoritmia määräämällä pienin funktion arvojen laskun määrä, joka tarvitaan alkuperäisen epävarmuusvälin saamiseksi riittävän pieneksi. Otetaan lopetusepävarmuusvälin pituusvaatimukseksi aloitusepävarmuusvälin pituus kerrottuna jollakin luvun kymmenen negatiivisella potenssilla eli Tällöin saadaan seuraavasti: Tasavälinen haku Puolitusmenetelmä L = 10 k (b 1 a 1 ). 2 b 1 a 1 n + 1 < 10 k (b 1 a 1 ) = n > 2 10 k 1 b 1 a 1 2 n 2 < 10 k ln 10 (b 1 a 1 ) = n > 2k ln 2 6.644k Kultaisen leikkauksen menetelmä (0.618) n 1 (b 1 a 1 ) < 10 k ln 10 (b 1 a 1 ) = n > 1 k ln 0.618 1 + 5.78k Fibonacci-menetelmä b 1 a 1 F n < 10 k (b 1 a 1 ) = F n > 10 k. Alla olevassa taulukossa on määrätty luvun n arvot eli tarvittavien funktion laskukertojen määrä, kun eksponentti k saa arvot 1, 2,..., 8. k tasavälinen haku puolitushaku kultainen leikkaus Fibonacci 1 19 8 6 6 2 199 14 11 11 3 1 999 20 16 16 4 19 999 28 21 20 5 199 999 34 25 25 6 1 999 999 40 30 30 7 19 999 999 48 35 35 8 199 999 999 54 40 39 27

Huomautus 5.10. Vaikka näissä algoritmeissa käytetään indeksoituja merkintöjä pisteistä a k, b k, λ k ja µ k, niin se ei tarkoita sitä, että tietokoneohjelmassa nämä pitäisi esittää vektoreina. Kaikissa näissä algoritmeissa tarvitaan kerrallaan vain yhden kierroksen pisteitä, joten edellisten kierrosten pisteitä ei tarvitse säilyttää. Algoritmeissa esiintyy myös vertailu θ(λ k ) > θ(µ k ), jota ei kannata sellaisenaan kirjoittaa tietokoneohjelmaan, sillä tällä tavalla merkittäessä ohjelma käy joka kerta laskemassa funktion arvon niin λ- kuin µ-pisteessä. Parempi tapa on siirtää jo laskettu funktion arvo valmiina muuttujan arvona seuraavalle kierrokselle ja verrata sitä uudella kierroksella laskettavaan funktion arvoon. 28

6 Viivahaku derivaattoja käyttäen 6.1 Bisektiomenetelmä Etsitään funktion θ minimiä suljetulla välillä. Oletetaan, että funktio θ on pseudokonveksi ja siis differentioituva. Iteraatiokierroksella k epävarmuusväli on [a k, b k ]. Lasketaan pisteessä λ k funktion derivaatta θ (λ k ), jolloin on seuraavat kolme mahdollisuutta: 1. Jos θ (λ k ) = 0, niin silloin λ k on pseudokonveksisuuden nojalla globaali minimipiste. 2. Jos θ (λ k ) > 0, niin silloin θ (λ k )(λ λ k ) > 0, jos λ > λ k, ja tällöin pseudokonveksisuuden nojalla θ(λ) θ(λ k ). Uudeksi epävarmuusväliksi saadaan [a k, λ k ]. 3. Jos θ (λ k ) < 0, niin silloin θ (λ k )(λ λ k ) > 0, jos λ < λ k, ja tällöin pseudokonveksisuuden nojalla θ(λ) θ(λ k ). Uudeksi epävarmuusväliksi saadaan [λ k, b k ]. Valittiinpa kumpi puoli tahansa, niin mahdollisimman edulliseen epävarmuusväliin päästään asettamalla λ k = 1 2 (b k + a k ). Lopetusepävarmuusväli on pituudeltaan 1 2 n (b 1 a 1 ), kun on suoritettu n funktion derivaatan laskua. Algoritmi 6.1. (Bisektioalgoritmi) Askel 1. Olkoon aloitusepävarmuusväli [a 1, b 1 ]. Valitse lopetusepävarmuusvälin pituus L > 0 ja pienin positiivinen luku n siten, että Aseta k = 1 ja siirry askeleeseen 2. Askel 2. Valitse λ k = 1 2 (b k + a k ) ja laske θ (λ k ). 1 2 n (b 1 a 1 ) < L. Jos θ (λ k ) = 0, niin silloin λ k on minimipiste ja lopeta. Jos θ (λ k ) > 0, niin siirry askeleeseen 3. Jos θ (λ k ) < 0, niin siirry askeleeseen 4. Askel 3. Aseta a k+1 = a k ja b k+1 = λ k. Siirry askeleeseen 5. Askel 4. Aseta a k+1 = λ k ja b k+1 = b k. Siirry askeleeseen 5. Askel 5. Jos k = n, niin lopeta. Minimi sijaitsee nyt välillä [a n+1, b n+1 ]. Muutoin aseta k k + 1 ja siirry askeleeseen 2. Esimerkki 6.2. Tehtävänä on määrätä min θ(λ) = λ 2, kun aloitusepävarmuusväli on [ 1, 2]. 1. kierros: λ 1 = 1 ( ) 1 2, θ = 1 > 0 = epävarmuusväli = 2 [ 1, 1 ]. 2 29