Edellä on tarkasteltu luettelointimenetelmiä, jotka ainakin periaatteessa

Samankaltaiset tiedostot
Pisteen x lähistö koostuu kaikista ratkaisuista, jotka on saatu x:stä tekemällä siihen yksi siirto:

Algoritmit 2. Luento 13 Ti Timo Männikkö

Luetteloivat ja heuristiset menetelmät. Mat , Sovelletun matematiikan tutkijaseminaari, kevät 2008, Janne Karimäki

Harjoitus 6 ( )

Kombinatorinen optimointi

Demo 1: Simplex-menetelmä

Algoritmit 2. Luento 12 Ke Timo Männikkö

Harjoitus 6 ( )

Lineaarisen kokonaislukuoptimointitehtävän ratkaiseminen

Algoritmit 2. Luento 12 To Timo Männikkö

Algoritmit 2. Luento 11 Ti Timo Männikkö

58131 Tietorakenteet (kevät 2009) Harjoitus 11, ratkaisuja (Topi Musto)

Lineaarinen optimointitehtävä

Luento 1: Optimointimallin muodostaminen; optimointitehtävien luokittelu

Malliratkaisut Demot

Luento 3: Simplex-menetelmä

Malliratkaisut Demot

8. Ensimmäisen käyvän kantaratkaisun haku

Johdatus verkkoteoriaan 4. luento

Malliratkaisut Demo 1

4.5 Kaksivaiheinen menetelmä simplex algoritmin alustukseen

Kimppu-suodatus-menetelmä

Malliratkaisut Demot

Luento 8: Epälineaarinen optimointi

Luento 11: Rajoitusehdot. Ulkopistemenetelmät

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

Implementation of Selected Metaheuristics to the Travelling Salesman Problem (valmiin työn esittely)

Yhden muuttujan funktion minimointi

Harjoitus 4: Matlab - Optimization Toolbox

Luento 1: Optimointimallin muodostaminen; optimointitehtävien luokittelu

Luento 8: Epälineaarinen optimointi

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

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

Malliratkaisut Demot

Harjoitus 3 ( )

. 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

Algoritmit 2. Luento 6 To Timo Männikkö

4. Luennon sisältö. Lineaarisen optimointitehtävän ratkaiseminen Simplex-menetelmä

Geneettiset algoritmit

Ovatko seuraavat väittämät oikein vai väärin? Perustele vastauksesi.

Harjoitus 3 ( )

1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa:

Luento 6: Monitavoiteoptimointi

A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä.

Mat Lineaarinen ohjelmointi

Luento 4: Lineaarisen tehtävän duaali

Malliratkaisut Demot

Malliratkaisut Demot

j n j a b a c a d b c c d m j b a c a d a c b d c c j

Demo 1: Branch & Bound

Luento 7: Kokonaislukuoptimointi

Malliratkaisut Demot

Kuvioton metsäsuunnittelu Paikkatietomarkkinat, Helsinki Tero Heinonen

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

1 Rajoittamaton optimointi

12. Hessen matriisi. Ääriarvoteoriaa

Algoritmit 1. Luento 10 Ke Timo Männikkö

Sekalukuoptimointi. Lehtonen, Matti Matemaattisen ohjelmoinnin seminaari, Tietojenkäsittelytieteen laitos Helsingin Yliopisto

3.4 Peruutus (backtracking)

Antti Rasila. Kevät Matematiikan ja systeemianalyysin laitos Aalto-yliopisto. Antti Rasila (Aalto-yliopisto) MS-A0204 Kevät / 16

Algoritmit 1. Luento 9 Ti Timo Männikkö

Luento 6: Monitavoitteinen optimointi

Diskreettiaikainen dynaaminen optimointi

Matematiikan tukikurssi

MS-C2105 Optimoinnin perusteet Malliratkaisut 4

Algoritmit 2. Luento 14 Ke Timo Männikkö

Algoritmit 2. Luento 10 To Timo Männikkö

Luento 9: Yhtälörajoitukset optimoinnissa

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

Luento 7: Kokonaislukuoptimointi

Harjoitus 8: Excel - Optimointi

