Dynamisk programmering II - Matematik og optimering
Dynamisk programmering II - Matematik og optimering
Dynamisk programmering II - Matematik og optimering
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Det Biovidenskabelige Fakultet<br />
<strong>Dynamisk</strong> <strong>pr<strong>og</strong>rammering</strong> <strong>II</strong><br />
<strong>Matematik</strong> <strong>og</strong> <strong>optimering</strong><br />
Henrik Holm<br />
Institut for Grundvidenskab <strong>og</strong> Miljø<br />
E-mail: hholm@life.ku.dk<br />
URL: http://www.matfys.kvl.dk/Mat-Plan/<br />
31. marts 2011<br />
Dias 1/36<br />
Heltals<strong>pr<strong>og</strong>rammering</strong><br />
Ved løsning af et <strong>optimering</strong>sproblem kan man være interesseret i, at de<br />
variable x1,...,xn kun m˚a antage heltalsværdier.<br />
Advarsel. Bemærk, at den reelle løsning <strong>og</strong> heltalsløsningen for<br />
nedenst˚aende problem (Eksempel 10.2 i [HS]) er meget forskellige:<br />
• Den relle løsning er Q(4,3.2) = 7.2 = Max!<br />
• Heltalsløsningen er Q(0,0) = 0 = Max!<br />
⎧<br />
⎪⎨<br />
Q(x,y) = x + y = Max!<br />
17x − 20y 4<br />
⎪⎩<br />
−15x + 20y 4<br />
x,y 0<br />
Dias 3/36 — Henrik Holm (IGM) — <strong>Dynamisk</strong> <strong>pr<strong>og</strong>rammering</strong> <strong>II</strong> — 31. marts 2011<br />
4<br />
3<br />
2<br />
1<br />
y<br />
*<br />
*<br />
*<br />
−15x+20y=4<br />
*<br />
*<br />
*<br />
*<br />
17x−20y=4<br />
*<br />
*<br />
*<br />
*<br />
*<br />
(4,3.2)<br />
1 2 3 4 5<br />
*<br />
*<br />
*<br />
*<br />
*<br />
Q=7.2 *<br />
*<br />
*<br />
x<br />
Indhold<br />
1 Heltals<strong>pr<strong>og</strong>rammering</strong><br />
2 Kompleksitetsbetragtninger<br />
3 Markov-beslutningsprocesser<br />
Dias 2/36 — Henrik Holm (IGM) — <strong>Dynamisk</strong> <strong>pr<strong>og</strong>rammering</strong> <strong>II</strong> — 31. marts 2011<br />
Gomory’s metode.<br />
For løsning af heltals LP-problemer findes en variant af simpleksmetoden<br />
kaldet Gomory’s metode [HS, kapitel 10].<br />
<strong>Dynamisk</strong> <strong>pr<strong>og</strong>rammering</strong>.<br />
<strong>Dynamisk</strong> <strong>pr<strong>og</strong>rammering</strong> kan <strong>og</strong>s˚a bruges til at løse <strong>optimering</strong>sproblemer<br />
med heltallige variable. Følgende resultater er heltalsvarianter af resulater fra<br />
sidste forelæsning.<br />
Dias 4/36 — Henrik Holm (IGM) — <strong>Dynamisk</strong> <strong>pr<strong>og</strong>rammering</strong> <strong>II</strong> — 31. marts 2011
<strong>Dynamisk</strong> heltals<strong>pr<strong>og</strong>rammering</strong> A<br />
Betragt et <strong>optimering</strong>sproblem af typen:<br />
⎧<br />
⎨ Q(x) = ϕ1(x1)···ϕn(xn) = Max!<br />
h1(x1) + ··· + hn(xn) b<br />
⎩<br />
x1,...,xn 0 heltal<br />
hvor ϕs er positiv, hs voksende <strong>og</strong> b ∈ N0. Dette problem kan løses ved at indføre:<br />
g1(λ) = max<br />
0x1[ξ1] {ϕ1(x1)}<br />
gs(λ) = max<br />
0xs[ξs] {gs−1(λ − hs(xs))ϕs(xs)} (s = 2,...,n)<br />
hvor λ ∈ {0,...,b} <strong>og</strong> ξs er løsningen til ligningen hs(ξs) = λ.<br />
Lad x ◦ s (λ) betegne værdien/værdierne af xs der realiserer maksimum gs(λ).<br />
Max-værdien for (∗) er da gn(b) <strong>og</strong> max-punktet/punkterne x ◦ er:<br />
x ◦ n = x ◦ n (b)<br />
x ◦ n−1 = x◦ n−1 (b − hn(x ◦ n ))<br />
.<br />
x ◦ 1 = x ◦ 1 (b − hn(x ◦ n ) − ··· − h2(x ◦ 2 ))<br />
Her betegner [·] heltalsdelen. Fx er [5.23] = 5 <strong>og</strong> [3] = 3.<br />
Dias 5/36 — Henrik Holm (IGM) — <strong>Dynamisk</strong> <strong>pr<strong>og</strong>rammering</strong> <strong>II</strong> — 31. marts 2011<br />
Eksempel: Lineær bibetingelse 1/8<br />
⎧<br />
⎨ Q(x1,x2,x3) = x<br />
⎩<br />
3 1 + x2 + 2x 2 3 = Max!<br />
4x1 + x2 + 2x3 33<br />
x1,x2,x3 0 heltal<br />
Da 4ξ1 = λ f˚as ξ1 = λ . Vi har derfor:<br />
4<br />
Eksempelvis er:<br />
<strong>og</strong> vi noterer at x ◦ 1 (13) = 3.<br />
Dias 7/36 — Henrik Holm (IGM) — <strong>Dynamisk</strong> <strong>pr<strong>og</strong>rammering</strong> <strong>II</strong> — 31. marts 2011<br />
g1(λ) = max<br />
0x1[ λ 4 ] {x 3 1 }.<br />
⎧<br />
⎪⎨<br />
g1(13) = max<br />
⎪⎩<br />
0 3 = 0<br />
1 3 = 1<br />
2 3 = 8<br />
3 3 = 27<br />
⎫<br />
⎪⎬<br />
= 27,<br />
⎪⎭<br />
(∗)<br />
<strong>Dynamisk</strong> heltals<strong>pr<strong>og</strong>rammering</strong> B<br />
Betragt et <strong>optimering</strong>sproblem af typen:<br />
⎧<br />
⎨ Q(x) = ϕ1(x1) + ··· + ϕn(xn) = Max!<br />
h1(x1) + ··· + hn(xn) b<br />
⎩<br />
x1,...,xn 0 heltal<br />
hvor hs voksende <strong>og</strong> b ∈ N0. Dette problem kan løses ved at indføre følgende<br />
g1(λ) = max<br />
0x1[ξ1] {ϕ1(x1)}<br />
gs(λ) = max<br />
0xs[ξs] {gs−1(λ − hs(xs)) + ϕs(xs)} (s = 2,...,n)<br />
hvor λ ∈ {0,...,b} <strong>og</strong> ξs er løsningen til ligningen hs(ξs) = λ.<br />
Lad x ◦ s (λ) betegne værdien/værdierne af xs der realiserer maksimum gs(λ).<br />
Max-værdien for (∗) er da gn(b) <strong>og</strong> max-punktet/punkterne x ◦ er:<br />
Dias 6/36 — Henrik Holm (IGM) — <strong>Dynamisk</strong> <strong>pr<strong>og</strong>rammering</strong> <strong>II</strong> — 31. marts 2011<br />
x ◦ n = x ◦ n (b)<br />
x ◦ n−1 = x◦ n−1 (b − hn(x ◦ n ))<br />
.<br />
x ◦ 1 = x ◦ 1 (b − hn(x ◦ n ) − ··· − h2(x ◦ 2 ))<br />
Eksempel: Lineær bibetingelse 2/8<br />
S˚aledes fremkommer følgende tabel for (g1,x ◦ 1 ):<br />
Dias 8/36 — Henrik Holm (IGM) — <strong>Dynamisk</strong> <strong>pr<strong>og</strong>rammering</strong> <strong>II</strong> — 31. marts 2011<br />
λ g1(λ) x ◦ 1 (λ)<br />
[0,3] 0 0<br />
[4,7] 1 1<br />
[8,11] 8 2<br />
[12,15] 27 3<br />
[16,19] 64 4<br />
[20,23] 125 5<br />
[24,27] 216 6<br />
[28,31] 343 7<br />
[32,33] 512 8<br />
(∗)
Eksempel: Lineær bibetingelse 3/8<br />
Dernæst har vi ξ2 = λ <strong>og</strong> dermed:<br />
g2(λ) = max {g1(λ − x2) + x2}.<br />
0x2[λ]<br />
Eksempelvis er:<br />
⎧<br />
⎫<br />
g1(8) + 0 = 8 + 0 = 8<br />
g1(7) + 1 = 1 + 1 = 2<br />
g1(6) + 2 = 1 + 2 = 3<br />
⎪⎨ g1(5) + 3 = 1 + 3 = 4⎪⎬<br />
g2(8) = max g1(4) + 4 = 1 + 4 = 5 = 8,<br />
g1(3) + 5 = 0 + 5 = 5<br />
g1(2) + 6 = 0 + 6 = 6<br />
⎪⎩<br />
g1(1) + 7 = 0 + 7 = 7⎪⎭<br />
g1(0) + 8 = 0 + 8 = 8<br />
<strong>og</strong> vi noterer at x ◦ 2 (8) = 0 eller x◦ 2 (8) = 8.<br />
Dias 9/36 — Henrik Holm (IGM) — <strong>Dynamisk</strong> <strong>pr<strong>og</strong>rammering</strong> <strong>II</strong> — 31. marts 2011<br />
Eksempel: Lineær bibetingelse 5/8<br />
Endelig haves 2ξ3 = λ dvs. ξ3 = λ 2<br />
<strong>og</strong> dermed:<br />
g3(λ) = max<br />
0x3[ λ 2 ] {g2(λ − 2x3) + 2x 2 3 }.<br />
Eksempelvis er:<br />
⎧<br />
g2(11) + 2·0<br />
⎪⎨<br />
g3(11) = max<br />
⎪⎩<br />
2 = 11 + 0 = 11<br />
g2(9) + 2·1 2 = 9 + 2 = 11<br />
g2(7) + 2·2 2 = 7 + 8 = 15<br />
g2(5) + 2·3 2 = 5 + 18 = 23<br />
g2(3) + 2·4 2 = 3 + 32 = 35<br />
g2(1) + 2·5 2 ⎫<br />
⎪⎬<br />
= 51,<br />
⎪⎭<br />
= 1 + 50 = 51<br />
<strong>og</strong> vi noterer at x ◦ 3 (11) = 5.<br />
Dias 11/36 — Henrik Holm (IGM) — <strong>Dynamisk</strong> <strong>pr<strong>og</strong>rammering</strong> <strong>II</strong> — 31. marts 2011<br />
Eksempel: Lineær bibetingelse 4/8<br />
S˚aledes fremkommer følgende tabel for (g2,x ◦ 2 ):<br />
λ g2(λ) x ◦ 2 (λ) λ g2(λ) x ◦ 2 (λ) λ g2(λ) x ◦ 2 (λ)<br />
0 0 0 12 27 0 24 216 0<br />
1 1 1 13 28 1 25 217 1<br />
2 2 2 14 29 2 26 218 2<br />
3 3 3 15 30 3 27 219 3<br />
4 4 4 16 64 0 28 343 0<br />
5 5 5 17 65 1 29 344 1<br />
6 6 6 18 66 2 30 345 2<br />
7 7 7 19 67 3 31 346 3<br />
8 8 0,8 20 125 0 32 512 0<br />
9 9 1,9 21 126 1 33 513 1<br />
10 10 2,10 22 127 2<br />
11 11 3,11 23 128 3<br />
Dias 10/36 — Henrik Holm (IGM) — <strong>Dynamisk</strong> <strong>pr<strong>og</strong>rammering</strong> <strong>II</strong> — 31. marts 2011<br />
Eksempel: Lineær bibetingelse 6/8<br />
S˚aledes fremkommer følgende tabel for (g3,x ◦ 3 ):<br />
λ g3(λ) x ◦ 3 (λ) λ g3(λ) x ◦ 3 (λ) λ g3(λ) x ◦ 3 (λ)<br />
0 0 0 12 72 6 24 288 12<br />
1 1 0 13 73 6 25 289 12<br />
2 2 0,1 14 98 7 26 338 13<br />
3 3 0,1 15 99 7 27 339 13<br />
4 8 2 16 128 8 28 392 14<br />
5 9 2 17 129 8 29 393 14<br />
6 18 3 18 162 9 30 450 15<br />
7 19 3 19 163 9 31 451 15<br />
8 32 4 20 200 10 32 512 0,16<br />
9 33 4 21 201 10 33 513 0,16<br />
10 50 5 22 242 11<br />
11 51 5 23 243 11<br />
Dias 12/36 — Henrik Holm (IGM) — <strong>Dynamisk</strong> <strong>pr<strong>og</strong>rammering</strong> <strong>II</strong> — 31. marts 2011
Eksempel: Lineær bibetingelse 7/8<br />
Fra forrige tabel er vi egentlig kun interesseret i tallet:<br />
g3(33) = 513,<br />
(33) = 0<br />
(33) = 16 findes de to maksimumspunkter for problemet nu s˚aledes:<br />
da dette jo er maksimumsværdien for det givne problem. Ud fra x ◦ 3<br />
eller x ◦ 3<br />
Vi gør prøve:<br />
Dias 13/36 — Henrik Holm (IGM) — <strong>Dynamisk</strong> <strong>pr<strong>og</strong>rammering</strong> <strong>II</strong> — 31. marts 2011<br />
x ◦ 3 (33) = 0 x◦ 3<br />
x ◦ 2 (33−2·0) = 1 x◦ 2<br />
x ◦ 1 (33−2·0−1) = 8 x◦ 1<br />
(33) = 16<br />
(33−2·16) = 1<br />
(33−2·16−1) = 0<br />
Q(8,1,0) = 8 3 +1+2·0 2 = 513,<br />
Q(0,1,16) = 0 3 +1+2·16 2 = 513.<br />
N˚ar heltalsproblemer løses ved dynamisk <strong>pr<strong>og</strong>rammering</strong> er udarbejdelsen<br />
af tabellerne for (g1,x ◦ 1 ),(g2,x ◦ 2 ),... ingen faglig udfordring – kun besværligt.<br />
R-funktionen DynTable (fra kursushjemmesiden) kan lette arbejdet:<br />
⎧<br />
⎨ Q(x1,x2,x3) = x<br />
⎩<br />
3 1 + x2 + 2x 2 3 = Max!<br />
4x1 + x2 + 2x3 33<br />
x1,x2,x3 0 heltal<br />
Først indtastes problemets data:<br />
> phi1 phi2 phi3 phi h1 h2 h3 h b DynTable(phi,h,b,"+",1)<br />
[,1] [,2] [,3]<br />
[1,] 0 0 0<br />
[2,] 1 0 0<br />
[3,] 2 0 0<br />
[4,] 3 0 0<br />
[5,] 4 1 1<br />
[6,] 5 1 1<br />
[7,] 6 1 1<br />
[8,] 7 1 1<br />
[9,] 8 8 2<br />
...<br />
[28,] 27 216 6<br />
[29,] 28 343 7<br />
[30,] 29 343 7<br />
[31,] 30 343 7<br />
[32,] 31 343 7<br />
[33,] 32 512 8<br />
[34,] 33 512 8<br />
Dias 16/36 — Henrik Holm (IGM) — <strong>Dynamisk</strong> <strong>pr<strong>og</strong>rammering</strong> <strong>II</strong> — 31. marts 2011
Tabellen for (g2,x ◦ 2 ) frembringes af DynTable s˚aledes:<br />
> DynTable(phi,h,b,"+",2)<br />
[,1] [,2] [,3] [,4]<br />
[1,] 0 0 0 -1<br />
[2,] 1 1 1 -1<br />
[3,] 2 2 2 -1<br />
[4,] 3 3 3 -1<br />
[5,] 4 4 4 -1<br />
[6,] 5 5 5 -1<br />
[7,] 6 6 6 -1<br />
[8,] 7 7 7 -1<br />
[9,] 8 8 0 8<br />
[10,] 9 9 1 9<br />
[11,] 10 10 2 10<br />
[12,] 11 11 3 11<br />
[13,] 12 27 0 -1<br />
...<br />
[32,] 31 346 3 -1<br />
[33,] 32 512 0 -1<br />
[34,] 33 513 1 -1<br />
Dias 17/36 — Henrik Holm (IGM) — <strong>Dynamisk</strong> <strong>pr<strong>og</strong>rammering</strong> <strong>II</strong> — 31. marts 2011<br />
Eksempel: Ikke-lineær bibetingelse 1/2<br />
⎧<br />
⎨ Q(x1,x2) = 8x1 + 3x2 = Max!<br />
4x<br />
⎩<br />
2 1 + x 2 2 25<br />
x1,x2 0 heltal<br />
Først bestemmes ξ1 ved:<br />
Vi betragter s˚a funktionen:<br />
Man finder:<br />
Dias 19/36 — Henrik Holm (IGM) — <strong>Dynamisk</strong> <strong>pr<strong>og</strong>rammering</strong> <strong>II</strong> — 31. marts 2011<br />
4ξ 2 1 = λ ⇐⇒ ξ1 =<br />
g1(λ) = max<br />
0x1<br />
√<br />
λ<br />
2<br />
√ λ<br />
2<br />
{8x1}.<br />
λ g1(λ) x ◦ 1 (λ)<br />
[0,3] 0 0<br />
[4,15] 8 1<br />
[16,25] 16 2<br />
Tabellen for (g3,x ◦ 3 ) frembringes af DynTable s˚aledes:<br />
> DynTable(phi,h,b,"+",3)<br />
[,1] [,2] [,3] [,4]<br />
[1,] 0 0 0 -1<br />
[2,] 1 1 0 -1<br />
[3,] 2 2 0 1<br />
[4,] 3 3 0 1<br />
[5,] 4 8 2 -1<br />
[6,] 5 9 2 -1<br />
[7,] 6 18 3 -1<br />
[8,] 7 19 3 -1<br />
[9,] 8 32 4 -1<br />
[10,] 9 33 4 -1<br />
[11,] 10 50 5 -1<br />
[12,] 11 51 5 -1<br />
...<br />
[31,] 30 450 15 -1<br />
[32,] 31 451 15 -1<br />
[33,] 32 512 0 16<br />
[34,] 33 513 0 16<br />
Dias 18/36 — Henrik Holm (IGM) — <strong>Dynamisk</strong> <strong>pr<strong>og</strong>rammering</strong> <strong>II</strong> — 31. marts 2011<br />
Eksempel: Ikke-lineær bibetingelse 2/2<br />
Herefter bestemmes ξ2 ved:<br />
Vi betragter s˚a funktionen:<br />
ξ 2 2 = λ ⇐⇒ ξ2 = √ λ<br />
g2(λ) = max<br />
0x2[ √ {g1(λ − x<br />
λ]<br />
2 2 ) + 3x2}.<br />
Maksimumsværdien for problemet er:<br />
⎧<br />
⎫<br />
g1(25) + 3·0 = 16 + 0 = 16<br />
⎪⎨<br />
g1(24) + 3·1 = 16 + 3 = 19⎪⎬<br />
g1(21) + 3·2 = 16 + 6 = 22<br />
g2(25) = max<br />
= 25,<br />
g1(16) + 3·3 = 16 + 9 = 25<br />
⎪⎩<br />
g1(9) + 3·4 = 8 + 12 = 20⎪⎭<br />
g1(0) + 3·5 = 0 + 15 = 15<br />
<strong>og</strong> vi noterer at x ◦ 2 (25) = 3. Maksimumspunktet er derfor:<br />
Alts˚a:<br />
Dias 20/36 — Henrik Holm (IGM) — <strong>Dynamisk</strong> <strong>pr<strong>og</strong>rammering</strong> <strong>II</strong> — 31. marts 2011<br />
x ◦ 2 (25) = 3<br />
x ◦ 1 (25 − 32 ) = 2<br />
Q(2,3) = 8·2+3·3 = 25 = Max!
Kompleksitetsbetragtninger<br />
Lad os fx betragte problemet:<br />
⎧<br />
⎨ Q(x1,...,xn) = ϕ1(x1) + ··· + ϕn(xn) = Max!<br />
x1 + ··· + xn b<br />
⎩<br />
x1,...,xn 0 heltal<br />
Der er (binomialkefficient) n+b<br />
b<br />
Dias 21/36 — Henrik Holm (IGM) — <strong>Dynamisk</strong> <strong>pr<strong>og</strong>rammering</strong> <strong>II</strong> — 31. marts 2011<br />
6<br />
5<br />
4<br />
3<br />
2<br />
1<br />
0<br />
*<br />
*<br />
*<br />
*<br />
*<br />
*<br />
*<br />
x 2<br />
*<br />
*<br />
x 1 + x2 = 5<br />
*<br />
*<br />
*<br />
*<br />
*<br />
2+5<br />
tilladte punkter. Eksempelvis er = 21.<br />
*<br />
*<br />
*<br />
*<br />
*<br />
*<br />
*<br />
*<br />
*<br />
*<br />
*<br />
*<br />
*<br />
*<br />
0 1 2 3 4 5 6<br />
Kompleksitet ved dynamisk <strong>pr<strong>og</strong>rammering</strong>.<br />
• Der kræves λ binære operationer for udregning af<br />
g1(λ) = max<br />
0x1λ {ϕ1(x1)}.<br />
Udregning af første tabel g1(0),...,g1(b) har alts˚a kompleksitet:<br />
0 + 1 + ··· + b = 1<br />
b(b + 1).<br />
2<br />
• Der kræves (λ+1)+λ = 2λ+1 binære operationer for udregning af<br />
gs(λ) = max<br />
0xsλ {gs−1(λ − xs) + ϕs(xs)}.<br />
Udregning af den s’te tabel gs(0),...,gs(b) har alts˚a kompleksitet:<br />
(2·0 +1) + (2·1+1) + ··· + (2b +1) = (b +1) 2 .<br />
• Udregning af de n −1 tabeller for g2,...,gn kræver s˚a (n − 1)(b + 1) 2 .<br />
Den samlede kompleksitet ved dynamisk <strong>pr<strong>og</strong>rammering</strong> er derfor:<br />
Dias 23/36 — Henrik Holm (IGM) — <strong>Dynamisk</strong> <strong>pr<strong>og</strong>rammering</strong> <strong>II</strong> — 31. marts 2011<br />
cdynamisk(b,n) = 1<br />
2 b(b + 1) + (n − 1)(b + 1)2 .<br />
*<br />
*<br />
*<br />
*<br />
*<br />
*<br />
*<br />
*<br />
*<br />
*<br />
*<br />
*<br />
*<br />
*<br />
*<br />
*<br />
*<br />
*<br />
*<br />
*<br />
x 1<br />
*<br />
5<br />
Kompleksitet ved naiv løsning.<br />
⎧<br />
⎨ Q(x1,...,xn) = ϕ1(x1) + ··· + ϕn(xn) = Max!<br />
x1 + ··· + xn b<br />
⎩<br />
x1,...,xn 0 heltal<br />
• Udregn Q(x) = ϕ1(x1) + ··· + ϕn(xn) i samtlige n+b<br />
tilladte punkter.<br />
b<br />
Kompleksitet: (n − 1) n+b<br />
. b<br />
• Udtag blandt de n+b<br />
beregnede funktionsværdier den største.<br />
b n+b<br />
Kompleksitet: − 1.<br />
b<br />
Den samlede kompleksitet ved naiv løsning er derfor:<br />
<br />
n + b n + b<br />
n + b<br />
cnaiv(b,n) = (n − 1) + − 1 = n − 1.<br />
b b<br />
b<br />
Dias 22/36 — Henrik Holm (IGM) — <strong>Dynamisk</strong> <strong>pr<strong>og</strong>rammering</strong> <strong>II</strong> — 31. marts 2011<br />
(b,n) cnaiv(b,n) cdynamisk(b,n)<br />
(50,5) 17393804 11679<br />
(100,5) 482803229 45854<br />
(50,20) 10 18<br />
50694<br />
(100,20) 10 23<br />
198869<br />
(50,40) 10 27<br />
102714<br />
(100,40) 10 36<br />
402889<br />
Hvis 1000000 IBM Roadrunners (hver 10 15 FLOPS) samarbejdede om den<br />
naive løsning for b = 100 <strong>og</strong> n = 40, ville tidsforbruget være:<br />
10 36<br />
1000000 · 10 15 sek −1 = 1015 sek ≈ 32 millioner ˚ar.<br />
Hvis en lommeregner (10 FLOPS) løste samme problem med dynamisk<br />
<strong>pr<strong>og</strong>rammering</strong> ville tidsforbruget være:<br />
Dias 24/36 — Henrik Holm (IGM) — <strong>Dynamisk</strong> <strong>pr<strong>og</strong>rammering</strong> <strong>II</strong> — 31. marts 2011<br />
402889<br />
= 40289sek ≈ 11 timer.<br />
−1<br />
10sek<br />
(∗)
Markov-beslutningsprocesser<br />
En Markov-beslutningsproces best˚ar af følgende data:<br />
1 Et system der kan være i N tilstande S1,...,SN.<br />
Systemet ændrer tilstand over tid.<br />
En fabrikants markedsandel kan hvert ˚ar være:<br />
S1: Høj ( 10%)<br />
S2: Lav (< 10%)<br />
2 I hver tilstand Si kan der foretages valgene ki = 1,...,Ki.<br />
Hvis markedsandelen er høj (S1) kan fabrikanten vælge:<br />
Valg k1 = 1: En dyr reklamekampagne ( 50000 kr)<br />
Valg k1 = 2: En billig reklamekampagne (< 50000 kr)<br />
Hvis markedsandelen er lav (S2) kan fabrikanten vælge:<br />
Valg k2 = 1: En dyr markedsanalyse ( 10000 kr)<br />
Valg k2 = 2: En billig markedsanalyse (< 10000 kr)<br />
Ved en strategi forst˚as et fast valg af værdierne (k1,...,kN).<br />
Dias 25/36 — Henrik Holm (IGM) — <strong>Dynamisk</strong> <strong>pr<strong>og</strong>rammering</strong> <strong>II</strong> — 31. marts 2011<br />
4 Ved overgang af systemet fra tilstand Si til Sj er der, under valget ki, en<br />
vis fortjeneste r ki<br />
ij .<br />
N˚ar markedsandelen er høj (S1) haves indtægterne:<br />
(r 1 11,r 1 12) = (80,40) <strong>og</strong> (r 2 11,r 2 12) = (100,60)<br />
Hvis markedsandelen faktisk <strong>og</strong>s˚a bliver høj ˚aret efter, <strong>og</strong> man havde satset<br />
p˚a en dyr/billig reklamekampagne, da tjenes 80/100.<br />
N˚ar markedsandelen er lav (S2) haves indtægterne:<br />
(r 1 21,r 1 22) = (40,10) <strong>og</strong> (r 2 21,r 2 22) = (60,21)<br />
Hvis markedsandelen faktisk g˚ar hen <strong>og</strong> bliver høj ˚aret efter, <strong>og</strong> man havde<br />
satset p˚a en dyr/billig markedsanalyse, da tjenes 40/60.<br />
Markov-beslutningsprocessen i eksemplet indeholder alts˚a følgende data:<br />
Dias 27/36 — Henrik Holm (IGM) — <strong>Dynamisk</strong> <strong>pr<strong>og</strong>rammering</strong> <strong>II</strong> — 31. marts 2011<br />
Tilstand Valg p k ij r k<br />
ij<br />
i k j = 1 j = 2 j = 1 j = 2<br />
1<br />
2<br />
1 0.7 0.3 80 40<br />
2 0.5 0.5 100 60<br />
1 0.6 0.4 40 10<br />
2 0.33 0.67 60 21<br />
3 Hvis der i tilstand Si foretages valget ki ∈ {1,...,Ki}, s˚a skifter<br />
systemet til tilstand Sj med sandynlighed p ki<br />
ij .<br />
N˚ar markedsandelen er høj (S1) haves sandsynlighederne:<br />
(p 1 11,p 1 12) = (0.7,0.3) <strong>og</strong> (p 2 11,p 2 12) = (0.5,0.5)<br />
Hvis der fx laves en dyr/billig reklamekampagne da er der 70/50%<br />
sandsynlighed for, at markedsandelen <strong>og</strong>s˚a vil være høj næste ˚ar.<br />
N˚ar markedsandelen er lav (S2) haves sandsynlighederne:<br />
(p 1 21,p 1 22) = (0.6,0.4) <strong>og</strong> (p 2 21,p 2 22) = (0.33,0.67)<br />
Hvis der fx laves en dyr/billig markedsanalyse, da er der 60/33%<br />
sandsynlighed for, at markedsandelen vil blive høj næste ˚ar.<br />
Dias 26/36 — Henrik Holm (IGM) — <strong>Dynamisk</strong> <strong>pr<strong>og</strong>rammering</strong> <strong>II</strong> — 31. marts 2011<br />
Givet en strategi (k1,...,kN) er man interesseret i at kende:<br />
v (k1,...,kN<br />
⎧<br />
⎨ Den forventede indtægt over en n-˚ars periode<br />
)<br />
i (n) = hvis systemet som udgangspunkt er i tilstand Si<br />
⎩<br />
<strong>og</strong> man konsekvent følger strategien (k1,...,kN).<br />
Systemet skifter efter første ˚ar tilstand til Sj med sandsynlighed p ki<br />
ij , <strong>og</strong> hvis<br />
dette sker da m˚a den forventede indtægt være:<br />
r ki<br />
ij + v (k1,...,kN )<br />
j<br />
(n − 1).<br />
Størrelsen v (k1,...,kN )<br />
i (n) beregnes derfor som følgende vægtede gennemsnit:<br />
v (k1,...,kN )<br />
i<br />
Her er v (k1,...,kN )<br />
i (0) = 0.<br />
Dias 28/36 — Henrik Holm (IGM) — <strong>Dynamisk</strong> <strong>pr<strong>og</strong>rammering</strong> <strong>II</strong> — 31. marts 2011<br />
(n) =<br />
N<br />
∑<br />
j=1<br />
p ki ki<br />
ij (r<br />
ij + v (k1,...,kN )<br />
j<br />
(n − 1))
Hvis vi indfører:<br />
v (k1,...,kN<br />
⎛<br />
v<br />
⎜<br />
)<br />
(n) = ⎜<br />
⎝<br />
(k1,...,kN )<br />
1 (n)<br />
v (k1,...,kN )<br />
2 (n)<br />
.<br />
v (k1,...,kN<br />
⎞<br />
⎟<br />
⎠<br />
)<br />
N (n)<br />
⎛ ⎞ ⎛<br />
q k1<br />
1<br />
q k2<br />
2<br />
q (k1,...,kN<br />
⎜ ⎟<br />
) ⎜ ⎟<br />
= ⎜ . ⎟<br />
⎝ . ⎠ =<br />
⎜<br />
⎝<br />
⎛<br />
q kN<br />
N<br />
p k1<br />
11<br />
p k2<br />
21<br />
P (k1,...,kN<br />
⎜<br />
) ⎜<br />
= ⎜ .<br />
⎝ .<br />
p kN<br />
N1<br />
da f˚as alts˚a sammenhængen:<br />
Dias 29/36 — Henrik Holm (IGM) — <strong>Dynamisk</strong> <strong>pr<strong>og</strong>rammering</strong> <strong>II</strong> — 31. marts 2011<br />
p k1<br />
11<br />
p k2<br />
21<br />
k1 r11 k2 r21 p kN kN<br />
N1rN1 + pk1<br />
12<br />
+ pk2<br />
22<br />
p k1<br />
12 ··· p k1<br />
1N<br />
p k2<br />
22 ··· p k2<br />
2N<br />
.<br />
. ..<br />
p kN<br />
N2 ··· p kN<br />
NN<br />
k1 r12 k2 r22 kN + pkN<br />
N2rN2 ⎞<br />
⎟<br />
. ⎟<br />
. ⎠<br />
k1 ⎞<br />
+ ··· + pk1<br />
1Nr1N k2<br />
+ ··· + pk2<br />
2Nr ⎟<br />
2N ⎟<br />
.<br />
⎟<br />
.<br />
⎠<br />
kN<br />
+ ··· + pkN<br />
NNrNN v (k1,...,kN ) (n) = q (k1,...,kN ) + P (k1,...,kN ) v (k1,...,kN ) (n − 1)<br />
Man kan fx nu succesivt udregne:<br />
v (1,1) <br />
0<br />
(0) =<br />
0<br />
v (1,1) <br />
68 0.7 0.3 0 68<br />
(1) = +<br />
=<br />
28 0.6 0.4 0 28<br />
v (1,1) <br />
68 0.7 0.3 68 124<br />
(2) = +<br />
=<br />
28 0.6 0.4 28 80<br />
v (1,1) <br />
68 0.7 0.3 124 179<br />
(3) = +<br />
=<br />
28 0.6 0.4 80 134<br />
Dias 31/36 — Henrik Holm (IGM) — <strong>Dynamisk</strong> <strong>pr<strong>og</strong>rammering</strong> <strong>II</strong> — 31. marts 2011<br />
.<br />
For strategien (k1,k2) = (1,1) (dvs. man vælger konsekvent den dyreste<br />
reklamekampagne <strong>og</strong> den dyreste markedsanalyse) f˚as:<br />
v (1,1) <br />
v<br />
(n) =<br />
(1,1)<br />
1 (n)<br />
v (1,1)<br />
<br />
2 (n)<br />
q (1,1) <br />
1<br />
q1 =<br />
q 1 <br />
1<br />
p11r =<br />
2<br />
1 11 + p1 12r 1 12<br />
p 1 21r 1 21 + p1 22r 1 <br />
=<br />
22<br />
P (1,1) <br />
1<br />
p11 p<br />
=<br />
1 <br />
12 0.7 0.3<br />
=<br />
0.6 0.4<br />
p 1 21<br />
p 1 22<br />
Dias 30/36 — Henrik Holm (IGM) — <strong>Dynamisk</strong> <strong>pr<strong>og</strong>rammering</strong> <strong>II</strong> — 31. marts 2011<br />
<br />
0.7 · 80 + 0.3 · 40<br />
=<br />
0.6 · 40 + 0.4 · 10<br />
Tilstand Valg p k ij r k<br />
ij q k i k j = 1 j = 2 j = 1 j = 2<br />
i<br />
1<br />
1<br />
2<br />
0.7<br />
0.5<br />
0.3<br />
0.5<br />
80<br />
100<br />
40<br />
60<br />
68<br />
80<br />
2<br />
1<br />
2<br />
0.6<br />
0.33<br />
0.4<br />
0.67<br />
40<br />
60<br />
10<br />
21<br />
28<br />
34<br />
Gevinsten g (k1,...,kN ) for strategien (k1,...,kN) er den asymptotiske<br />
gennemsnitlige ˚arlige indtægt – som faktisk er uafhængig af i – alts˚a:<br />
1<br />
n v (k1,...,kN )<br />
i (n) → g (k1,...,kN )<br />
for n → ∞<br />
For strategien (k1,k2) = (1,1) finder vi:<br />
1<br />
10 v (1,1) (10) = 1<br />
<br />
561 56.1<br />
=<br />
10 517 51.7<br />
1<br />
100 v (1,1) (100) = 1<br />
<br />
5481 54.8<br />
=<br />
100 5437 54.4<br />
1<br />
1000 v (1,1) (1000) = 1<br />
<br />
54681 54.7<br />
=<br />
1000 54637 54.6<br />
1<br />
10000 v (1,1) (10000) = 1<br />
<br />
546681 54.7<br />
=<br />
10000 546637 54.7<br />
Gevinsten for denne strategi er alts˚a g (1,1) = 54.7 (kr/˚ar i gennemsnit).<br />
Dias 32/36 — Henrik Holm (IGM) — <strong>Dynamisk</strong> <strong>pr<strong>og</strong>rammering</strong> <strong>II</strong> — 31. marts 2011<br />
<br />
68<br />
28
Vi kan p˚a denne m˚ade udregne gevinsten for alle fire mulige strategier:<br />
g (1,1) = 54.7<br />
g (1,2) = 51.9<br />
g (2,1) = 56.4 <br />
g (2,2) = 52.4<br />
Den optimale strategi er alts˚a (2,1), dvs.<br />
• N˚ar markedsandelen er høj skal man lave billig reklamekampagne<br />
• N˚ar markedsandelen er lav skal man lave dyr markedsanalyse<br />
Denne metode til at finde den optimale strategi kræver mange beregninger.<br />
<strong>Dynamisk</strong> <strong>pr<strong>og</strong>rammering</strong> giver det bedste alternativ...<br />
Dias 33/36 — Henrik Holm (IGM) — <strong>Dynamisk</strong> <strong>pr<strong>og</strong>rammering</strong> <strong>II</strong> — 31. marts 2011<br />
Eksempel: Howards metode 1/2<br />
Af værdierne nedenfor ses, at vi starter med strategien (k1,k2) = (2,2).<br />
Tilstand Valg p k ij r k<br />
ij q k i k j = 1 j = 2 j = 1 j = 2<br />
i<br />
1<br />
1<br />
2<br />
0.7<br />
0.5<br />
0.3<br />
0.5<br />
80<br />
100<br />
40<br />
60<br />
68<br />
80<br />
2<br />
1<br />
2<br />
0.6<br />
0.33<br />
0.4<br />
0.67<br />
40<br />
60<br />
10<br />
21<br />
28<br />
34<br />
S˚a sættes u2 = 0 <strong>og</strong> vi løser ligningen:<br />
<br />
g 1 − 0.5 −0.5 u1 80<br />
+<br />
=<br />
g −0.33 1 − 0.67<br />
34<br />
Ud fra disse værdier beregnes:<br />
<br />
¯q 1<br />
1<br />
¯q 2 <br />
68 0.7 0.3<br />
= +<br />
1 80 0.5 0.5<br />
<br />
¯q 1<br />
2 28 0.6 0.4<br />
= +<br />
34 0.33 0.76<br />
¯q 2 2<br />
u2<br />
u1<br />
u2<br />
<br />
u1<br />
Det nye valg af strategi er derfor (k1,k2) = (2,1).<br />
Dias 35/36 — Henrik Holm (IGM) — <strong>Dynamisk</strong> <strong>pr<strong>og</strong>rammering</strong> <strong>II</strong> — 31. marts 2011<br />
=⇒<br />
⎧<br />
⎨<br />
⎩<br />
<br />
106.64<br />
=<br />
107.60<br />
<br />
61.12<br />
=<br />
52.40<br />
u2<br />
g = 52.4<br />
u1 = 55.2<br />
u2 = 0<br />
Howards metode til bestemmelse af optimal strategi<br />
1 Vælg for hver tilstand i værdien ki s˚a q k1<br />
i er størst blandt q1 i ,q2 i ,...<br />
2 Med disse værdier (k1,...,kN) løses nu ligningerne<br />
⎛ ⎞<br />
g<br />
⎜ . ⎟<br />
⎝ . ⎠ + (I − P<br />
g<br />
(k1,...,kN<br />
⎛<br />
) ⎜<br />
) ⎝<br />
u1<br />
.<br />
uN<br />
for g <strong>og</strong> u1,...,uN idet man sætter uN = 0.<br />
3 Vælg for hver tilstand i værdien ki s˚a ¯q ki<br />
i<br />
størst blandt<br />
⎞<br />
⎟<br />
⎠ = q (k1,...,kN )<br />
= qki<br />
i<br />
¯q 1 i = q 1 i + p 1 i1 u1 + ··· + p 1 iN uN<br />
¯q 2 i = q 2 i + p 2 i1 u1 + ··· + p 2 iN uN<br />
.<br />
G˚a nu tilbage til 2 med de nye værdier (k1,...,kN).<br />
+ pki<br />
i1 u1 + ··· + p ki<br />
iN uN er<br />
Algoritmen slutter første gang værdierne (k1,...,kN) ikke ændrer sig. Dette<br />
er den optimale strategi.<br />
Dias 34/36 — Henrik Holm (IGM) — <strong>Dynamisk</strong> <strong>pr<strong>og</strong>rammering</strong> <strong>II</strong> — 31. marts 2011<br />
Eksempel: Howards metode 2/2<br />
Vi kører algoritmen videre med strategien (k1,k2) = (2,1).<br />
Tilstand Valg p k ij r k<br />
ij q k i k j = 1 j = 2 j = 1 j = 2<br />
i<br />
1<br />
1<br />
2<br />
0.7<br />
0.5<br />
0.3<br />
0.5<br />
80<br />
100<br />
40<br />
60<br />
68<br />
80<br />
2<br />
1<br />
2<br />
0.6<br />
0.33<br />
0.4<br />
0.67<br />
40<br />
60<br />
10<br />
21<br />
28<br />
34<br />
S˚a sættes u2 = 0 <strong>og</strong> vi løser ligningen:<br />
<br />
g 1 − 0.5 −0.5 u1 80<br />
+<br />
=<br />
g −0.6 1 − 0.4<br />
28<br />
Ud fra disse værdier beregnes:<br />
<br />
¯q 1<br />
1<br />
¯q 2 <br />
68 0.7 0.3<br />
= +<br />
1 80 0.5 0.5<br />
<br />
¯q 1<br />
2 28 0.6 0.4<br />
= +<br />
34 0.33 0.76<br />
¯q 2 2<br />
u2<br />
u1<br />
u2<br />
<br />
u1<br />
=⇒<br />
⎧<br />
⎨<br />
⎩<br />
<br />
101.09<br />
=<br />
103.63<br />
<br />
56.36<br />
=<br />
49.76<br />
u2<br />
g = 56.36<br />
u1 = 47.27<br />
u2 = 0<br />
Vi ledes til samme strategi som før: (k1,k2) = (2,1). Denne er alts˚a optimal!<br />
Dias 36/36 — Henrik Holm (IGM) — <strong>Dynamisk</strong> <strong>pr<strong>og</strong>rammering</strong> <strong>II</strong> — 31. marts 2011