Está en la página 1de 9

PROGRAMACIÓN DINÁMICA

La programación dinámica es una de optimización intertemporal cuya metodología fue desarrollada


por el matemático Richard Bellman en 1957 y a partir de allí se ha utilizado principalmente para el
planteamiento de modelos de macroeconomía dinámica.
La formulación básica del problema es la siguiente:
𝑇

𝑀𝑎𝑥𝑖𝑚𝑖𝑧𝑎𝑟 𝑣 = ∑ 𝑓𝑡 (𝑦𝑡 , 𝑢𝑡 ) + 𝑍(𝑦𝑇+1 )


𝑡=0
𝑦𝑡+1 ≤ 𝑔𝑡 (𝑦𝑡 , 𝑢𝑡 )
𝑦0 𝑑𝑎𝑑𝑜
𝑠𝑢𝑗𝑒𝑡𝑜 𝑎 𝑦𝑡+1 𝑙𝑖𝑏𝑟𝑒 , ∀ 𝑡 ∈ [0, 𝑇]
𝑦𝑡 ≥ 0
𝑢𝑡 ≥ 0
Los elementos del problema son:

 𝑢𝑡 , 𝑦𝑡 : variables de control y de estado, respectivamente.


 𝑔(∙): ecuación de movimiento o de transición.
 𝑓(∙): función de retorno.
 v: funcional objetivo.

A diferencia del control óptimo, no es tan sencillo hallar una solución analítica de un problema de
programación dinámica. Dadas unas condiciones llamadas de primer orden, se pueden obtener
características cualitativas sobre el proceso de optimización intertemporal que enfrentan los agentes.
Si se tiene formas funcionales específicas de la ecuación de movimiento y la función de retorno, se
tendrán soluciones analíticas simples del problema (1), caso contrario las trayectorias de las
variables de control y de estado se obtienen mediante métodos numéricos y computacionales.

La ecuación de Euler: Condición de Optimización Intertemporal


En un problema económico, muchas veces es más importante obtener una condición de
optimización intertemporal y su interpretación económica. Para ello utilizaremos una condición de
equilibrio denominada ecuación de Euler.
Esta ecuación se obtiene a partir de la condición de Kuhn-Tucker de 1º orden:
Dada la función Lagrangiano del problema (1):
𝑇 𝑇

𝐿 = ∑ 𝑓𝑡 (𝑦𝑡 , 𝑢𝑡 ) + 𝑍(𝑦𝑇+1 ) + ∑ 𝜆𝑡 (𝑔𝑡 (𝑦𝑡 , 𝑢𝑡 ) − 𝑦𝑡+1 ) (2)


𝑡=0 𝑡=0

Las condiciones de Kuhn-Tucker de 1º orden son:


𝜕𝐿 𝜕𝐿 𝜕𝐿
= 0, = 0, = 0, ∀ 𝑡 = 0, 1, … , 𝑇
𝜕𝑢𝑡 𝜕𝑦𝑡+1 𝜕𝜆𝑡
Efectuando estas derivadas, obtenemos el sistema:
𝜕𝐿 𝜕𝑓𝑡 𝜕𝑔𝑡
𝑎) = + 𝜆𝑡 =0
𝜕𝑢𝑡 𝜕𝑢𝑡 𝜕𝑢𝑡
𝜕𝐿 𝜕𝑓𝑡+1 𝜕𝑔𝑡+1
𝑏) = + 𝜆𝑡+1 − 𝜆𝑡 = 0 ∀ 𝑡 = 0,1,2, … , 𝑇 (3)
𝜕𝑦𝑡+1 𝜕𝑦𝑡+1 𝜕𝑦𝑡+1
𝜕𝐿
𝑐) = 𝑔𝑡 (𝑦𝑡 , 𝑢𝑡 ) − 𝑦𝑡+1 = 0
𝜕𝜆𝑡
Usando 3b:
𝜕𝑓𝑡+1 𝜕𝑔𝑡+1
𝜆𝑡 = + 𝜆𝑡+1 (4)
𝜕𝑦𝑡+1 𝜕𝑦𝑡+1
Despejamos 3a y adelantamos un período:
𝜕𝑓𝑡+1
𝜕𝑢𝑡+1
𝜆𝑡+1=− (5)
𝜕𝑔𝑡+1
𝜕𝑢𝑡+1
Reemplazando (4) y (5) en 3a:
𝜕𝑓𝑡+1
𝜕𝑓𝑡 𝜕𝑔𝑡 𝜕𝑓𝑡+1 𝜕𝑔𝑡+1 𝜕𝑢𝑡+1
+ [ − ( )] = 0 (6)
𝜕𝑢𝑡 𝜕𝑢𝑡 𝜕𝑦𝑡+1 𝜕𝑦𝑡+1 𝜕𝑔𝑡+1
𝜕𝑢𝑡+1
La ecuación (6), junto con la ecuación de transición 𝑦𝑡+1 = 𝑔𝑡 (𝑢𝑡 , 𝑦𝑡 ) son llamadas las condiciones
de primer del problema (1).
Para interpretar de una manera más sencilla, supongamos que la ecuación de transición no depende
de la variable de estado, i.e. 𝑔𝑡 = 𝑔𝑡 (𝑢𝑡 ). De este modo, la ecuación (6) se simplifica:
𝜕𝑓𝑡 𝜕𝑔𝑡 𝜕𝑓𝑡+1
+ = 0, ∀ 𝑡 = 0, 1, … , 𝑇 (7)
𝜕𝑢𝑡 𝜕𝑢𝑡 𝜕𝑦𝑡+1
La elección de la variable de control en el período T debe ser tal que garantice que la función de
retorno en el mismo período sea la mayor posible, pero considerando el efecto de la asignación sobre
la función de retorno en el período siguiente. Esto se debe a que, a través de la ecuación de
movimiento, las variables en distintos períodos de tiempo se encuentran interrelacionadas. De este
modo, las decisiones en un período afectarán a la función de retorno en los siguientes períodos.
Así, si la condición (7) se verifica para todos los períodos, la secuencia de la variable de control es
óptima, pues garantiza que el control en cada período tome en cuenta el efecto sobre las funciones
de retorno en el futuro.
Si en un problema no existe una ecuación de movimiento (𝑔𝑡 = 0) y no hay interrelación entre las
variables de distintos períodos, tenemos la siguiente condición de optimización:
𝜕𝑓𝑡
= 0, ∀ 𝑡 = 0, 1, … , 𝑇 (8)
𝜕𝑢𝑡
Esta condición implica que la función de retorno en cada período se encuentra maximizada.
La Ecuación de Bellman:
Dado el problema de programación dinámica (1), este puede plantearse en términos de una relación
de recurrencia denominada ecuación de Bellman:
𝑉𝑡 (𝑦𝑡 ) = 𝑚𝑎𝑥𝑖𝑚𝑖𝑧𝑎𝑟[𝑓𝑡 (𝑦𝑡 , 𝑢𝑡 ) + 𝑉𝑡+1 (𝑦𝑡+1 )]
𝑦𝑡+1 = 𝑔𝑡 (𝑦𝑡 , 𝑢𝑡 ), ∀ 𝑡 = 0, 1, 2, … , 𝑇 (9)
𝑠𝑢𝑗𝑒𝑡𝑜 𝑎
𝑦0 > 0, 𝑦𝑇+1 𝑑𝑎𝑑𝑜
La maximización se realiza exclusivamente respecto a la variable de control y la variable de estado
se mantiene constante.
𝑉𝑡 representa la función de valor para (9) en el período t.
Teorema:
Si 𝑢∗ y 𝑦 ∗ resuelven el problema (9), entonces se satisfacen las siguiente condiciones:
𝜕𝑓𝑡 𝜕𝑔𝑡 𝑑𝑉𝑡+1
+ =0
𝜕𝑢𝑡 𝜕𝑢𝑡 𝑑𝑦𝑡+1
𝑑𝑉𝑡 𝜕𝑓𝑡 𝑑𝑉𝑡+1 𝜕𝑔𝑡
= +
𝑑𝑦𝑡 𝜕𝑦𝑡 𝑑𝑦𝑡+1 𝜕𝑦𝑡
𝑦𝑡+1 = 𝑔𝑡 (𝑦𝑡 , 𝑢𝑡 )
Para todo 𝑡 = 0, 1, … , 𝑇
Ejemplo:
Se desean encontrar 𝑢0 , 𝑢1 , … 𝑢 𝑇 números no negativos cuya suma sea igual a una constante 𝐶 > 0,
de manera que la suma de sus cuadrados sea mínimo.
Solución:
El problema se plantea como sigue:
𝑇