Vektorien pistetulo on aina reaaliluku. Esimerkiksi vektorien v = (3, 2, 0) ja w = (1, 2, 3) pistetulo on

Search space traversal using metaheuristics

Luento 2: Optimointitehtävän graafinen ratkaiseminen. LP-malli.

Matematiikan tukikurssi, kurssikerta 3

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

Valitaan alkio x 1 A B ja merkitään A 1 = A { x 1 }. Perinnöllisyyden nojalla A 1 I.

Mat Lineaarinen ohjelmointi

Harjoitus 1 ( )

v 8 v 9 v 5 C v 3 v 4

Piiri K 1 K 2 K 3 K 4 R R

4. Kokonaislukutehtävän ja LP:n yhteyksiä

Jälki- ja herkkyysanalyysi. Tutkitaan eri kertoimien ja vakioiden arvoissa tapahtuvien muutosten vaikutusta optimiratkaisuun

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

Algoritmit 1. Luento 8 Ke Timo Männikkö

Tietotekniikan valintakoe

Lineaarinen optimointi. Harjoitus 6-7, Olkoon A R m n, x, c R ja b R m. Osoita, että LP-tehtävän. c T x = min!

73125 MATEMAATTINEN OPTIMOINTITEORIA 2

Mat Dynaaminen optimointi, mallivastaukset, kierros 5

TIES592 Monitavoiteoptimointi ja teollisten prosessien hallinta. Yliassistentti Jussi Hakanen syksy 2010

Tietorakenteet, laskuharjoitus 7, ratkaisuja

Matematiikan tukikurssi

MS-A0207 Differentiaali- ja integraalilaskenta 2 Luento 5: Gradientti ja suunnattu derivaatta. Vektoriarvoiset funktiot. Taylor-approksimaatio.

Kokonaislukuoptimointi

Graafit ja verkot. Joukko solmuja ja joukko järjestämättömiä solmupareja. eli haaroja. Joukko solmuja ja joukko järjestettyjä solmupareja eli kaaria

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

Kokonaislukuoptimointi

TIES592 Monitavoiteoptimointi ja teollisten prosessien hallinta. Yliassistentti Jussi Hakanen syksy 2010

Luku 8. Aluekyselyt. 8.1 Summataulukko

Transkriptio:

75 9. Lokaali haku Edellä on tarkasteltu luettelointimenetelmiä, jotka ainakin periaatteessa (jos laskenta-aikaa vain riittää) voivat löytää kaikkein parhaimman ratkaisun eli globaalin optimin. Toisenlainen lähtökohta on menetelmissä, joissa aina tutkitaan olemassa olevan käyvän ratkaisun lähiympäristössä olevia ratkaisuja ja etsitään niiden joukosta parempaa, jonne sitten siirrytään. Näin ei useinkaan löydetä, edes periaatteessa, globaalia optimia, mutta voidaan kuitenkin päätyä riittävän hyvään ratkaisuun. Tarkastellaan optimointiprobleemaa muodossa max z = f(x), x S X, missä X on ratkaisuavaruus ja S probleeman käypä joukko, joka oletetaan nyt äärelliseksi. Tässä X voi olla yleisempi kombinatorisen n optimoinnin tehtävän ratkaisuavaruus kuin. Toisin sanoen, tehtävän muotoilua MI(N)LP:ksi ei välttämättä edellytetä.

