Gli approcci alla programmazione dinamica: alcuni esempi
Transcript
Gli approcci alla programmazione dinamica: alcuni esempi
Gli approcci alla programmazione dinamica: alcuni esempi Francesco Menoncin∗ February 1, 2002 1 Ottimizzazione dinamica Il problema che qui si considera è quello di un soggetto che intende massimizzare (o minimizzare) il valore di una funzione obiettivo (qui chiamata U ) per un certo periodo di tempo (qui supposto da t0 fino a T con T > t0 ). Si suppone che il ”mondo” considerato nel problema sia descritto da alcune variabili dette ”di stato” e che qui inseriamo nel vettore y. Il soggetto in questione può modificare l’evoluzione di dette variabili operando su altre variabili sotto il suo controllo (per ciò dette ”di controllo”) che inseriamo nel vettore x. In particolare, la soluzione del problema è data dal valore di x che massimizza la funzione obiettivo sull’arco temporale considerato. Alla fine del periodo preso in esame (cioè in T ) si immagina che il soggetto valuti lo stato del sistema raggiunto (cioè il valore del vattore y al tempo T ) attraverso una funzione (K) che viene definita ”funzione terminale” o, in termine anglosassone ”bequest function”. Se il problema si studia in un contesto discreto, l’evoluzione delle variabili y è data da un sistema di equazioni alle differenze finite mentre, in un constesto continuo, l’evoluzione di y è data da un sistema di equazioni differenziali. Si suppone che lo stato del mondo al momento iniziale (t0 ) sia conosciuto con certezza. Il problema di ottimo, dunque, si può scrivere (per un caso di massimizzazione) nei due modi seguenti: TP −1 U (t, x (t) , y (t)) + K (T, y (T )) maxx t=t0 Caso Discreto (Pd ) y (t + 1) = f (t, y (t) , x (t)) y (t0 ) = y0 RT maxx t0 U (t, x (t) , y (t)) dt + K (T, y (T )) Caso Continuo (Pc ) dy (t) = f (t, y (t) , x (t)) dt y (t0 ) = y0 ∗ [email protected] 1 Nelle sezioni seguenti si analizzano i due approcci utilizzati per la soluzione di detti problemi. 2 Approccio di Bellman (casi discreto e continuo) Per entrambi i problemi si utilizza l’approccio di Bellman che si basa sull’ipotesi che esista una funzione J (t, y) (detta funzione valore) tale da soddisfare la seguente condizione: J (t, y) = max {U (t, x, y) dt + J (t + dt, y (t + dt))} , x (1) che, nel caso discreto, bisogna trasformare ponendo dt = 1. Notiamo che la condizione al contorno è data dalla funzione terminale K per la quale deve valere: J (T, y) = K (T, y (T )) . Nel caso discreto, dunque, si è di fronte ad una equazione alle differenze finite del primo ordine in J la quale viene, in genere, risolta tramite il metodo di iterazione che si vedrà in un esempio nelle sezioni seguenti. Continuando nel caso continuo la (1) si può semplificare nel modo seguente: max {U (t, x, y) dt + J (t + dt, y (t + dt)) − J (t, y)} = 0, x dividendo per dt si ricava: ¾ ½ J (t + dt, y (t + dt)) − J (t, y) = 0, max U (t, x, y) + x dt e prendendone il limite per dt → 0 si ha: ¾ ½ dJ (t, y) max U (t, x, y) + = 0. x dt Ricordiamo ora che il differenziale totale di J si può scrivere: ¶0 µ ∂J (t, y) ∂J (t, y) dJ (t, y) = dy, dt + ∂t ∂y da cui: dJ (t, y) ∂J (t, y) = + dt ∂t µ ∂J (t, y) ∂y ¶0 dy . dt Sostituendo dJ/dt nella (2), essa si può scrivere come: ) ( ¶0 µ ∂J (t, y) ∂J (t, y) dy max U (t, x, y) + + = 0. x ∂t ∂y dt 2 (2) Avendo a disposizione il valore di dy/dt (dato nella struttura stessa del problema Pc ) si può scrivere: ) ( µ ¶0 ∂J (t, y) ∂J (t, y) f (t, y (t) , x (t)) = 0, max U (t, x, y) + + x ∂t ∂y ( ) ¶0 µ ∂J (t, y) ∂J (t, y) f (t, y (t) , x (t)) = 0, + max U (t, x, y) + x ∂t ∂y tale equazione alle derivate parziali viene definita equazione di Bellman mentre il termine da massimizzare viene definito Hamiltoniano. A questa equazione va poi aggiunta la condizione finale: J (T, y) = K (T, y (T )). E’ importante sottolineare che non esiste un metodo definito per risolvere questo tipo di equazione differenziale. Si procede, dunque, attraverso soluzioni di prova ed ipotesi particolari riguardo la funzione J. In genere, tuttavia, si suppone che la funzione valore ”erediti” una certa forma dalla funzione K e le soluzioni di prova partono da una generalizzazione proprio della funzione K. 3 Approccio di Pontriagin (caso continuo) L’approccio di Potriagin viene utilizzato solo nel caso continuo e si basa sullo stesso principio della massimizzazione tramite lagrangiano. Viene dunque definito il moltiplicatore λ, questa volte dipendente dal tempo, e viene scritto l’hamiltoniano nel modo seguente: 0 H = U (t, x, y) + λ (t) f (t, y, x) , dove l’apice indica trasposizione. Tale hamiltoniano va massimizzato rispetto ad x ottenendo, quindi: H∗ = U (t, x∗ , y) + λ (t)0 f (t, y, x∗ ) . Sul valore ottimo dell’hamiltoniano, quindi, si ricavano le seguenti condizioni di Pontriagin: ∂λ ∂H∗ , ∂t = − ∂y ∂y ∂H∗ = , ∂t ∂λ λ (T ) = ∂K , ∂y(T ) che vengono definite sistema di Hamilton-Jacobi. 4 Alcuni esempi Nella presente sezione si mostrano alcuni esempi di programmazione dinamica sia in tempo discreto (approccio di Bellman) sia in tempo continuo (approcci di Bellman e Pontriagin). 3 4.1 Caso discreto: l’ottimizzazione del consumo Si supponga di dover decidere quanto consumare della propria ricchezza in un mondo deterministico dove la ricchezza si evolve nel modo seguente: W (t + 1) = (W (t) − c) R (t) . Qui si considerano: c l’ammontare di ricchezza consumato ed R (t) il fattore di montante (deterministico) tra il periodo t ed il periodo t + 1. Per semplificare al massimo i calcoli si suppone R (t) = R. Il consumo entra in una funzione di utilità avente la forma seguente U (t, c) = β t1 c1−α dove β 1 è un fattore di sconto ”psicologico” che indica come un consumatore dia sempre meno utilità ai conumi sempre più distanti nel tempo. Il problema, dunque, si può scrivere nella forma seguente: TP −1 0 1−α β t−t ct + β T1 −t0 WT1−α maxc 1 t=t0 W (t + 1) = (W (t) − c (t)) R, W (0) = W0 . Abbiamo allora la seguente funzione di Bellman che, per semplicità, si suppone ancora da scontare: © ª 0 0 1−α 0 β t−t J (t, W ) = max β t−t ct + β t+1−t J (t + 1, W (t + 1)) , 1 1 1 c © ª + β 1 J (t + 1, W (t + 1)) . J (t, W ) = max c1−α t c Il problema, dunque, diviene quello di trovare la funzione J che soddisfa a questa equazione alle differenze finite del primo ordine. La condizione del primo ordine per la massimizzazione rispetto a c si può scrivere: ¢ ∂ ¡ 1−α ct + β 1 J (t + 1, (W (t) − c) R) = 0, ∂c ∂J (t + 1) (1 − α) c−α = 0. − β1R t ∂W (t + 1) Poichè si conosce (dalla condizione al contorno) quanto deve valere la funzione valore al tempo T , partendo dal tempo T − 1 si può scrivere: © ª + β 1 J (T, W (T )) , J (T − 1, WT −1 ) = max cT1−α −1 c © ª 1−α . J (T − 1, WT −1 ) = max cT1−α −1 + β 1 WT c Utilizzando l’equazione alle differenze che descrive l’andamento della ricchezza si può anche scrivere: n o 1−α 1−α J (T − 1, WT −1 ) = max c1−α , R T −1 + β 1 (WT −1 − cT −1 ) c 4 da cui si ricava la condizione del primo ordine: 1−α (1 − α) c−α (1 − α) (WT −1 − cT −1 ) T −1 − β 1 R cT −1 = 1−α −1 β 1 α R− α c∗T −1 = 1 −α = 0, (WT −1 − cT −1 ) , 1−α −1 β 1 α R− α 1−α −1 + β 1 α R− α WT −1 , la quale si può scrivere nel modo seguente: c∗T −1 A1 = A1 WT −1 , = −1 β 1 α R− −1 1−α α 1 + β 1 α R− 1−α α . Tale valore va sostituito nella formula di J (T − 1, W ) per ottenere: n o 1−α 1−α , + β R (W ) J (T − 1, WT −1 ) = max c1−α − c T −1 T −1 1 T −1 c A1−α WT1−α 1 −1 1−α + β 1 R1−α (1 − A1 ) WT1−α −1 , ´ ³ 1−α WT1−α A1−α + β 1 R1−α (1 − A1 ) J (T − 1, WT −1 ) = 1 −1 , J (T − 1, WT −1 ) = da cui si può semplificare il termine tra parentesi: Ã µ ¶1−α ! 1 − A1 1−α 1−α 1−α 1−α (1 − A1 ) = 1 + β1R = A1−α A1 + β 1 R 1 A1 Ã µ ¶1−α ! 1 1−α = 1 + β1R = −1 A1−α 1 A1 !1−α Ã 1 −α − 1−α α R 1 + β 1 A1−α = 1 + β 1 R1−α = −1 1 1−α −1 β 1 α R− α Ã !1−α 1 A1−α = 1 + β 1 R1−α = 1 1−α −1 β 1 α R− α Ã ! ³ ´ 1 1−α 1 1−α α α = 1 + β1 R A1 = 1 + − 1 = A1−α 1 1−α − α α β1 R Ã !Ã !1−α 1−α 1−α −1 −1 1 + β 1 α R− α β 1 α R− α = = 1−α 1−α −1 −1 β 1 α R− α 1 + β 1 α R− α Ã !−α 1−α −1 β 1 α R− α = 1−α −1 1 + β 1 α R− α ottenendo: 1−α J (T − 1, WT −1 ) = A−α 1 WT −1 . 5 Il processo di iterazione, quindi, si ripete uguale al passaggio precedente con la variante di avere un β 2 = A−α 1 β 1 . Si può dunque scrivere: n o 1−α (WT −2 − cT −2 )1−α . J (T − 2, WT −2 ) = max cT1−α −2 + β 2 R c Ancora una volta la condizione del primo ordine è data da: 1−α (1 − α) c−α (1 − α) (WT −2 − cT −2 )−α = 0, T −2 − β 2 R −1 cT −2 = β 2 α R− c∗T −2 = 1 1−α α (WT −2 − cT −2 ) , 1−α −1 β 2 α R− α 1−α −1 + β 2 α R− α WT −2 , da cui si può porre: c∗T −2 A2 = A2 WT −2 , = −1 β 2 α R− 1−α α −1 1 + β 2 α R− 1−α α , e, quindi: J (T − 2, WT −2 ) = (A2 WT −2 )1−α + β 2 R1−α (WT −2 − A2 WT −2 )1−α , ´ ³ 1−α 1−α WT1−α J (T − 2, WT −2 ) = A1−α + β R (1 − A ) 2 2 2 −2 , da cui si ricava, tramite gli stessi passaggi visti precedentemente: 1−α J (T − 2, WT −2 ) = A−α 2 WT −2 . E’ piuttosto facile capire che esistono le seguenti relazioni ricorsive: 1−α J (T − s, WT −s ) = A−α s WT −s , As βs ∗ cT −s = −1 β s α R− −1 1−α α 1 + β s α R− = A−α s−1 β s−1 , = As WT −s . 1−α α Da qui, ricordando che deve valere: ¢ ¡ WT −s = WT −s−1 − c∗T −s−1 R, , si può scrivere, sostituendovi il valore ottimo del consumo: WT −s WT −s+1 = (1 − As−1 ) RWT −s−1 , = (1 − As ) RWT −s . 6 Questa è un’equazione alle differenze finite del primo ordine omogenea; si può applicare la formula risolutiva: T −s−1 Y WT −s = W0 RT −s k=0 (1 − AT −k ) , e da qui si ricava: c∗T −s = W0 As RT −s T −s−1 Y k=0 (1 − AT −k ) . Si sottolinea che la soluzione del problema dipende solo dai parametri e dalle condizioni iniziali (qui date semplicemente dal valore iniziale della ricchezza W0 ). 4.2 Caso continuo: un problema lineare-quadratico Un problema è detto ”lineare-quadratico” se l’equazione di stato è lineare e la funzione obiettivo è quadratica. In particolare si suppone di dover risolvere il seguente problema: ´ RT ³ 2 2 2 maxx t − 12 ay (s) − 12 bx (s) ds − k2 y (T ) dy (s) = gy (s) + f x (s) , y (t) = y, dove a, b, k, f, g sono costanti positive. Vediamo ora come risolvere questo problema attraverso i due approcci di Bellman e di Pontriagin. 4.2.1 Soluzione di Bellman L’equazione alle derivate parziali di Bellman si scrive nel modo seguente: ½ ¾ 1 2 1 2 ∂J (t, y) ∂J (t, y) max − ay − bx + + (gy + f x) = 0, x 2 2 ∂t ∂y da cui si ottiene la condizione del primo ordine: −bx + ∂J (t, y) f ∂y = 0, x∗ = f ∂J (t, y) . b ∂y Sostituendo tale valore di ottime x∗ nell’equazione di Bellman si ottiene: µ ¶2 µ ¶ f 2 ∂J (t, y) ∂J (t, y) ∂J (t, y) 1 f 2 ∂J (t, y) 1 gy + = 0, + + − ay 2 − 2 2 b ∂y ∂t ∂y b ∂y µ ¶2 ∂J (t, y) ∂J (t, y) 1 2 1 f 2 ∂J (t, y) = 0, + gy − ay + ∂t ∂y 2 2 b ∂y 7 alla quale va aggiunta la condizione al contorno: k 2 J (T, y) = − y (T ) . 2 Supponendo che la funzione J ”erediti” la forma quadratica, che deve avere al tempo T , una soluzione di prova può essere: 1 J (t, y) = − α (t) y 2 + γ (t) , 2 dalla quale si ricava: ∂J (t, y) ∂t ∂J (t, y) ∂y ¶2 µ ∂J (t, y) ∂y 1 ∂α (t) ∂γ (t) = − y2 + , 2 ∂t ∂t = −α (t) y, = α (t)2 y 2 . Sostituendo tale valori nell’equazione di Bellman si ottiene: 1 ∂α (t) ∂γ (t) 1 f2 1 − y2 + − α (t) gy 2 − ay 2 + α (t)2 y 2 2 µ ∂t ∂t 2 2 b ¶ ∂γ (t) 1 ∂α (t) 1 1 f2 2 − − α (t) g − a + α (t) y 2 + 2 ∂t 2 2 b ∂t = 0, = 0. Due polinomi sono uguali solo se il coefficiente di ogni termine del primo è uguale al coefficiente del termine corrispondente del secondo. In questo caso, tutti i coefficienti devono essere nulli, ovvero abbiamo un sistema di equazioni differenziali: ( 2 2 1 1f − 12 ∂α(t) ∂t − α (t) g − 2 a + 2 b α (t) = 0, ∂γ(t) ∂t = 0, in cui le incognite sono le funzioni α (t) e γ (t) e per cui deve valere la condizione al contorno: α (T ) = k, γ (T ) = 0. Si nota che il vincolo sulla funzione γ è rispettato solo se essa è uguale a zero in ogni istante t. Dunque si può porre γ (t) = 0. La prima equazione (in α) è indipendente può essere risolta utilizzando il metodo della separazione delle variabili scrivendo: dα = dt f2 2 b α − 2gα − a 8 da cui: dα (α − ω 1 ) (α − ω 2 ) = dt, ω 1,2 b f2 = Ã g± r g2 f 2a + b ! . Ora, integrando tra t e T si ricava: · ottenendo: ln α (s) − ω 2 1 ln ω 2 − ω 1 α (s) − ω 1 ¸T t = T − t, k − ω2 α (t) − ω 2 = (ω 2 − ω 1 ) (T − t) . − ln α (t) − ω 1 k − ω1 Da qui si ricava immediatamente il valore di α (t) che consente di trovare la funzione valore e da qui il controllo ottimo: f ∂J . b ∂x x∗ = 4.2.2 Soluzione di Pontriagin Analizziamo ora come si risolva lo stesso problema precedente attraverso l’approccio di Pontriagin. L’hamiltoniano si scrive nel modo seguente: 1 1 H = − ay 2 − bx2 + λ (gy + f x) , 2 2 da cui la condizione del primo ordine: −bx + λf x∗ = 0, fλ = . b Sostituendo tale valore nell’hamiltoniano si ha: 1 1 f 2 λ2 + λgy. H∗ = − ay 2 + 2 2 b Da qui si può calcolare il sistema delle condizioni di Hamilton-Jacobi: ∂λ ∂t = − (−ay + λg) , 2 ∂y = f bλ + gy, ∂t λ (T ) = −ky (T ) , ricordando anche che deve valere y (0) = y0 . 9 Tale sistema di equazioni differenziali è lineare e si può scrivere nella forma matriciale seguente: ¸· ¸ · ∂λ ¸ · −g a λ ∂t . = ∂y f2 y g ∂t b Occorre, adesso, calcolare gli autovalori ed autovettori della matrice dei coefficienti ottenendo: # " √ r (b(bg 2 +af 2 ))+bg 1 v = 11 2 f v1 = ↔ (bg 2 + af 2 ) = λ1 , b 1 " # √ r (b(bg 2 +af 2 ))+bg 1 v = − 2 21 f (bg 2 + af 2 ) = λ2 . v2 = ↔− b 1 Poiché tutti i parametri del problema sono positivi, si osserva immediatamente come un autovalore sia positivo ed uno negativo (si ha, cioè, il caso di un equilibrio di sella). Esiste, dunque, un solo sentiero lungo il quale si converge all’equilibrio. La soluzione di questo sistema è data da: · ¸ ¸ ¸ · · λ (t) v11 v12 = A1 eλ1 t + A2 eλ2 t , y (t) 1 1 da cui si possono ricavare i valori delle costanti A1 e A2 ricordando le condizioni al contorno: ½ λ (T ) = −ky (T ) , y (0) = y0 , dovendo risolvere il sistema: ½ A1 v11 eλ1 T + A2 v12 eλ2 T = −ky (T ) , A1 + A2 = y0 , e, sostituendo il valore di y (T ) derivante dall’inserimento di t = T nella soluzione y (t) si ha: ¢ ¡ ½ A1 v11 eλ1 T + A2 v12 eλ2 T = −k A1 eλ1 T + A2 eλ2 T , A1 + A2 = y0 , ovvero: ½ A1 (v11 + k) eλ1 T + A2 (v12 + k) eλ2 T = 0, A1 + A2 = y0 , da cui: y0 (v12 + k) eλ2 T , (v11 + k) eλ1 T − (v12 + k) eλ2 T y0 (v11 + k) eλ1 T . (v11 + k) eλ1 T − (v12 + k) eλ2 T A1 = − A2 = 10 Da qui si ricava il valore ottimo del moltiplicatore che, sostituito nella relazione: fλ x∗ = , b porge: ¢ f¡ A1 v11 eλ1 t + A2 v12 eλ2 t . x∗ = b 11