𝑚𝑎𝑥𝑖𝑚𝑖𝑧𝑎𝑟 − ∑ 𝑢𝑘2
𝑘=0
𝑇

∑ 𝑢𝑘 = 𝐶
𝑠𝑢𝑗𝑒𝑡𝑜 𝑎 , 𝑘 = 0, … , 𝑇
𝑘=0
𝑢𝑘 ≥ 0
Para expresar el problema en la forma (9) definamos:
𝑇

𝑦𝑡 = ∑ 𝑢𝑘
𝑘=𝑡

De este modo, 𝑦0 = 𝐶 y 𝑦𝑇+1 = 0. Además, podemos verificar que se cumple la ecuación de


transición: 𝑦𝑡+1 = 𝑦𝑡 − 𝑢𝑡 (tarea).
El problema se puede reescribir de la siguiente manera:
𝑇

𝑚𝑎𝑥𝑖𝑚𝑖𝑧𝑎𝑟 − ∑ 𝑢𝑘2
𝑘=0
𝑦𝑡+1 = 𝑦𝑡 − 𝑢𝑡
𝑠𝑢𝑗𝑒𝑡𝑜 𝑎 𝑦0 = 𝑐
𝑦𝑇+1 = 0
La ecuación de Bellman de este problema es:
𝑉𝑡 (𝑦𝑡 ) = 𝑚𝑎𝑥𝑖𝑚𝑖𝑧𝑎𝑟[−𝑢𝑡2 + 𝑉𝑡+1 (𝑦𝑡+1 )]
𝑦𝑡+1 = 𝑦𝑡 − 𝑢𝑡
𝑦0 = 𝐶, 𝑦𝑇+1 = 0
𝑠𝑢𝑗𝑒𝑡𝑜 𝑎 𝑦𝑇 𝑑𝑎𝑑𝑜
𝑢𝑡 ≥ 0
La ecuación de Euler es:

−2𝑢𝑡 − 𝑉𝑡+1 (𝑦𝑡+1 ) = 0
Las otras condiciones son las siguientes:
𝑉𝑡′ (𝑦𝑡 ) = 𝑉𝑡+1

(𝑦𝑡+1 )
𝑦𝑡+1 = 𝑦𝑡 − 𝑢𝑡
Usando la primera y la segunda ecuación, tenemos:
𝑉𝑡′ (𝑦𝑡 ) = −2𝑢𝑡
Tomando un período futuro:
′ (
𝑉𝑡+1 𝑦𝑡+1 ) = −2𝑢𝑡+1
Usando la segunda ecuación, tenemos:
𝑢𝑡 = 𝑢𝑡+1
𝑦𝑡+1 = 𝑦𝑡 − 𝑢𝑡
Tenemos un sistema de ecuaciones en diferencias, el cual lo vamos a escribir como una ecuación en
diferencias de 2º orden. Construimos la ecuación
𝑦𝑡+2 = 𝑦𝑡+1 − 𝑢𝑡
Restando estas dos últimas ecuaciones tenemos:
𝑦𝑡+2 − 2𝑦𝑡+1 + 𝑦𝑡 = 0
La ecuación característica de esta ecuación homogénea es:
𝜆2 − 2𝜆 + 1 = 0 ⇔ (𝜆 − 1)2 = 0
Tenemos una raíz doble 𝜆 = 1. La solución general de la ecuación es:
𝑦𝑡 = 𝑐1 + 𝑐2 𝑡
Usando las condiciones inicial y terminal:
𝐶 = 𝑦0 = 𝑐1
0 = 𝑦𝑇+1 = 𝐶 + 𝑐2 (𝑇 + 1)
𝐶
𝑐2 = −
𝑇+1
De este modo,
𝐶
𝑦𝑡 = 𝐶 − 𝑡
𝑇+1
Además,
𝐶
0 = 𝑦𝑇+1 = 𝑦𝑇 − 𝑢 𝑇 = 𝐶 − 𝑇 − 𝑢𝑇
𝑇+1
Por tanto,
𝐶
𝑢𝑇 = = 𝑢 𝑇−1 = ⋯ = 𝑢0
𝑇+1