76 Oleellista on nyt sopia, mitä ovat tietyn ratkaisun x lähellä olevat muut ratkaisut. Lähellä x:ää olevat "naapurit" ajatellaan saaduksi ratkaisusta x sopivalla siirrolla. Se, mitkä siirrot katsotaan sopiviksi, määrittelee avaruuden X lähistörakenteen. Oletamme, että nämä siirrot on sovittu. (Huomataan, että "kokonaislukumaailmassa" läheisyyden ilmaiseminen voi olla vaikeampaa, n kuin esimerkiksi :ssä tai muussa metrisessä avaruudessa, jossa on käytössä luonnollinen etäisyyden käsite.) Olkoon M kaikkien siirtojen m joukko. Ratkaisua x muutetaan siirrolla m siten, että tulos x = x m on uusi "häiritty" ratkaisu. Siirto m on käypä (sallittu), jos x m on käypä, muuten siirto on epäkäypä. Pisteen x lähistö koostuu kaikista ratkaisuista, jotka on saatu x:stä tekemällä siihen yksi siirto: N(x) = {x' X x = x m, m M }. Käypä lähistö saadaan tekemällä vain sallittuja, käypiä siirtoja, jolloin saadaan siis N(x) S. (Tässä on käytetty suomenkielistä sanaa "lähistö" termin "ympäristö" sijaan, koska jälkimmäisellä on oma merkityksensä topologiassa. Englanninkielisissä esityksissä molemmissa esiintyy termi "neighborhood".)

77 Lähistön koko on sen alkioiden lukumäärä. Se kertoo siis, kuinka monta erilaista siirtoa x:lle voidaan tehdä ("nollasiirto", eli että ei tehdä mitään siirtoa, luetaan tässä myös siirroksi). Kaikille lähistöjä käyttäville menetelmille on onnistumisen kannalta oleellista, minkälainen lähistörakenne on valittu. Jos lähistöt ovat liian suuria (ääritapauksessa koko ratkaisuavaruus X voi olla lähistönä), niin menetelmän jokainen iteraatio voi olla samaa luokkaa laskentatyöltään kuin alkuperäinen probleema. Jos lähistö on taas liian suppea, niin menetelmät etenevät hyvin hitaasti. Tehtävä Muodosta pisteen x = [0 1 0 0 1] T B 5 lähistö, jos siirtona on a) yhden komponentin (bitin) muuttaminen nollasta ykköseksi tai päinvastoin. b) kahden komponentin vaihto keskenään (esim. 1. ja 5. x' = [1 1 0 0 0] T ).

78 Lokaali haku (Local Search, Neighborhood Search) on menetelmä, jossa jokaisessa iteroinnissa uusi iterointipiste valitaan nykyisen lähistöstä. Valintaan voidaan käyttää evaluointifunktiota E, jonka maksimiarvon mukaan uusi piste poimitaan. Algoritmi on silloin seuraava, kun aloituspisteenä on jokin käypä ratkaisu x 0 : 1. k:=1, x k :=x 0, x * : = x 0. 2. x k+1 :=argmax{e(x) x N(x k )}. 3. k:=k+1. 4. Jos E(x k )>E(x * ), niin tee päivitys x * : = x k. 5. Onko lopetusehto voimassa? Jos on, x * on paras ratkaisu. Jos ei, niin jatka kohdasta 2. Merkintä argmax{e(x) x N(x k )} tarkoittaa sitä ratkaisua x, joka antaa funktiolle E suurimman arvon lähistössä N(x k ).

79 Evaluointifunktio ja lopetusehto jäävät tässä yleisellä tasolla määrittelemättä. Yleensä evaluointifunktio on maksimointitehtävässä kohdefunktio f sellaisenaan ja minimointitehtävässä -f tai positiivisen funktion tapauksessa myös 1/f. Osa sellaisista rajoitusehdoista, jotka on vaikea ilmaista lähistöjen käypyydellä, voidaan ottaa huomioon evaluointifunktiossa esim. sakkotermien avulla. Jos evaluointifunktiona käytetään pelkästään kohdefunktiota f, kyseessä on jyrkimmän nousun (steepest ascent) menetelmä. (Minimoinnissa: jyrkin vietto, steepest descent.) Sanotaan myös, että algoritmi on ahne (greedy), koska joka kerta valitaan eniten kohdefunktiota parantava vaihtoehto lähistöstä. (On sukua derivoituvien funktioiden gradienttimenetelmälle, mutta globaalin haun merkitys menetelmänä on diskreetissä optimoinnissa suurempi, kuin gradienttimenetelmän epälineaarisessa optimoinnissa.) Lokaalin haun suurimpia ongelmia on, että se jää usein kiinni lokaaliin optimiin.

80 Esimerkki: Kaupparatsuongelman (TSP) ratkaisumenetelmä 2-opt Menetelmässä verrataan olemassa olevaa ratkaisua x sellaisiin lähellä oleviin ratkaisuihin, jotka saadaan vaihtamalla kaksi reitin jaksoa toisiin kahteen jaksoon, muuten reitti säilyy samana. Siirto on siis tämä vaihto, ja lähistö koostuu näin saaduista reiteistä. Kaupunkien lukumäärä olkoon n, käytävä läpi kaikki kaupungit täsmälleen kerran. Aloitus kaupungista 1, johon sitten lopuksi palataan. Reitti on jono kaupunkeja i 1, i 2,, i n, missä i 1 = 1 ja jono kertoo järjestyksen, jossa kaikki kaupungit käydään läpi. Reitin jaksot ovat i i, i i,, i i, i i. 1 2 2 3 n 1 n n 1 Oletetaan, että tilanne on symmetrinen, eli jakson suunnalla ei ole väliä ja jokaisen jakson kustannus on sama molempiin suuntiin. Kustannukset saadaan symmetrisestä kustannusmatriisista W, koko n n.

81 Koska vaihdettavia jaksoja on täsmälleen kaksi, ne eivät voi olla peräkkäin. (Jos poistetaan peräkkäiset kaksi jaksoa, jää keskimmäinen kaupunki eristetyksi, jolloin se pitää yhdistää johonkin muuhun, mikä taas pakottaa poistamaan kolmannenkin jakson jostakin kohtaa) Edelleen todetaan, että jos tietyt kaksi jaksoa (a,b) ja (c,d) on poistettu, niin reitti on korjattava tasan kahdella uudella jaksolla käymättä missään kaupungissa useammin kuin kerran. Silloin uusiksi jaksoiksi reittiin on otettava (a,c) ja (b,d), muita mahdollisuuksia ei ole, kuten kuvasta voidaan päätellä. Joten vaihto on yksiselitteinen, kun poistettavat jaksot on päätetty. Algoritmi lähtee jaksosta i 1 i 2, käy läpi kaikki muut (paitsi vieressä olevia i 2 i 3 ja in i1 ) ja kokeilee kannattaako vaihtaa.

82 Vaihto on kannattava, mikäli kustannusten pudotus W(a,b)+W(c,d)- (W(a,c)+W(b,d)) on positiivinen. Jakson i 1 i 2 vaihtokaveriksi otetaan se (jos löytyy), joka antaa suurimman positiivisen pudotuksen. Näin käydään läpi kaikki mahdollisuudet muutella reittiä kahden vaihdolla. Lopetetaan, kun ei enää löydy kannattavaa vaihtoa. Silloin on löydetty (ainakin) lokaalisti optimaalinen reitti. Se ei ole välttämättä globaali optimi, mutta on käytännössä todettu usein melko hyväksi. Etuna on laskennan nopeus ja menetelmän yksinkertaisuus. d a b c Menetelmä on erityistapaus k-opt menetelmästä eli Lin-Kernighanalgoritmista. (S. Lin, B.W. Kernighan: An Effective Heuristic Algorithm for the Traveling Salesman Problem, Operations Research 21 (1973), 498-516)

83 Lokaalin haun taipumuksena yleisesti on algoritmin juuttuminen lokaaliin optimiin. Tämän estämiseksi voidaan käyttää erilaisia keinoja, joilla ratkaisu voi päästä "karkuun" lokaalista "kuopasta". Eräs idea tähän on löydettävissä fysikaalisen analogian kautta metallien lämpökäsittelystä. Kun sulaa hehkuvaa metallia jäähdytetään sopivan hitaasti (annealing), sen kiderakenne päätyy minimienergiatilaan. Jos taas jäähdytys on äkkinäistä (rapid quenching), rakenne voi jäädä lokaaliin optimitilaan ja tuloksena on hauraampi materiaali. Tätä matkivat matemaattiset optimointialgoritmit tunnetaan nimellä simuloitu mellotus (simulated annealing, simulated cooling, simuloitu hehkutus, simuloitu jäähdytys, termodynaaminen algoritmi). Ne kuuluvat stokastisten lokaalisten hakualgoritmien luokkaan.

84 Periaate on lyhyesti seuraava: Olemassa olevan iterointipisteen lähistöstä valitaan satunnaisesti vertailupiste. Jos se parantaa kohdefunktion arvoa, se otetaan uudeksi iterointipisteeksi. Ellei, se voidaan silti hyväksyä uudeksi iterointipisteeksi todennäköisyydellä P(T, d) = e -d/t, missä d on kohdefunktion huononnus pisteestä toiseen siirryttäessä ja T on ohjausparametri ("lämpötila"). Siis paljon nykyistä huonompi ratkaisu voi tulla kysymykseen vain hyvin pienellä todennäköisyydellä. Todennäköisyysfunktion muoto on peräisin Boltzmannin jakaumasta. Ohjausparametriä T muutetaan vakionopeudella r pienemmäksi (lämpötilan lasku, r = cooling rate). Alussa lämpötila T on suuri, jolloin todennäköisyys huononnusten hyväksymiseen on suurehko. Iteroinnin edetessä lämpötila T laskee ja huononnusta aiheuttavien ratkaisujen hyväksymisen todennäköisyys lähenee nollaa.

85 Olkoot aloituslämpötila T, jäähdytyskerroin r (0,1), lopetussääntö ja aloitusratkaisu x 0 annettu. Lisäksi tarvitaan iterointiluku L, joka ilmaisee, kuinka monta iterointipistettä samassa lämpötilassa satunnaisesti haetaan, ennen kuin lämpötilaa lasketaan. Koska kyseessä on satunnaistettu lokaali haku, tarvitaan myös pisteen x lähistö N(x). Tällöin algoritmin eräs toteutus on seuraava: 1. j:= 1, k:=1, x k :=x 0, x * : = x 0. 2. Jos lopetussääntö on voimassa, lopeta, x * on paras löydetty ratkaisu. Ellei, jatka kohdasta 3. 3. Jos j=l+1, jatka kohdasta 9. Ellei, jatka kohdasta 4. 4. Valitse satunnaisesti piste y N(x k ) ja laske kohdefunktion arvomuutos d = f(y)-f(x k ).

86 5. Jos d>0, jatka kohdasta 7. Jos d 0, generoi välille [0,1] tasaisesti jakautuneista satunnaisluvuista arvo p ja jatka kohdasta 6 6. Jos p e -d/t, jatka kohdasta 7. Ellei, aseta j:=j+1 ja jatka kohdasta 3. 7. Aseta x k+1 :=y ja k:=k+1. 8. Jos f(x k ) > f(x * ), aseta x * := x k, j:=1 ja jatka kohdasta 9. Ellei, aseta j:=j+1 ja jatka kohdasta 3. 9. Aseta T=rT, j=1 ja jatka kohdasta 2.

87 10. Bellmanin dynaaminen optimointi Jos ongelma voidaan esittää monivaiheisena peräkkäisten probleemoiden jonona, siihen voidaan soveltaa Richard Bellmanin 1950-luvulla esittämää Dynaamista optimointia (Dynamic Programming). Se perustuu Bellmanin optimaalisuusperiaatteeseen, jonka voi sanallisesti ilmaista eri tavoilla: Optimiratkaisussa on edettävä esillä olevasta vaiheesta optimaalisesti loppuun, riippumatta siitä, mitä aikaisemmissa vaiheissa tehtiin. Optimiratkaisussa jokaista vaihetta edeltävät vaiheet on suoritettu alusta lukien optimaalisesti. Optimiradan jokainen loppuosa (vastaavasti alkuosa) on myös itse optimaalinen.

88 Periaate on luonnollinen ja sinällään itsestään selvä. Sen systemaattinen hyväksikäyttö tarjoaa mahdollisuuden tietyn tyyppisissä kokonaislukuoptimointitehtävissä käypien ratkaisujen implisiittiseen läpikäyntiin, ja on siinä mielessä sukua branch-and-bound menetelmille. Ongelma on siis voitava esittää rakentuvaksi peräkkäisistä vaiheista (stage). Kussakin vaiheessa systeemi voi olla erilaisissa tiloissa (state).

89 Esimerkki 1 Tarkastellaan minimikustannusvirtausprobleemaa, jossa on 11 solmua. Solmut on ryhmitelty viiteen vaiheeseen: aloitus (vaihe 1) = solmu 1, vaihe 2 = solmut 2, 3, 4, vaihe 3 = solmut 5, 6, 7, 8, vaihe 4 = 9, 10 ja lopetus (vaihe 5) = solmu 11. Verkossa voi liikkua vain solmusta seuraavan vaiheen solmuihin (ei välttämättä kaikkiin). Verkon insidenssimatriisi ja kustannusvektori ovat: 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 A = 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 c = [ 4 11 7 9 6 12 2 2 5 8 9 1 5 3 4 2 5 4 7 8 12 13]. (Piirrä verkko, vaiheet vasemmalta oikealle, saman vaiheen solmut allekkain.)

90 Tehtävänä on kulkea solmusta 1 solmuun 11 lyhintä reittiä (kustannukset ovat solmujen välisiä välimatkoja; virtaus on 1, jos kaarta pitkin kuljetaan, solmu 1 on lähdesolmu, josta virtaus 1 lähtee ja solmu 11 kohdesolmu, johon se saapuu). Ratkaisu voidaan hakea dynaamisella optimoinnilla seuraavasti. Lähdetään solmusta 1 liikkeelle, ja edetään vaihe kerrallaan eteenpäin. Jokaiseen solmuun i liitetään etenemisen kuluessa lukupari (j,k). Siinä j kertoo solmun, josta solmuun i alusta lähtien optimaalista reittiä tultiin ja k vastaavan reitin minimipituuden. Silloin muodostuu järjestyksessä seuraava vaiheittainen data: aloitus vaihe 2 (2,3,4) vaihe 3 (5,6,7,8) vaihe 4 (9,10) lopetus [ 0] 1 4 1 11 1 7 2 13 2 10 4 8 4 12 6 12 7 12 [9 24]

91 Viimeisestä datasta nähdään, että optimireitin pituus on 24. Optimireitti löytyy taaksepäin siirtymällä: 11 9 6 2 1. Siis optimireitti on 1 2 6 9 11. Menetelmä oli siis rekursio eteenpäin. Vastaava laskenta voitaisiin tehdä aloittamalla solmusta 11, rekursio taaksepäin. Tässä esimerkissä eri vaiheissa tarvittavat osaoptimointitehtävät olivat hyvin yksinkertaisia täydellisellä läpikäynnillä (muutamasta vaihtoehdosta) ratkaistavia. Esimerkiksi vaiheessa 4 todettiin solmuun 9 päästävän solmusta 5,6,7 tai 8, joista 6 antoi lyhimmän tien; oleellista oli, että solmussa 6 oli käytettävissä tieto, mikä siihen on lyhin reitti alusta.

92 Muotoillaan seuraavaksi dynaamisen optimoinnin menetelmä yleisemmin: Probleema ("systeemi") olkoon jaettavissa eri vaiheisiin k = 1,, K. Kussakin vaiheessa k systeemi on jossakin tilassa y k. Mahdollisten tilojen joukko vaiheessa k on Y k. Kussakin vaiheessa k on valittava päätösmuuttuja xk X joukosta X k. k käyvästä Tehty päätös antaa systeemin seuraavan tilan siirtoyhtälöstä 1 yk = tk( yk 1, xk). Siirtofunktio t k on käännettävissä: y = k 1 tk ( yk, xk). Kohdefunktio saa vaiheesta k yhteenlaskettavan osuuden fk( yk 1, xk). Kumulatiivinen kohdefunktion optimiarvo on Fk( y k), kun ensimmäiset k vaihetta on edetty tilaan y k.

93 Kun vaiheesta toiseen siirrytään eteenpäin, kohdefunktio saa arvon F ( y, x ) = F ( y ) + f ( y, x ) k k k k 1 k 1 k k 1 k (rekursio eteenpäin). Silloin kumulatiiviselle optimiarvolle saadaan (jos kohdefunktiota maksimoidaan) rekursiokaava F ( y ) = F ( y, x ) = max F ( y, x ). k k k k k x k k k k Xk Lopullinen optimiratkaisun arvo on silloin z = F ( y ) = F ( y, x ). K K K K K Optimitilat saadaan taaksepäin siirtymällä ratkaisemalla kaavasta 1 y = k 1 tk ( yk, xk) peräkkäin yk 1, yk 2,, y2, y1 ja vastaavat yllä olevassa rekursiokaavassa maksimin antavat x k. Silloin optimiratkaisun päätösmuuttujat ovat x1, x2,, xk.

94 Jos kohdefunktiota minimoidaan, yllä olevassa rekursiokaavassa maksimointi vaihdetaan minimointiin. Yllä olevasta voidaan esittää ilmeisin muutoksin versio, jossa käytetään rekursiota taaksepäin. Siinä lopullinen ratkaisu sitten löydetään eteenpäin siirtymällä. Todettakoon myös, ettei menetelmä ota kantaa siihen, miten rekursiokaavassa esiintyvä optimointiprobleema ratkaistaan. Dynaamisen optimoinnin huonona puolena on tarvittavan laskenta-ajan ja muistitilan nopea kasvu.

95 2 3 Esimerkki 2 max z = 6x + 2 x + x 1 3 3x + 4x + 2x 12 1 2 3 0 x 3 1 1 x 4 2 0 x 2 x i 3 Z Kyseessä on siis epälineaarisen kokonaislukuoptimoinnin tehtävä. Koska kohdefunktio ja rajoitusehto ovat yhteenlaskuun nähden separoituvia, probleema voidaan ajatella kolmesta vaiheesta koostuvaksi, kutakin vaihetta i vastaa muuttuja x i. Jos rajoitusepäyhtälö 3x1+ 4x2 + 2x3 12 ajatellaan resurssiepäyhtälönä, systeemin "tilaksi" y k saadaan luontevasti se resurssimäärä, joka vaiheessa k ja sitä ennen on kulutettu. Siirtoyhtälö on näin ollen yk = yk 1 + akxk, missä a, a, a ] = [3,4,2]. [ ] 1 2 3

