Gli approcci alla programmazione dinamica: alcuni esempi

Commenti

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