Ejemplo:
Una compañía minera desea maximizar el valor presente de sus ganancias netas a lo largo del
período de tiempo 𝑡 = 0, … , 𝑇 + 1. El precio de mercado del mineral extraído está dado por p.
Denotando por 𝑢𝑡 la producción (extracción) y 𝑦𝑡 la reservas restantes en el período t, el costo de
extracción está dado por:
2𝑢𝑡2
𝑐𝑡 =
𝑦𝑡
y las reservas iniciales son 𝑦0 = 600 toneladas. Suponiendo que no hay descuento temporal,
plantear el problema como un problema de programación dinámica y resolverlo.
Solución:
El problema se plantea como sigue:
𝑇
2𝑢𝑡2
𝑀𝑎𝑥𝑖𝑚𝑖𝑧𝑎𝑟 ∑ (𝑝𝑢𝑡 − )
𝑦𝑡
𝑡=0
𝑦𝑡+1 = 𝑦𝑡 − 𝑢𝑡
𝑠𝑢𝑗𝑒𝑡𝑜 𝑎 𝑦0 = 600
La ecuación de Bellman está dada por:
2𝑢𝑡2
𝑉𝑡 (𝑦𝑡 ) = max {(𝑝𝑢𝑡 − ) + 𝑉𝑡+1 (𝑦𝑡+1 )}
𝑦𝑡
𝑠𝑢𝑗𝑒𝑡𝑜 𝑎 𝑦𝑡 = 𝑦𝑡 − 𝑢𝑡 , 𝑦0 = 600
La ecuación de Euler es:
4𝑢𝑡 ′ (
𝑝− − 𝑉𝑡+1 𝑦𝑡+1 ) = 0 (𝑎)
𝑦𝑡
Además,
2𝑢𝑡2
𝑉𝑡′ ′
= 2 + 𝑉𝑡+1 (𝑦𝑡+1 ) (𝑏)
𝑦𝑡
′ (
𝑉𝑇+1 𝑦𝑇+1 ) = 0 (𝑐)
pues en el último período 𝑦𝑇+1 = 𝑦𝑇 − 𝑢 𝑇
Supongamos que 𝑇 = 2, entonces la firma suspende su producción en 𝑇 = 3 y se tiene que 𝑉3′ = 0
Sustituyendo en la ecuación de (a) para 𝑡 = 2:
4𝑢2 𝑢2 𝑝
𝑝− =0⇒ =
𝑦2 𝑦2 4
Sustituyendo en la ecuación (b) para 𝑡 = 2:
2𝑢22 𝑝2 𝑝2
𝑉2′ = 2 = 2( ) =
𝑦2 16 8

Sustituyendo en la ecuación de (a) para 𝑡 = 1:


4𝑢1 𝑝2 𝑢1 8𝑝 − 𝑝2
𝑝− − =0⇒ =
𝑦1 8 𝑦1 32
Sustituyendo en la ecuación (b) para 𝑡 = 1:
2
8𝑝 − 𝑝2 𝑝2
𝑉1′ = 2( ) +
32 8

Sustituyendo en la ecuación de (a) para 𝑡 = 0:


2
4𝑢0 8𝑝 − 𝑝2 𝑝2
𝑝− [2
− ( ) + ]=0
𝑦0 32 8

Como 𝑦0 = 600, entonces:


2
8𝑝 − 𝑝2 𝑝2
𝑢0 = 150 [𝑝 − 2 ( ) − ]
32 8