96 Vaihe 1 y0 = 0, y1 = y0 + a1x1 = 3x1, X 1 = {0,1, 2}, Y 1 = {0,3,6} y x F( y, x ) = F( y ) + f ( y, x ) F( y ) = F( y, x ) x 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 0 0 0 0 0 3 1 6 6 1 6 2 12 12 2 Vaihe 2 y2 = y1+ a2x2 = y1+ 4x2, X 2 = {1, 2,3}, Y 2 = {4,7,8,10,11,12} x y y = y + 4 x F ( y, x ) = F( y ) + f ( y, x ) F ( y ) = F ( y, x ) x 2 1 2 1 2 2 2 2 1 1 2 1 2 2 2 2 2 2 2 1 0 4 0+ 2= 2 2 1 1 3 7 6+ 2= 8 8 1 2 0 8 0+ 4= 4 4 2 1 6 10 12 + 2 = 14 14 1 2 3 11 6 + 4 = 10 10 2 3 0 12 0+ 8= 8 8 3

97 Vaihe 3 y3 = y2 + a3x3 = y2 + 2x3, X 3 = {0,1, 2}, Y 3 = {4,6,7,8,9,10,11,12} x y y = y + 2 x F ( y, x ) = F ( y ) + f ( y, x ) F ( y ) = F ( y, x ) x 3 2 3 2 3 3 3 3 2 2 3 2 3 3 3 3 3 3 3 0 4 4 2+ 0= 2 2 0 1 4 6 2+ 1= 3 3 1 0 7 7 8+ 0= 8 8 0 0 8 8 4+ 0= 0 2 4 8 2+ 8= 10 10 2 1 7 9 8+ 1= 9 9 1 0 10 10 14 + 0 = 14 14 0 1 8 10 4+ 1= 5 0 11 11 10+ 0= 10 2 7 11 8 + 8 = 16 16 2 0 12 12 8+ 0= 8 1 10 12 14 + 1 = 15 15 1 2 8 12 4+ 8= 12 Viimeisestä taulukosta sarakkeelta 5 nähdään siis, että optimiarvo on 16. Vastaavalta riviltä nähdään, että x3 = 2, y3 = 11, y2 = 7. Siirtymällä taaksepäin vaiheen 2 taulukkoon kohtaan y 2 = 7 nähdään, että x2 = 1, y1 = 3. Tästä jälleen taaksepäin ensimmäiseen taulukkoon, josta nähdään kun y 1 = 3, niin x 1 = 1. Optimiratkaisu on siis x1= 1, x2 = 1, x3= 2 ja z:n maksimiarvo z = 16.