Dynaaminen optimointi Tapa ratkaista optimointitehtävä Tehtävä ratkaistaan vaiheittain ja vaiheet yhdistetään rekursiivisesti Perustuu optimaalisuusperiaatteeseen: Optimaalisen ratkaisupolun loppuosa on optimaalinen myös tehtävälle, jossa tarkastellaan vain loppuosaa omana tehtävänään 1
Koneen optimaalinen vaihto Tarkastellaan N:n vuoden periodia, yhden vuoden jaksoissa Jokaisen vuoden alussa vanha kone voidaan vaihtaa uuteen tai säilyttää vanha kone Tavoite: Määrää, milloin kone vaihdetaan, jotta kokonaiskustannukset minimoituvat p = uuden koneen (ikä 0 vuotta) hinta c(i) = koneen käyttökustannukset vuodessa, kun kone i vuoden ikäinen t(i) = koneesta vaihdossa saatava hyvitys, kun kone i vuoden ikäinen s(i) = koneen loppuarvo, kun se vuoden N lopussa on i vuoden ikäinen 2
Dynaamisen optimoinnin vaiheet: Aloitetaan periodin viimeisestä vuodesta Jokaisen vuoden k alussa tutkitaan kaikki vaihtoehdot, joiden mukaan k:s vuosi voidaan toimia Seuraavan vuoden alusta toimitaan optimaalisesti periodin loppuun Paras vaihtoehto vuoden k alussa on se, joka antaa parhaan kokonaistuloksen vuodesta k periodin loppuun asti Edetään kohti periodin alkua vuosi kerrallaan 3
Rekursiofunktiot: f k (i) =optimaaliset kokonaiskustannukset vuodesta k periodin loppuun asti, kun aloitetaan vuoden k alussa i vuoden ikäisellä koneella Vaihtoehdot vuoden k alussa: Ei vaihdeta: kustannukset = c(i) + f k+1 (i + 1) Vaihdetaan: kustannukset = p t(i) + c(0) + f k+1 (1) = f k (i) = min{c(i) + f k+1 (i + 1), p t(i) + c(0) + f k+1 (1)} 4
Optimaalinen kustannus periodin lopussa eli vuoden N + 1 alussa: f N+1 (i) = koneen loppuarvo = s(i) Lasketaan takenevasti f k (i):t kaikilla k = N,...,1 ja kaikilla tarvittavilla tai mahdollisilla i Optimaalinen ratkaisupolku nähdään f k (i):n arvoista, alkaen ensimmäisestä vuodesta 5
Esimerkki: N = 5 p = 50 c(0) = 10 i c(i) t(i) s(i) 1 13 32 25 2 20 21 17 3 40 11 8 4 70 5 0 5 100 0 0 6 100 0 0 Merkitään: 1 = ei vaihdeta, 2 = vaihdetaan 6
f 6 (i) = s(i) i f 6 (i) f 5 (i) f 4 (i) f 3 (i) f 2 (i) f 1 (i) 1 25 2 17 3 8 4 0 5 0 6 0 7
f 5 (i) = min{c(i) + f 6 (i + 1),60 t(i) + f 6 (1)} i f 6 (i) f 5 (i) f 4 (i) f 3 (i) f 2 (i) f 1 (i) 1 25 1 4 2 17 1 12 3 8 2 24 4 0 2 30 5 0 2 35 6 0 2 35 8
f 4 (i) = min{c(i) + f 5 (i + 1),60 t(i) + f 5 (1)} i f 6 (i) f 5 (i) f 4 (i) f 3 (i) f 2 (i) f 1 (i) 1 25 1 4 2 24 2 17 1 12 2 35 3 8 2 24 2 45 4 0 2 30 2 51 5 0 2 35 2 56 6 0 2 35 2 56 9
f 3 (i) = min{c(i) + f 4 (i + 1),60 t(i) + f 4 (1)} i f 6 (i) f 5 (i) f 4 (i) f 3 (i) f 2 (i) f 1 (i) 1 25 1 4 2 24 1 48 2 17 1 12 2 35 2 63 3 8 2 24 2 45 2 73 4 0 2 30 2 51 2 79 5 0 2 35 2 56 2 84 6 0 2 35 2 56 2 84 10
f 2 (i) = min{c(i) + f 3 (i + 1),60 t(i) + f 3 (1)} i f 6 (i) f 5 (i) f 4 (i) f 3 (i) f 2 (i) f 1 (i) 1 25 1 4 2 24 1 48 1 76 2 17 1 12 2 35 2 63 2 87 3 8 2 24 2 45 2 73 2 97 4 0 2 30 2 51 2 79 2 103 5 0 2 35 2 56 2 84 2 108 6 0 2 35 2 56 2 84 2 108 11
f 1 (i) = min{c(i) + f 2 (i + 1),60 t(i) + f 2 (1)} i f 6 (i) f 5 (i) f 4 (i) f 3 (i) f 2 (i) f 1 (i) 1 25 1 4 2 24 1 48 1 76 1 100 2 17 1 12 2 35 2 63 2 87 2 115 3 8 2 24 2 45 2 73 2 97 2 125 4 0 2 30 2 51 2 79 2 103 2 131 5 0 2 35 2 56 2 84 2 108 2 136 6 0 2 35 2 56 2 84 2 108 2 136 12
Esimerkki: Vuoden 1 alussa kone on 2 vuoden ikäinen = f 1 (2) = 115 kun kone vaihdetaan vuoden 1 alussa = f 2 (1) = 76 kun konetta ei vaihdeta vuoden 2 alussa = f 3 (2) = 63 kun kone vaihdetaan vuoden 3 alussa = f 4 (1) = 24 kun kone vaihdetaan vuoden 4 alussa = f 5 (1) = 4 kun konetta ei vaihdeta vuoden 5 alussa 13
Sijoittajan ongelma Kokonaissumma T voidaan sijoittaa n:ään eri kohteeseen Tavoite: Määrää kuhunkin kohteeseen sijoitettava summa siten, että kokonaistuotto maksimoituu x i = kohteeseen i sijoitettava summa p i (s) = kohteen i tuotto, kun siihen sijoitetaan summa s 14
Optimointitehtävä: max p 1 (x 1 ) + + p n (x n ) kun x 1 + + x n = T x 1,..., x n 0 Rekursiofunktiot: = f j (s) = kokonaistuotto, kun sijoitetaan summa s optimaalisella tavalla kohteisiin j,..., n f n (s) = p n (s) (oletus: p n kasvaa kun s kasvaa) f j (s) = max x j {p j (x j ) + f j+1 (s x j ) x j s}, j < n 15
Esimerkki: s p 1 (s) p 2 (s) p 3 (s) p 4 (s) 0 0 0 0 0 1 4 2 6 2 2 6 4 8 3 3 7 6 8 4 4 7 8 8 4 5 7 9 8 4 6 7 10 8 4 16
f 4 (s) = p 4 (s) s f 4 (s) x 4 f 3 (s) x 3 f 2 (s) x 2 f 1 (s) x 1 0 0 0 1 2 1 2 3 2 3 4 3 4 4 3,4 5 4 3,4,5 6 4 3,4,5,6 17
f 3 (s) = max x 3 {p 3 (x 3 ) + f 4 (s x 3 ) x 3 s} s f 4 (s) x 4 f 3 (s) x 3 f 2 (s) x 2 f 1 (s) x 1 0 0 0 0 0 1 2 1 6 1 2 3 2 8 1, 2 3 4 3 10 2 4 4 3, 4 11 2 5 4 3,4,5 12 2 6 4 3,4,5,6 12 2,3 18
f 2 (s) = max x 2 {p 2 (x 2 ) + f 3 (s x 2 ) x 2 s} s f 4 (s) x 4 f 3 (s) x 3 f 2 (s) x 2 f 1 (s) x 1 0 0 0 0 0 0 0 1 2 1 6 1 6 0 2 3 2 8 1, 2 8 0, 1 3 4 3 10 2 10 0, 1, 2 4 4 3,4 11 2 12 1,2,3 5 4 3,4,5 12 2 14 2,3,4 6 4 3,4,5,6 12 2,3 16 3,4 19
f 1 (s) = max x 1 {p 1 (x 1 ) + f 2 (s x 1 ) x 1 s} s f 4 (s) x 4 f 3 (s) x 3 f 2 (s) x 2 f 1 (s) x 1 0 0 0 0 0 0 0 0 0 1 2 1 6 1 6 0 6 0 2 3 2 8 1, 2 8 0, 1 10 1 3 4 3 10 2 10 0, 1, 2 12 1, 2 4 4 3,4 11 2 12 1,2,3 14 1,2 5 4 3,4,5 12 2 14 2,3,4 16 1,2 6 4 3,4,5,6 12 2,3 16 3,4 18 1,2 20
Esimerkki: Kokonaissumma on T = 6 = f 1 (6) = 18 kun sijoitetaan x 1 = 1 (myös x 1 = 2 käy) = f 2 (5) = 14 kun sijoitetaan x 2 = 2 (myös x 2 = 3 tai 4 käyvät) = f 3 (3) = 10 kun sijoitetaan x 3 = 2 = f 4 (1) = 2 kun sijoitetaan x 4 = 1 21
Sijoittajan ongelman yleistys Kokonaissumma T voidaan sijoittaa n:ään eri kohteeseen Sijoituksen tuotto ja kulut vaihtelevat käyttöasteen mukaan Tavoite: Määrää kuhunkin kohteeseen sijoitettava summa siten, että kokonaistuotto maksimoituu x i = kohteen i käyttöaste p i (x i ) = kohteen i tuotto, kun sen käyttöaste on x i r i (x i ) = kohteen i kulut, kun sen käyttöaste on x i 22
Optimointitehtävä: max p 1 (x 1 ) + + p n (x n ) kun r 1 (x 1 ) + + r n (x n ) T x 1,..., x n 0 Rekursiofunktiot: = f j (s) = kokonaistuotto, kun sijoitetaan summa s optimaalisella tavalla kohteisiin j,..., n f n (s) = max x n {p n (x n ) r n (x n ) s} f j (s) = max x j {p j (x j ) + f j+1 (s r j (x j )) r j (x j ) s}, j < n 23
Pakkausongelma Valittavana on erilaisia esineitä, joiden yhteispaino saa olla enintään W Tavoite: Määrää mukaan otettavien esineiden lukumäärä siten, että niiden yhteisarvo maksimoituu x i = esineiden i lukumäärä a i = esineen i arvo w i = esineen i paino 24
Optimointitehtävä: max a 1 x 1 + + a n x n kun w 1 x 1 + + w n x n W x 1,..., x n N Rekursiofunktiot: = f j (w) = pakkauksen optimaalinen arvo, kun paino on enintään w ja mukana saa olla vain esineitä j,..., n f n+1 (w) = 0 (kuvitteellisen esineen n + 1 arvo) f j (w) = max x j {a j x j + f j+1 (w w j x j ) w j x j w}, j n 25
Kapsäkkiongelma Kuten pakkausongelma, paitsi että kutakin esinettä voidaan ottaa korkeintaan yksi kappale Optimointitehtävä: max a 1 x 1 + + a n x n kun w 1 x 1 + + w n x n W x 1,..., x n = 0 tai 1 26
Pelurin ongelma Lyödään vetoa neljä kertaa Yhden vedonlyönnin voiton todennäköisyys on 0.4, häviön 0.6 Voittosumma yhdessä vedonlyönnissä on sama kuin panos Alussa pelurilla on rahaa 2 yksikköä Tavoite: Maksimoida todennäköisyys sille, että pelin lopussa pelurilla on rahaa ainakin 6 yksikköä 27
Rekursiofunktiot: f j (d) = todennäköisyys sille, että lopussa on ainakin 6 yksikköä, kun pelataan optimaalisesti kerroilla j,..., 4 ja kun käytössä on d yksikköä ennen kertaa j = f 4 (d) = 0.0 kun 0 d 2 0.4 kun 3 d 5 1.0 kun d 6 f j (d) = max b j {0.4 f j+1 (d + b j ) + 0.6 f j+1 (d b j ) b j d}, j < 4 28
f 4 (d) = 0.0 kun 0 d 2 0.4 kun 3 d 5 1.0 kun d 6 d f 4 (d) b 4 f 3 (d) b 3 f 2 (d) b 2 f 1 (d) b 1 0 0.0 0 1 0.0 0 2 0.0 0 3 0.4 3 4 0.4 2 5 0.4 1 6 1.0 0 29
f 3 (d) = max b 3 {0.4 f 4 (d + b 3 ) + 0.6 f 4 (d b 3 ) b 3 d} d f 4 (d) b 4 f 3 (d) b 3 f 2 (d) b 2 f 1 (d) b 1 0 0.0 0 0.00 0 1 0.0 0 0.00 0 2 0.0 0 0.16 1 3 0.4 3 0.40 0 4 0.4 2 0.40 0 5 0.4 1 0.64 1 6 1.0 0 1.00 0 30
f 2 (d) = max b 2 {0.4 f 3 (d + b 2 ) + 0.6 f 3 (d b 2 ) b 2 d} d f 4 (d) b 4 f 3 (d) b 3 f 2 (d) b 2 f 1 (d) b 1 0 0.0 0 0.00 0 0.000 0 1 0.0 0 0.00 0 0.064 1 2 0.0 0 0.16 1 0.160 0 3 0.4 3 0.40 0 0.400 0 4 0.4 2 0.40 0 0.496 1 5 0.4 1 0.64 1 6 1.0 0 1.00 0 31
f 1 (d) = max b 1 {0.4 f 2 (d + b 1 ) + 0.6 f 2 (d b 1 ) b 1 d} d f 4 (d) b 4 f 3 (d) b 3 f 2 (d) b 2 f 1 (d) b 1 0 0.0 0 0.00 0 0.000 0 0.0000 0 1 0.0 0 0.00 0 0.064 1 0.0640 0 2 0.0 0 0.16 1 0.160 0 0.1984 1 3 0.4 3 0.40 0 0.400 0 4 0.4 2 0.40 0 0.496 1 5 0.4 1 0.64 1 6 1.0 0 1.00 0 32
Alkusumma 2 yksikköä = f 1 (2) = 0.1984 kun pelataan b 1 = 1 Jatko riippuu siitä, voitetaanko vai ei Esimerkiksi, jos ensimmäisellä kerralla voitetaan = f 2 (3) = 0.400 kun pelataan b 2 = 0 = f 3 (3) = 0.40 kun pelataan b 3 = 0 = f 4 (3) = 0.4 kun pelataan b 4 = 3 33
Jatkuva dynaaminen optimointi Määrä q (missä q > 0) halutaan jakaa n:ään osaan siten, että osien tulo on mahdollisimman suuri Merkitään osia y i :llä, i = 1,..., n Optimointitehtävä: max y 1 y n kun y 1 + + y n = q y 1,..., y n 0 34
Systeemin tila: x i = se osa määrästä q, joka varataan osille 1,..., i Rekursioyhtälöt: f 1 (x 1 ) = max y 1 {y 1 0 y 1 x 1 } f j (x j ) = max y j {y j f j 1 (x j y j ) 0 y j x j }, j > 1 35
Merkitään maksimoitavia funktioita g j :llä, ts. f j (x j ) = max yj g j (y j, x j ) = g 1 (y 1, x 1 ) = y 1 0 y 1 x 1 = y 1 = x 1 f 1 (x 1 ) = x 1 36
= g 2 (y 2, x 2 ) = y 2 f 1 (x 2 y 2 ) = y 2 (x 2 y 2 ) y 2 g 2 (y 2, x 2 ) = x 2 2y 2 = 0 = y 2 = 1 2 x 2 f 2 (x 2 ) = 1 2 x 2 ( x 2 1 ) 2 x 2 = ( ) x2 2 2 37
= g 3 (y 3, x 3 ) = y 3 f 2 (x 3 y 3 ) = y 3 ( x3 y 3 2 y 3 g 3 (y 3, x 3 ) = 1 4 (x2 3 4x 3y 3 + 3y 2 3 ) = 0 = y 3 = 1 3 x 3 ) 2 f 3 (x 3 ) = 1 3 x 3 x 3 1 3 x 3 2 2 = ( ) x3 3 3 38
=... [induktiolla]... = y i = x i i f i (x i ) = ( ) xi i i 39
Siten ratkaisu on x n = q y n = x n n = q n x n 1 = q y n = n 1 n q y n 1 = x n 1 n 1 = q n x n 2 = q y n y n 1 = n 2 n q y n 2 = x n 2 n 2 = q n.. x 1 = 1 n q y 1 = q n 40