OPTIMIZACIÓN DINÁMICA
Francisco Alvarez González fralvare@ccee.ucm.es
TEMA 3
Programación Dinámica: cuestiones adicionales.
1. Relación con programación matemática, derivada de la función valor.
2. Problemas de N períodos. Recursividad en el cálculo de la función valor.
3.1. Relación con programación matemática, derivada
de la función valor.
Problema de consumo-ahorro. Se dispone de una cantidad A de un
recurso que puede consumirse a lo largo de tres períodos. La utilidad de consumir u unidades en un período cualquiera es lnu. Hay un factor de descuento intertemporal de la utilidad β y un factor de depreciación δ. ¿Cuál es la política óptima de consumo?
Denotamos los períodos por k, siendo k=0,1,2. Sea x(k) la cantidad de recurso disponible al comiendo del período k y u(k) el consumo al comienzo de dicho período. La línea temporal es:
Dinámica de estado:
x(k+1) = δ x(k)- u(k) Funcional objetivo:
( )
20 max kln
k
u k
β
=
⎧ ⎫
⎨ ⎬
⎩
∑
⎭Usamos programación dinámica, resolviendo desde el final hacia el principio.
x
(0)
x
(1)
x
(2)
u
(0)
u
(1)
u
(2)
Período 2, con x(2) dado. Claramente, el control óptimo es u(2) = x(2).
Además, J(x(2),2) = β2lnx(2).
Período 1, con x(1) dado. El problema a resolver es:
(
)
{
2}
max ln ln
u
β
u+β
δ
x u−Donde el segundo término es J(x(2),2) sustituyendo x(2) por su valor según la dinámica de estado y hemos denotado x:=x(1) y u:=u(1). La solución del anterior problema es:
1
u
δ
xβ
= +
Sustituyendo la solución en la función maximizada tenemos J(x(1),1), es decir:
( )
(
1 ,1
)
ln
*( )
1
2ln
(
( )
1
*( )
1
)
J x
=
β
u
+
β
δ
x
−
u
siendo:
( )
( )
* 1 1
1
u δ x
β
= +
Operando se obtiene:
( )
(
1 ,1
)
( )
1
(
1
)
ln 1
( )
J x
=
θ
+
β
+
β
x
donde θ(1) es una constante que no depende de x(1).
Período 0, con x(0) dado. El problema a resolver es:
(
) (
)
{
}
max ln 1 ln
u
β
u+β
+β
δ
x u−A partir de ahí se resuelve de forma análoga al período 1. Se obtiene:
( )
(
) ( )
* 0 0
1 1
u δ x
β β
=
+ +
y además:
( )
(
0 , 0
)
( )
0
(
1
(
1
)
)
ln
( )
0
Planteamos ahora el problema anterior usando programación matemática. Usando las relaciones:
u(2) = x(2) = δ x(1) - u(1) = δ(δ x(0) - u(0)) - u(1) podemos escribir:
u(2)+ u(1)+ δu(0) = δ2x(0)
que es la restricción de recursos del problema.
Definimos el Lagrangiano:
( )
(
( ) ( )
( )
( )
)
2
2
0
: k ln 2 1 0 0
k
L β u k λ u u δu δ x
=
=
∑
− + + −donde λ es el multiplicador de Lagrange. Derivando respecto a las variables de decisión e igualando a cero, tenemos:
( )
0 1( )
1( )
2 2u u β u β
δλ λ λ
= = =
Sustituyendo en la restricción de recursos y resolviendo en λ tenemos:
( )
(
(
)
)
2
1
1 1
0
x
λ β β
δ
= + +
Usando esta solución de λ en las anteriores igualdades tenemos la política óptima. Debemos recordar que el multiplicador λ nos indica el valor de una unidad adicional del recurso que aparece en el lado derecho.
Para ver que la solución es la misma que la obtenida mediante programación dinámica, comenzamos comparando u(0), que claramente es el mismo. Para dicho valor de u(0), tenemos:
( )
1(
1(
)
) ( )
01 1
x β β δx
β β
+ =
+ +
Teniendo en cuenta este valor de x(1) obtenemos que la solución de u(1) es igual por progamación dinámica que por programación matemática. Dado dicho valor de u(1) tenemos:
( )
2(
2)
2( )
01 1
x β δ x
β β
=
+ +
Veamos ahora la relación entre la derivada de la función valor y el multiplicador de Lagrange.
Usando las anteriores expresiones de la función valor tenemos:
( )
(
)
( )
( )
(
( )
( )
)
(
( )
)
(
( )
( )
)
(
( )
)
2
2 , 2 1 ,1 1 0 ,0 1 1
; ;
2 2 1 1 0 0
J x J x J x
x x x x x x
β β β β
β
∂ ∂ + ∂ + +
= = =
∂ ∂ ∂
y usando los valores de los distintos estados y teniendo en cuenta la expresión obtenida para λ tenemos:
( )
(
)
( )
(
( )
( )
)
(
( )
( )
)
22 , 2 1 ,1 0 ,0
; ;
2 1 0
J x J x J x
x λ x δλ x δ λ
∂ ∂ ∂
= = =
∂ ∂ ∂
Por definición, la derivada de la función valor en el período k nos indica el valor que tiene disponer en dicho período de una unidad marginal adicional de estado (caída del cielo !!) dado que a partir de ese momento nos comportaremos óptimamente.
Las anteriores derivadas indican que:
1 unidad en k=0 vale δ2λ x 1 = δ2λ δ k=1 δλ x δ = δ2λ δ2 k=2 λ x δ2 = δ2λ
Donde el valor, en la última columna, se calcula como valor (derivada) por cantidad.
Por tanto, una unidad en k=0 es equivalente a δ unidades en k=1 ó a δ2
unidades en k=2…..debido a la depreciación !!
Por otra parte, el recurso que aparece en el lado derecho de la restricción de recursos del problema de programación matemática es δ2x(0), es decir, el recurso medido en el período 2 (acabamos de ver que cada unidad del período 0 es equivalente a δ2 del período 2). Por tanto,…
….lo que mide el multiplicador de Lagrange del problema de programación matemática es el valor de una unidad adicional de recurso en el período 2 que debe ser, como hemos obtenido, igual a la derivada de la función valor en dicho período.
3.2. Problemas de N períodos. Recursividad en el
cálculo de la función valor.
En algunos problemas, la función valor tiene la misma forma funcional en todos los períodos, con lo que el problema se generaliza fácilmente a N períodos usando una hipótesis de inducción finita. Consideremos el problema anterior, pero ahora con N períodos, desde 0 hasta N-1, ambos inclusive.
La línea temporal es:
Dinámica de estado:
x(k+1) = δ x(k)- u(k) k = 0,1,..,N-2 Funcional objetivo:
( )
10 max N kln
k
u k
β
−
=
⎧ ⎫
⎨ ⎬
⎩
∑
⎭Período N-1, con x(N-1) dado. Claramente, u(N-1) = x(N-1), y además:
J(x(N-1),N-1) = βN-1lnx(N-1).
Veamos ahora que para el problema considerado la forma funcional de la función valor se conserva a lo largo de los períodos. Para ello usamos la inducción finita: supongamos que la forma en el período k+1 es:
(
)
(
1 , 1)
k 1(
(
1) (
1 ln)
(
1)
)
J x k+ k+ =β + m k+ +n k+ x k+
(notemos que para k+1 = N-1 es así tomando m(N-1)=0 y n(N-1)=1).
Si se verifica que, supuesta esa forma para el período k+1, se obtiene la misma forma funcional para el período k (aunque con coeficientes m y n distintos)…entonces la forma funcional se conserva en todos los períodos.
x(0) x(1) x(2) x(k) x(k+1) x(N-1)
u(0) u(1) u(k) u(N-1)
Período k, con x(k) dado y suponiendo (hipótesis de inducción) que la
función valor en k+1 es como hemos indicado.
El problema a resolver es:
(
)
{
1}
max k ln k ln
u
β
uβ
nδ
x u+
+ −
Donde el segundo término es la parte no constante de J(x(k+1),k+1) sustituyendo x(k+1) por su valor según la dinámica de estado y habiendo denotado x:=x(k+1), n:=n(k+1) y u:=u(k). La solución del anterior problema es:
1
u x
n
δ
β
= +
Sustituyendo la solución en la función maximizada tenemos J(x(k),k), es decir:
( )
(
,
)
kln
*( )
k 1(
ln
(
( )
*( )
)
)
J x k k
=
β
u k
+
β
+m n
+
δ
x k
−
u k
donde hemos tomado m:=m(k+1) y es
( )
(
) ( )
*
1 1
u k x k
n k
δ β
=
+ +
Operando se obtiene:
( )
(
,
)
k(
( ) ( )
ln
( )
)
J x k k
=
β
m k
+
n k
x k
donde m(k) y n(k) se definen apropiadamente. Por tanto, la función valor en el período k tiene la misma forma funcional que en el período k+1 (actualizando los coeficientes).
Para k = 0,1,…,N-2, tenemos:
( )
1(
1)
n k = +
β
n k+( )
ln(
)
(
1) (
1 ln)
(
(
1)
)
1 1 1 1
n k
m k m k n k
n k n k
δβ
δ
β
β
β
⎛ + ⎞
= + ⎜⎜ + + + ⎟⎟
+ + ⎝ + + ⎠
3.3. Un nuevo problema de rutas: la maldición de la
dimensionalidad.
Algunos problemas no son sencillos aunque pueden expresarse como un problema de programación dinámica. La siguiente tabla muestra las distancias kilométricas entre capitales de algunas provincias españolas elegidas al azar: Barcelona (Bar), Coruña (Cor), Huelva (Hue), Madrid (Mad) y Murcia (Mur).
Bcn Cor Hue Mad Mur
Bcn -- 1118 1140 621 590
Cor -- 1006 609 1010
Hue -- 632 628
Mad -- 401
Mur --
¿Cuál es la menor ruta (en kilómetros) que pasa por cada ciudad exactamente una vez?
La diferencia esencial entre este problema y el problema de rutas visto en semanas anteriores es que no está dado exógenamente cuál es la primera ni la última ciudad de la ruta. Notemos además que un problema distinto (y aún mas complejo!) hubiera sido: ¿cuál es la menor ruta que pasa por cada ciudad al menos una vez?
Supongamos que no sabemos programación dinámica, ¿Cuántos costes calcularíamos? Hay 5! rutas posibles, luego ese es el número de costes a calcular.
Si usamos programación dinámica, ¿cuántos costes calcularíamos?
Planteamiento del problema usando programación dinámica. Hay 5
períodos, desde 0 hasta 4 inclusive. En cada período visitamos una ciudad. En el período k el control, u(k), es qué ciudad visitar en ese período y el estado, x(k), es el conjunto de ciudades visitadas al comienzo de dicho período (antes de iniciar la visita del período) y cuál es la última visitada. Así x(0)={∅}. Además, para k > 1, adoptamos el convenio de que la ciudad enumerada en último lugar indica la última visitada, de modo que p.ej.: x(3)={Bcn, Cor, Hue} es idéntico a x(3)={Cor, Bcn, Hue} mientras que x(2)={Bcn, Cor} es distinto a x(2)={Cor, Bcn}. Ver que se cumple causalidad y aditividad separable por períodos del coste.
Veamos ahora cuantos costes hay que calcular usando programación dinámica.
Período 4, con x(4) dado, hay 5 x 4 = 20 estados posibles (5 porque cada
ciudad puede ser la última visitada y 4 porque, dada esa ciudad, cada una de las otras 4 puede ser la que falta por visitar). Para cada estado solo hay un control posible, luego el número de costes a calcular en este período es 20 x 1 = 20.
Período 3, con x(3) dado, hay 5 x (4x3)/2 = 30 estados posibles (5 igual
que en el período 4 y (4x3)/2 porque, dada la última visitada, hay 4x3 pares de ciudades posibles que faltan por visitar, pero el par (A,B) es equivalente al par (B,A)). Para cada estado hay dos controles posibles, luego el número de costes a calcular en este período es 30 x 2 = 60.
Período 2, con x(2) dado, hay 5 x 4 = 20 estados posibles (5 igual que
arriba y 4 porque, dada la última visitada, cualquiera de las otras 4 puede ser la primera visitada). Para cada estado hay tres controles posible, luego el número de costes a calcular en este período es 20 x 3 = 60.
Período 1, con x(1) dado, hay 5 estados posibles y 4 controles posibles
para cada estado, luego el número de costes a calcular en este período es 20.
Período 0, con x(0) dado, hay un estado posible y 5 controles posibles,
luego el número de costes a calcular en este período es 5.
Sumando los costes a calcular en cada período es:
20+60+60+20+5 = 165
que es mayor que 5! = 120.
Esto se conoce como maldición de la dimensionalidad: en cada período hay que tener en cuenta todos los estados posibles, y en problemas muy complejos eso implica un gran número de posibilidades a evaluar.