Como 𝑦𝑡+1 = 𝑦𝑡 − 𝑢𝑡 , sustituimos para 𝑡 = 0:


2
8𝑝 − 𝑝2 𝑝2
𝑦1 = 600 − 150 [𝑝 − 2 ( ) − ]
32 8

𝑢1 8𝑝−𝑝2
Como = , reemplazamos 𝑦1 y despejamos 𝑢1 :
𝑦1 32

2
8𝑝 − 𝑝2 8𝑝 − 𝑝2 𝑝2
𝑢1 = [ ] {600 − 150 [𝑝 − 2 ( ) − ]}
32 32 8

Como 𝑦𝑡+1 = 𝑦𝑡 − 𝑢𝑡 , sustituimos para 𝑡 = 1:


2
8𝑝 − 𝑝2 𝑝2 8𝑝 − 𝑝2
𝑦2 = {600 − 150 [𝑝 − 2 ( ) − ]} [1 − ]
32 8 32
𝑢2 𝑝
Como = 4 , entonces:
𝑦2

2
𝑝 8𝑝 − 𝑝2 𝑝2 8𝑝 − 𝑝2
𝑢2 = {600 − 150 [𝑝 − 2 ( ) − ]} [1 − ]
4 32 8 32
Como 𝑦𝑡+1 = 𝑦𝑡 − 𝑢𝑡 , sustituimos para 𝑡 = 2:
2
8𝑝 − 𝑝2 𝑝2 8𝑝 − 𝑝2 𝑝
[𝑝
𝑦3 = {600 − 150 − 2 ( ) − ]} [1 − ] [1 − ]
32 8 32 4

Finalmente, como la firma cierra en 𝑡 = 3, se tiene que 𝑢3 = 0.

Problemas con Descuento Temporal:


Sea 𝜌 la tasa de descuento temporal. El problema de optimización dinámica se plantea como:
𝑇
1 𝑘
𝑀𝑎𝑥𝑖𝑚𝑖𝑧𝑎𝑟 ∑( ) 𝑓𝑘 (𝑦𝑘, 𝑢𝑘 )
1+𝜌
𝑘=0
𝑦𝑘+1 = 𝑔𝑘 (𝑦𝑘 , 𝑢𝑘 )
𝑠𝑢𝑗𝑒𝑡𝑜
𝑦0 𝑑𝑎𝑑𝑜, 𝑦𝑇+1 𝑙𝑖𝑏𝑟𝑒
La ecuación de Bellman es:
𝑉𝑡 (𝑦𝑡 ) = max{𝛽 𝑡 𝑓𝑡 (𝑦𝑡 , 𝑢𝑡 ) + 𝑉𝑡+1 (𝑦𝑡+1 )}
𝑠𝑢𝑗𝑒𝑡𝑜 𝑎 𝑦𝑡+1 = 𝑔𝑡 (𝑦𝑡 , 𝑢𝑡 ), 𝑦𝑡 𝑑𝑎𝑑𝑜
1
donde la función 𝑉𝑡 (𝑦𝑡 ) se mide en unidades al tiempo t = 0 y 𝛽 ≡ 1+𝜌 es el factor de descuento
temporal.
Si expresamos a la función valor en unidades del período 𝑡 esta ecuación queda:
𝑉̅𝑡 (𝑦𝑡 ) = max{𝑓𝑡 (𝑦𝑡 , 𝑢𝑡 ) + 𝛽𝑉̅𝑡+1 (𝑦𝑡+1 )}
La función 𝑉̅𝑡 es la función valor en tiempo corriente t y se relaciona con la función valor en tiempo
presente mediante:
𝑉̅𝑡 𝛽 𝑡 = 𝑉𝑡
Abusando de la notación, la función 𝑉̅𝑡 puede denotarse simplemente por 𝑉𝑡 .
Las condiciones de primer orden son:
𝜕𝑓𝑡 𝑑𝑉𝑡+1 𝜕𝑔𝑡
+ 𝛽 =0
𝜕𝑢𝑡 𝑑𝑦𝑡+1 𝜕𝑢𝑡
𝑑𝑉𝑡 𝜕𝑓𝑡 𝑑𝑉𝑡+1 𝜕𝑔𝑡
= +𝛽
𝑑𝑦𝑡 𝜕𝑦𝑡 𝑑𝑦𝑡+1 𝜕𝑦𝑡
𝑦𝑡+1 = 𝑔𝑡 (𝑦𝑡 , 𝑢𝑡 )
Ejemplo:
Resolver:
𝑇
1 𝑘
𝑀𝑎𝑥𝑖𝑚𝑖𝑧𝑎𝑟 ∑( ) ln 𝑐𝑡
1+𝑤
𝑡=0
𝑠𝑡+1 = (1 + 𝛿)(𝑠𝑡 − 𝑐𝑡 )
𝑠𝑢𝑗𝑒𝑡𝑜
𝑠𝑡 𝑑𝑎𝑑𝑜, 𝑠𝑇+1 = 0
Solución:
1
Sea 𝛼 = 1 + 𝛿, 𝛽 = 1+𝑤.

La ecuación de Bellman es:


𝑉𝑡 (𝑦𝑡 ) = max{ln 𝑐𝑡 + 𝛽𝑉𝑡+1 (𝑦𝑡+1 )}
𝑠𝑡+1 = 𝛼(𝑠𝑡 − 𝑐𝑡 )
𝑠𝑢𝑗𝑒𝑡𝑜 𝑎
𝑠𝑡 𝑑𝑎𝑑𝑜, 𝑠𝑇+1 = 0
Las ecuaciones de primer orden son:
1 𝑑𝑉𝑡+1
−𝛼𝛽 =0
𝑐𝑡 𝑑𝑦𝑡+1
𝑑𝑉𝑡 𝑑𝑉𝑡+1
= 𝛼𝛽
𝑑𝑦𝑡 𝑑𝑦𝑡+1
En la primera ecuación, tenemos:


1
𝑉𝑡+1 = (∗)
𝛼𝛽𝑐𝑡
A partir de la segunda ecuación:
1 1
𝑉𝑡′ = 𝛼𝛽 ( )=
𝛼𝛽𝑐𝑡 𝑐𝑡
Adelantando un período:


1
𝑉𝑡+1 = (#)
𝑐𝑡+1
Igualando las ecuaciones (*) y (#):
1 1
− 𝛼𝛽 = 0 ⇒ 𝑐𝑡+1 − 𝛼𝛽𝑐𝑡 = 0
𝑐𝑡 𝑐𝑡+1
Tenemos el sistema de ecuaciones en diferencias:
𝑐𝑡+1 − 𝛼𝛽𝑐𝑡 = 0
𝑠𝑡+1 − 𝛼𝑠𝑡 = −𝛼𝑐𝑡
La ecuación característica de la primera ecuación es:
𝑟 − 𝛼𝛽 = 0 ⇒ 𝑟 = 𝛼𝛽
La solución general de la primera ecuación es:
𝑐𝑡 = 𝑐1 (𝛼𝛽 )𝑡
La segunda ecuación queda:
𝑠𝑡+1 − 𝛼𝑠𝑡 = −𝛼𝑐1 (𝛼𝛽 )𝑡
La ecuación característica de la ecuación homogénea es:
𝑟−𝛼 = 0⇒𝑟 =𝛼
La solución general de la ecuación homogénea es:
𝑠𝑡 = 𝑐2 (𝛼 )𝑡
Una ecuación particular para la segunda ecuación es: 𝑠̅𝑡 = 𝐴(𝛼𝛽 )𝑡
Reemplazando en la ecuación:
𝐴(𝛼𝛽 )𝑡+1 − 𝛼𝐴(𝛼𝛽 )𝑡 = −𝛼𝑐1 (𝛼𝛽 )𝑡
𝐴(𝛼𝛽 ) − 𝛼𝐴 = −𝛼𝑐1
𝐴𝛽 − 𝐴 = −𝑐1
𝑐1
𝐴=
1−𝛽
La solución general es:
𝑐1
𝑠𝑡 = 𝑐2 𝛼 𝑡 + (𝛼𝛽 )𝑡
1−𝛽

También podría gustarte