Está en la página 1de 25

Capitulo 3.

Programación Dinámica Optimización Estocástica Multi-Etapa con Manejo de Riesgo

3. PROGRAMACIÓN DINÁMICA

La Programación Dinámica (PD) resuelve un problema de decisiones secuenciales, en el espacio o en el


tiempo, que de manera general se formula de la siguiente forma:

PD: = { Min/Max Θ (x1 ,u1 ,x2 ,u2 , ... , xt ,ut , …, xT ,uT ) |


xt = g(xt-1,ut) ∀ t=1,T
ut ∈ Γ(xt-1) ∀ t=1,T
xt∈Ωt ∀ t=1,T
ut∈θt ∀ t=1,T }

donde xt representa el vector de variables de estado, ut el vector de variables de control, Ωt y θt


representan los espacios de existencia para dichas variables, gt(yt ,ut) la función que describe la evolución
de las variables de estado dada una escogencia de las variables control, Γ(xt-1) el espacio de las
posibilidades de selección de las variables de control cuando el sistema se encuentra en el estado xt-1, Θ (.)
la función de retorno del decisor y T el número de etapas secuenciales de decisión.

Cuando la función Θ (.) es separable a lo largo de las etapas del proceso de decisión es posible utilizar los
principios desarrollados por Richard Bellman (1957) para resolver el problema PD:, esto ocurre cuando
Θ (.) se puede expresar como:

Θ (x1 ,u1 ,x2 ,u2 , ... , xt ,ut , …, xT ,uT ) = Σt=1,T rt(yt ,ut )

o como

Θ (x1 ,u1 ,x2 ,u2 , ... , xt ,ut , …, xT ,uT ) = Πt=1,T rt(yt ,ut )

donde rt(xt ,ut ) representa la función de retorno en la etapa t.

El “Principio de Optimalidad” de Bellman dice que independientemente de las decisiones tomadas para
llegar a un estado especifico xt, en cualquier etapa t, una política óptima tiene la propiedad de que las
restantes decisiones hasta la etapa final T, representadas por (ut , ut+1 , ... , uT) deben constituir una política
óptima para la trayectoria desde t hasta T. En otras palabras, la trayectoria óptima desde el estado de
partida, x0, hasta estado final óptimo xT*, tiene la propiedad que para cualquier estado intermedio xt, la
trayectoria debe ser óptima desde el estado inicial x0 hasta el estado intermedio xt y desde dicho estado
hasta el estado final xT.

Dadas las pocas restricciones que se imponen para que se cumpla el “Principio de Optimalidad”, la
programación dinámica ha sido una alternativa numérica válida para resolver muchos tipos de problemas
no solubles por métodos directos de programación matemática.

Cuando las etapas se asocian a un espacio continuo, como el tiempo, el enfoque de Programación
Dinámica puede ser muy rico para estudiar el comportamiento de los sistemas a lo largo de dicho espacio.
En adelante se asociará las etapas a períodos del horizonte de planificación. Para el caso lineal el problema
de Programación Dinámica (PD:) puede formularse como

3-1
Capitulo 3. Programación Dinámica Optimización Estocástica Multi-Etapa con Manejo de Riesgo

PD: = { Min Σt=1,T ctTxt + dtTut |


Atxt = bt - Et-1xt-1 - Btut ∀ t=1,T
Ftxt = ft ∀ t=1,T
Gtut = gt ∀ t=1,T
ut∈R+ ∀ t=1,T , xt∈R+ ∀ t=1,T }

donde xt representa el vector de variables de estado, ut el vector de variables de control, ct as y dt los


vectores de costos, bt , ft y gt los vectores de recursos, y At , Et , Bt , Ft y Gt las matrices de relaciones
funcionales. La siguiente gráfica presenta la descomposición del problema bajo la visión de la PD.
DW DW

Programació
Programación Diná
Dinámica - Conceptualizació
Conceptualización Programació
Programación Diná
Dinámica
Etapas (Periodos)
Variables de ut
Control
u1 ut uT

xt-1 Atxt=bt-Et-1xt-1-Btut xt x0 x1 xt-1 xt xT-1 xT


Variables de
Ftux = ft
Variables de
1 t T
Gtut = gt Estado
Estado

Retorno ctTxt + dtTut


c1Tx1 + d1Tu1 ctTxt + dtTu cTTxT + dTTuT

La anterior formulación es apropiada para el caso de sistemas técnico-económicos, (por ejemplo:


financieros, cadenas de abastecimiento, recursos hídricos, mercados, etc.) en los que el vector de variables
de estado representa el nivel de los almacenamientos (“stocks”) y el vector de variables de control a las
variables asociadas a las operaciones al interior de un período (por ejemplo: producción y distribución de
los productos de la cadena de abastecimiento, transacciones de activos y de pasivos, etc.).

Para resolver el problema mediante PD éste se descompone en múltiples etapas, una por cada período,
encadenando las etapas por medio de la denominada función de costo futuro αt(xt ,ut), que por la
condición de separabilidad y el “Principio de Optimalidad” solamente es función explícita de las variables
de estado e independiente de las variables de control, por lo tanto el problema a resolver en cada etapa es:

PDt: = { Min ctTxt + dtTut + αt(xt) |


Atxt = bt - Et-1xt-1 - Btut
Ftxt = ft
Gtut = gt
ut∈R+ , xt∈R+ }

donde αt(xt) representa la función de los costos futuros asociados a la operación óptima del sistema para
los períodos posteriores a t, dado que al final de dicho período el estado del sistema es xt.

La evaluación de la función αt(xt) es el problema central de la PD. Existen al menos dos alternativas:

3-2
Capitulo 3. Programación Dinámica Optimización Estocástica Multi-Etapa con Manejo de Riesgo

ƒ por medio de algoritmos numéricos basados en tablas que almacenan los valores de αt(xt) para valores
discretos de xt, que es convencionalmente el método con el cual se asocia la Programación Dinámica
Clásica (PD); ó
ƒ por medio de métodos analíticos que utilizan la definición de αt(xt), que es el método utilizado por
versiones modernas, como la Programación Dinámica Dual.

3.1. PROGRAMACIÓN DINÁMICA CLÁSICA

3.1.1. TEORÍA FUNDAMENTAL

Un algoritmo de PD basado en la evaluación de la función αt(xt) por medio tablas considera dos fases: i)
evaluación de la tablas asociadas a las funciones αt(xt); y ii) determinación de la solución óptima al
problema, x*t.

Las soluciones a obtener mediante este tipo de algoritmo dependen del nivel de discretización que se
utilice para las variables de estado xt, que se puede asociar al número de intervalos en los que se divide la
zona factible de xt en lo que se refiere a sus cotas de variación. En adelante se asocia el superíndice d a la
notación para indicar el nivel de discretización, es decir que αdt(xt) corresponde a la función de costos
futuros obtenida por un algoritmo de PD para un nivel de discretización d. La discretización implica que
se considera un número finito de d posibles estados para evaluar puntos de la función αt(xt). El vector xdt
de posibles estados se puede expresar como

xddt = { x1t, x2t, x3t, ... , xdt}

donde xet representa al é-simo punto de división de la zona de factibilidad de xt.

Consideremos la solución del problema de la última etapa para un nivel de discretización d, para una
condición inicial xeT-1, que pertenece a uno de los posible valores discretos considerados para xT-1

αdT-1(xeT-1):= { Min cTT xT |


ATxT = bT - ET-1xeT-1 , xT∈R+ }

αdT-1(xeT-1) representa exactamente a αT-1(xeT-1) debido a que no hay ninguna aproximación en el problema
que la define. Para estimar la función αT-1(xT-1) para valores de xT-1 que no pertenecen a xdT-1 se requiere
de un proceso de interpolación, lineal o no lineal, que debido a la convexidad (Davis y Provonost 1972) de
αT-1(xT-1) implica siempre la sobrestimación del verdadero valor. Por lo tanto se puede afirmar que
independiente del nivel de discretización d se cumple

αT-1(xT-1) < αdT-1(xT-1)

La siguiente gráfica permite visualizar la anterior condición.

3-3
Capitulo 3. Programación Dinámica Optimización Estocástica Multi-Etapa con Manejo de Riesgo

PROGRAMACIÓ
PROGRAMACIÓN DINÁ
DINÁMICA CLÁ
CLÁSICA
APROXIMACION DE LA FUNCION DE COSTO FUTURO αT(xT)
αt(xt)

αT(xe T)

EVALUACIONES DISCRETAS

+
xt

Consideremos el problema aproximado que se debe resolver en las restantes etapas

αdt(xet) = { Min ct+1T xt+1 + αdt+1(xet+1) |


At+1xt+1 = bt+1 - Etxet , xt+1∈R+ }

Comenzando por la etapa T-2 de manera recursiva es posible demostrar que siempre se cumple que

αt(xt) < αdt(xt)

El error de aproximación va aumentando en la medida que disminuye el valor de t, es decir que para la
primera etapa se tiene el mayor nivel de error. Lo anterior se puede visualizar en la siguiente gráfica

+ PROGRAMACIÓ
PROGRAMACIÓN DINÁ
DINÁMICA CLÁ
CLÁSICA
APROXIMACION DE αt(xt)
αt(xt) +

+
+

+ + α1(x1)
+ + αt(xt)

+ αT(xT)
xt

Lo anterior implica que cualquier algoritmo de PD correctamente implementado, independientemente de


los métodos de interpolación y del nivel de discretización, siempre sobrestima la función de costos futuros
αt(xt) y la sobrestimación es mayor para los primeros períodos del horizonte de planificación.

Con respecto al nivel de discretización es fácil verificar que debido a la convexidad de αt(xt) a menor
nivel de discretización mayor sobrestimación de αt(xt); es decir que si xdd2t esta incluido en xdd1t se
cumple

3-4
Capitulo 3. Programación Dinámica Optimización Estocástica Multi-Etapa con Manejo de Riesgo

αd1t(xt) < αd2t(xt)

lo que es coherente matemáticamente ya que cuando el número de componentes de xddt tiende a infinito se
tiene el problema exacto.

El efecto de la sobreestimación depende del sistema; por ejemplo, en el caso de aplicaciones de recursos
hídricos retarda el uso del agua con respecto a su uso óptimo, lo que se traduce en niveles de embalse
superiores al perfil de operación óptimo que se obtendría con un método continuo. Por lo tanto, se puede
afirmar que la pérdida de precisión de los algoritmos de PD, entendida como menor nivel de
discretización, retarda el uso del recurso hídrico con respecto a su uso óptimo. Lo que implica que la PD
produce políticas más conservadoras con respecto a la política óptima.

Cuando se obtiene αd1(x1) se puede considerar que se ha explorado la zona de factibilidad dual del
problema original, ya que se tiene información "completa" con respecto al costo de oportunidad implícito
en el nivel de las variables de estado para todas las etapas y todos los estados. Esta información es
suficiente para determinar la trayectoria óptima x*d definida como

x*d = {x*d1, x*d2, x*d3, ... , x*dT-1, x*dT}

donde x*dt representa la solución óptima para el período t dado el nivel de discretización d.
Simultáneamente, se ha explorado la zona de factibilidad primal determinando funciones x*dt(xt-1) que
definen el valor óptimo de las variables de estado al final del período t, y de las de control al interior del
período t, como función del valor de las variables de estado al comienzo del período.

Para determinar la decisión óptima para cualquier período t se puede utilizar la información dual, es decir
αdt(xt), o la información primal, es decir x*dt(xt-1).

Si el problema se resuelve exactamente, es decir que no hay errores en la estimación de las funciones
αt(xt), lo que ocurre cuando el nivel de discretización d tiende a infinito, cualquiera de las dos alternativas
se puede utilizar indistintamente, ya que darán el mismo resultado. La igualdad entre las solución dual y la
primal se basa en la Teoría de la Dualidad que dice que si existe solución al problema dual

DPD: = { Max Σt=1,T btT πt |


πtT [At+Et-1] ≤ ctT ∀ t=1,T
πt∈R ∀ t=1,T }

en el óptimo se cumple

Σt=1,T btT π*t = Σt=1,T ctT x*t

donde π*t es la solución al problema dual DPD: y x*t la solución al problema primal PD:.

Se debe tener en cuenta que las funciones aproximadas αdt(xt) implican que la solución x*dt(xt-1) para las
variables primales es subóptima y que por lo tanto la solución dual correspondiente es no factible (Ring y
Read 1994), esto es consecuencia directa del proceso de interpolación. Bajo estas consideraciones se debe
ser cuidadoso al utilizar información económica factible lo que puede distorsionar los resultados
obtenidos. En principio, sin mucha rigurosidad matemática desde el punto de vista teórico, se puede

3-5
Capitulo 3. Programación Dinámica Optimización Estocástica Multi-Etapa con Manejo de Riesgo

afirmar que el uso de la información primal subóptima debe ser más apropiado que el uso de la
información dual no factible. Pero a pesar de lo anterior, las soluciones deben ser "similares".

3.1.2. AGREGACIÓN DE VARIABLES DE ESTADO

Cuando existen múltiples variables de estado, la PD debe enfrentar “el problema de la maldición de la
dimensionalidad” (“curse of dimensionality problem") que radica en la alta dimensionalidad de las tablas
que deben manejar los algoritmos numéricos, debido al número de variables de estado y a multiplicación
por el nivel de discretización, lo que aumenta la demanda de requerimientos computacionales en tiempo y
en espacio haciendo inmanejable el problema. La complejidad radica en la cantidad de combinaciones que
se deben evaluar para elaborar las tablas que contienen los valores de αdt(xt) y/o x*dt(xt-1) requeridos para
obtener la solución al problema para todo el horizonte de planificación. Por esta razón, en la práctica se
debe limitar el número de variables de estado y el nivel de discretización.

Si se tienen N variables de estado, T períodos de planificación y d niveles de discretización, las tablas


para almacenar αdt(xt) y x*dt(xt-1) tendrían cada una un total de (T-1)*dN elementos. El factor dN se deriva
del hecho que es necesario evaluar αdt(xt) y x*dt(xt-1) para todas las combinaciones de los valores discretos
de las variables de estado. Lo anterior hace que ante limitaciones computacionales, para resolver
problemas prácticos con múltiples variables de estado se requiera de transformaciones del problema para
conseguir la solución óptima, o al menos una solución cerca de la solución óptima.

En términos generales, el enfoque utilizado para reducir de tamaño el problema original consiste en
evaluar las funciones αdt(xt) y x*dt(xt-1) para cada componente xt,i del vector de variables de estado xt con
base en un problema de dos variables de estado: xt,i y ξt,i, siendo ξt,i una variable de estado artificial que se
obtiene agregando las restantes componentes del vector de variables de estado {xt,j≠i} y fijando su valor
con base en una función de agregación Θ({xt,j≠i}), matemáticamente lo anterior es

ξt,i = Θ({xt,j≠i})

Un ejemplo de una función de transformación general es

ξt,i = Σj≠i δt,j,i xt,j

donde δt,j,i corresponde a un factor de ponderación de la variable de estado xt,j cuando se evalúa las
funciones αdt(xt) y x*dt(xt-1) para las componentes xt,i. La variable de estado ξt,i se discretiza de manera
similar a las variables de estado originales xt,i. Por lo tanto, las funciones αdt(xt) y x*dt(xt-1) no son
evaluadas en todos los puntos discretos del espacio del vector xt, sino en todos los puntos discretos del
espacio {xt,i ,ξt,i}.

La solución del problema original implica la solución coordinada de N problemas aproximados con base
en dos variables de estado. La agregación de N-1 variables de estado conlleva simplificaciones del
problema original que deben analizarse para cada caso específico. La coordinación de la solución debe
soportarse en desarrollos matemáticos que describan los procedimientos que se deben seguir para obtener
la "mejor" solución al problema según sea el caso. En la literatura técnica existen muchas variaciones
alrededor de los conceptos generales que aquí se han planteado, la bondad y calidad el enfoque debe
analizarse independientemente en cada caso.

3-6
Capitulo 3. Programación Dinámica Optimización Estocástica Multi-Etapa con Manejo de Riesgo

Se debe tener en claro que la suboptimalidad será una característica presente en todos los casos de
agregación de variables de estado, ya que el problema real ha sido simplificado para obtener una "buena"
solución factible, mas no la solución óptima.

3.2. PROGRAMACIÓN DINÁMICA DUAL

Existen al menos dos orígenes para lo que se ha denominado Programación Dinámica Dual (PDD). El
primero está relacionado con el trabajo desarrollado por Pereira y Pinto (Pereira y Pinto 1985, Pereira
1989, Pereira y Pinto 1991) el cual fue revisado por Velásquez et. al (Velásquez 1997, Velásquez,
Restrepo y Campo 1999). El segundo corresponde al trabajo desarrollado Read y sus colaboradores
(Casseboom y Read 1987, Read 1989, Read y George 1990).

3.2.1. PROGRAMACIÓN DINÁMICA DUAL VERSIÓN PEREIRA (PDD-P)

En una serie de trabajos desarrollados a partir de 1985 por Pereira y Pinto (Pereira y Pinto 1985, Pereira
1989, Pereira y Pinto 1991) se presentan los conceptos fundamentales que hacen posible utilizar la
metodología de la Programación Dinámica, a problemas con múltiples variables de estado sin enfrentar “el
problema de la maldición de la dimensionalidad”. Pereira y Pinto utilizan la Teoría de Benders (TB) para
establecer la función de costo futuro del sistema con base en los hiperplanos que la definen, en vez de
calcularla a partir de la discretización de su valor en varios puntos del espacio primal de las variables de
estado; posteriormente Velásquez y sus colaboradores (Velásquez 1997, Velásquez, Restrepo y Campo
1999) revisan y ajustan las ecuaciones propuestas por Pereira y Pinto para garantizar la convergencia al
óptimo de dicha teoría. Este último trabajo se considera aporte original del autor a la teoría matemática de
la Programación Dinámica Dual, y en conjunto en adelante se referirá como PDD-P.

La PDD, tal como fue definida por Pereira y Pinto está orientada a resolver un problema con una
estructura apropiada para combinar el enfoque de programación dinámica con los principios de la teoría
propuesta por Benders. La formulación propuesta para PDD-P es:

PDD-P: = { Min Σt=1,T ctTyt |


Atyt = bt - Et-1yt-1 ∀ t=1,T , yt∈R+ ∀ t=1,T }

donde yt representa conjuntamente a las variables de estado y a las de control, es decir

y t = { xt , ut }

Las formulaciones de la PD y de PDD-P son equivalentes; sin embargo, la formulación que hace explícita
las variables de control es más rica para describir un sistema técnico-económico. La diferencia
fundamental con respecto a la PD es la forma de resolver el problema, es decir la forma en como se evalúa
las funciones de costo futuro αt(xt). Las dos soluciones son equivalentes. Dado que la función de costo
futuro es independiente del valor de las variables de control se tiene

αt(yt) = αt(xt , ut) = αt(xt)

Para desarrollar la teoría que soporta PDD-P consideremos, como en el caso de PD, el problema de la
última etapa, T, asociado a la determinación de αT-1(xT-1) que se puede obtener resolviendo el problema

{ αT-1(yT-1) = Min cTT yT |


ATyT = bT - ET-1yT-1 , yT∈R+ }
3-7
Capitulo 3. Programación Dinámica Optimización Estocástica Multi-Etapa con Manejo de Riesgo

Con base en la Teoría de la Dualidad se puede evaluar αT-1(yT-1) a partir del problema dual

{ αT-1(yT-1) = Max πTT[bT - ET-1yT-1] |


πTTAT ≤ cTT , πT∈R }

donde representa πt las variables duales del problema asociado a la etapa t. Por lo tanto αT-1(yT-1) cumple
con

αT-1(yT-1) ≥ πTT[bT - ET-1yT-1]

La anterior condición se debe cumplir para cualquier valor de πT perteneciente a la zona de factibilidad
dual y corresponde al corte por optimalidad de Benders.

A partir del anterior razonamiento, Pereira (1989) propone la solución del problema PD: con base en la
solución coordinada de un conjunto de problemas del tipo:

CPt(yt-1): = { Min ctTyt + αt(yt) |


Atyt = bt - Et-1yt-1 , yt∈R+
αt(yt) ≥ (π t+1) [bt+1 - Etyt] ∀ k=1,IT(t) }
k T

donde IT(t) corresponde al número de cortes que se han generado a nivel del coordinador CPt(yt), y πkt+1
al vector de variables duales de las restricciones At+1yt+1=bt+1-Etyt obtenido en la k-ésima solución del
problema CPt+1(yt):

El problema CPt(yt): cumple las funciones de un coordinador de acuerdo a TB. El problema


correspondiente al coordinador de la primera etapa, es equivalente al problema original, ya que el enfoque
de Benders es una reformulación del problema con la finalidad de facilitar su solución y no implica
aproximación alguna. En otras palabras PDD-P postula que la cadena de problemas

CPt(yt-1): = { Min ctTyt + αt(yt) |


Atyt = bt – Et-1yt-1 , yt∈R+
αt(yt) ≥ (πkt+1)T [bt – Etyt] ∀ k=1,IT(t) }

es equivalente al problema original P:. La concepción de la programación dinámica dual convierte un


problema de múltiples períodos en múltiples problemas de un período parametrizados por los estados del
anterior período y por la estimación de la función de costo futuro para los siguientes períodos. O sea que
el problema transformado para evaluar CPt(yt-1) es función de las variables yt-1 y se relaciona con las
variables de los períodos posteriores por medio de la función αt(yt) y con las variables del período anterior
por medio de la parametrización en yt-1.

En definitiva la función αt(yt), que representa el costo futuro desde la etapa t+1 hasta el final del horizonte
T, se determina por medio del conjunto de cortes de Benders

αt(yt) ≥ (πkt+1)T [bt – Etyt] ∀ k=1,IT(t)

3-8
Capitulo 3. Programación Dinámica Optimización Estocástica Multi-Etapa con Manejo de Riesgo

La revisión realizada por Velásquez y sus colaboradores (Velásquez 1997, Velásquez, Restrepo y Campo
1999) implica la inclusión de un término faltante en los cortes de Benders considerados originalmente por
Pereira. Los nuevos cortes tienen la siguiente forma

αt(yt) + πkt+1TEtyt ≥ σt+1k ∀ k =1,IJ(t,j)

donde IJ(t,j) representa el número de cortes incluidos en el problema coordinador CPt-1(yt-1) cuando se
resuelve el problema CPt(yjt-1) y σtj es un valor constante calculado como

πjtTbt t=T
σ tj = { πjtTbt + Σk=1,IJ(t,j) λk,jt σt+1k t = 1 , T-1

donde λk,jt representa la variable dual del k-ésimo corte de Benders en el problema CPt(yjt-1).

Si no se incluye el término de corrección PDD-P corresponde a un método aproximado y no a un método


exacto. Con respecto a esta aproximación Yang y Read (1999) dicen: "Rather than produce exact decision
rules for the entire state-space and planning horizon, it focuses on producing a good solution for the first
period, and only forms approximate decision rules for later periods ..."

El enfoque de PDD-P implica la descomposición multilevel en el dominio de tiempo (Velásquez 1995) de


múltiples problemas que se descomponen usando TB, generando nuevos problemas que de nuevo se
descomponen usando TB, es decir el uso anidado de TB tal como describen Gassman (1990) y Birge
(1996) y como se presenta en el caso multinivel, en el numeral 2.1.3, del presente informe.

La siguiente gráfica ilustra la aproximación de la función de costo futuro bajo el enfoque PDD-P.
PROGRAMACIÓ
PROGRAMACIÓN DINÁ
DINÁMICA DUAL
αt(xt) PROXIMACION DE αt(xt)

αt(xt) + πkt+1TEtxt ≥ σt+1k

CORTES DE BENDERS
xt

Fuera del punto óptimo, la aproximación que realiza PDD-P subestima el verdadero valor de αt(xt), en la
medida que se generan cortes el error de subestimación desaparece y al final la representación del
problema es exacta en el vecindario de la solución óptima, fuera de este vecindario no lo es. Este hecho es
de fundamental importancia cuando los cortes de Benders son utilizados como definición de la función de
costo futuro para simular decisiones para casos no considerados en el modelo de optimización. Dicha
simulación, por definición es sub-óptima, ya que subestima el verdadero costo futuro.

Por lo anterior se puede afirmar que la PDD subestima las funciones de costo futuro, en tanto que la PD
las sobreestima. Por lo tanto se cumple:
3-9
Capitulo 3. Programación Dinámica Optimización Estocástica Multi-Etapa con Manejo de Riesgo

αPDDt(yt) < αPDt(yt)

Desde el punto de vista algorítmico existe más de una alternativa para enfrentar la solución de un
problema dinámico utilizando los conceptos de la PDD-P, en general un algoritmo se mueve en dos
direcciones: i) forward: desde la etapa 1 hacia la T; y ii) backward: en sentido contrario. En la fase
forward, inicializando t en 1 y partiendo de un valor dado de y0, se resuelven sub-problemas CPt(yt-1): con
la finalidad de determinar el valor de yt que sirve como condición de frontera para el siguiente sub-
problema CPt+1(yt): hasta llegar a la etapa T; en la fase backward se insertan cortes de optimalidad en
CPt(yt-1): con base en el valor de las variables duales obtenidas para CPt+1(yt):.

En la fase backward antes de pasar de CPt(yt-1): a CPt-1(yt-2): existen al menos dos alternativas extremas
para el proceso algorítmico: i) pasar a la etapa anterior solo cuando se ha obtenido la solución óptima para
CPt(yt-1):, lo que implica la generación de múltiples cortes a partir de la solución de CPt+1(yt):; y ii) pasar
a la etapa anterior cuando se ha obtenido el primer corte para CPt(yt-1):. Entre las dos anteriores
alternativas se puede generar gran cantidad de variaciones. La propuesta original de PDD-P corresponde a
la segunda alternativa, propuesta que también se conoce como fast-backward.

3.2.2. PROGRAMACIÓN DINÁMICA DUAL VERSIÓN READ (PDD-R)

Por otro lado, E. G. Read y otros desarrollaron un trabajo que también llamaron Programación Dinámica
Dual (Casseboom y Read 1987, Read 1989, Read y George 1990, Yang y Read 1999) que en adelante se
referirá como PDD-R. La formulación conceptual de PDD-R hace distinción entre variables de control y
variables de estado. En sistemas productivos dicho manejo implica diferenciar las variables de producción
y de distribución de las de los inventarios. La PDD-R puede considerarse como un planteamiento dual al
enfoque clásico de PD en el sentido que en la PD clásica para la solución numérica se escoge una rejilla
de variables de estado primales (“stocks”) y para cada punto de la rejilla se encuentra la decisión óptima y
los precios sombra implícitos (costos marginales de las existencias); en tanto que PDD-R escoge una
rejilla de variables duales (costos marginales) y para cada uno encuentra el nivel de existencias óptimo en
el espacio primal. Para producir la curva de oferta (“supply function”) al final de cada período, PDD-R
resuelve paramétricamente un sub-problema por período, o por grupos de períodos cuando la función de
oferta es común. Posteriormente, utilizando recursión hacia atrás, PDD-R combina estas funciones con el
fin determinar la estrategia óptima.

La formulación original de PDD-R considera el siguiente problema

PDD-R: = { Min Σt=1,T [etTzt + dtTwt ] + αT(xT) |


xt = xt-1 + zt - bt ∀ t=1,T
Gtwt + zt = gt ∀ t=1,T
zt∈R ∀ t=1,T , wt∈R+ ∀ t=1,T
+

xMINt ≤ xt ≤ xMAXt ∀ t=1,T }

donde zt representa el vector de variables de producción en el período t y wt el vector de variables de


actividad de la infraestructura industrial. Tomando como referencia la formulación de la PD,
conjuntamente zt y wt conforman el vector de variables de control, es decir:

ut = { zt , wt }

3-10
Capitulo 3. Programación Dinámica Optimización Estocástica Multi-Etapa con Manejo de Riesgo

El vector xt representa los “stocks” de cada producto (variables de estado) y el vector bt la demanda. La
anterior formulación corresponde a un caso particular de la formulación general de la PD:

GDP: = { Min Σt=1,T ctTxt + dtTut |


Atxt = bt - Et-1xt-1 - Btut ∀ t=1,T
Gtut = gt ∀ t=1,T
ut∈R+ ∀ t=1,T , xt∈R+ ∀ t=1,T }

A diferencia del enfoque de la PDD-P, PDD-R mantiene la diferencia entre variables de estado y
variables de control.

Para resolver el problema PDD-R considera para cada período del horizonte de planificación la
construcción paramétrica de una función de oferta para un nivel pt, lo que se puede conseguir resolviendo
para cada período el siguiente problema:

SFt(p): = { Min [etTzt + dtTwt ] |


zt = p
Gtwt + zt = gt
zt∈R+ , wt∈R+ }

En términos de variación de las variables de estado, xt -xt-1, el anterior problema puede formularse como

SFt(Δxt): = { Min [etTzt + dtTwt ] |


zt = bt + Δxt
Gtwt + zt = gt
zt∈R+ , wt∈R+ }

La PDD-R propone resolver paramétricamente SFt(p): para varios valores de p y construir la función de
costo de oferta Ωt(zt) que determina el costo de producir zt en el período t y cuya derivada determina la
función de oferta Θt(zt), costo marginal de producir zt.

Θt(zt) = ∇zΩt(zt)

Los valores de p se establecen de manera discreta para todo el rango de variación de zt, resolviéndose el
problema para puntos zet.

3-11
Capitulo 3. Programación Dinámica Optimización Estocástica Multi-Etapa con Manejo de Riesgo

PROGRAMACIÓ
PROGRAMACIÓN DINÁ
DINÁMICA DUAL DDP-
DDP-R
APROXIMACION DE LA FUNCION OFERTA Ω t(zt)
Ω t(zt)

Ω t(zet)
EVALUACIONES +
DISCRETAS

+
zt

Con base en las funciones de costo de oferta Ωt(zt) el problema original se puede formular como

PDD-R: = { Min Σt=1,T [etTzt + Ωt(zt) ] + αT(xT) |


xt = xt-1 + zt - bt ∀ t=1,T
zt∈R+ ∀ t=1,T
x t ≤ xt ≤ xMAXt ∀ t=1,T }
MIN

La PDD-R propone resolver el problema utilizando los principios de Programación Dinámica Clásica, lo
que implica una doble discretización: en las variables de producción zt y en las de almacenamiento xt; por
lo anterior esta metodología debe enfrentar los problemas asociados a la “maldición de la
dimensionalidad”. El nombre de Programación Dinámica Dual se asocia al hecho que la discretización de
la función Ωt(zt) implica la discretización de su derivada Θt(zt), que corresponde a los costos marginales
de producción, variables duales, para cada período.

Es interesante considerar el caso que se genera cuando la zona de factibilidad del problema SFt(p) es
independiente de t, y la función objetivo corresponde al descuento de costos reales que son constantes en
el tiempo, esto es:

SFt(p): = { Min β t [eTzt + dTwt ] |


zt = p
Gwt + zt = g
zt∈R+ , wt∈R+ }

donde β es el factor neto de descuento. Bajo estas condiciones no es necesario resolver todos los
problemas para cada período, ya que la zona de falibilidad es común a todos y la función objetivo es co-
lineal para cada xt. Por lo tanto se puede establecer una función de costo de oferta para el período inicial
(t=0), y a partir de ella establecer la función descontada para cualquier período t, esto es:

Ωt(zt) = β t Ω0(zt)

lo que presenta ventajas computacionales para problemas con gran cantidad de períodos.

3-12
Capitulo 3. Programación Dinámica Optimización Estocástica Multi-Etapa con Manejo de Riesgo

Este caso puede ser bastante común, si se tiene en cuenta que la matriz Gt es función de la topología y de
la tecnología y el vector gt de las capacidades disponibles, aspectos que frecuentemente no cambian en los
diferentes períodos.

3.3. PROGRAMACIÓN DINÁMICA DUAL GENERALIZADA (PDDG)

La Programación Dinámica Dual Generalizada (PDDG, Velásquez 2002), trabajo original desarrollado
por el autor, se basa en la aplicación encadenada de TB a un problema de optimización multiperíodo y
corresponde a una generalización de PDD-P y de la PDD-R. La PDDG considera la solución del siguiente
problema dinámico lineal:

PDDG: = { Min Σt=1,T ctTxt + dtTut |


Atxt = bt - Et-1xt-1 - Btut ∀ t=1,T
Gtut = gt ∀ t=1,T
ut∈R+ ∀ t=1,T , xt∈R+ ∀ t=1,T }

donde el vector xt representa las variables de estado y el vector ut las variables de control. At, Et, Bt, y Gt
son matrices de relaciones funcionales, bt y gt son vectores de recursos, ct y dt vectores de costos y T el
número de períodos del horizonte de planificación.

PROGRAMACIÓ
PROGRAMACIÓN DINÁ
DINÁMICA DUAL GENERALIZADA

Variables
de Control
ut

Atxt=bt-Et-1xt-1–Btut
xt-1 Gtut = gt xt
Variables ut∈R +
Variables
de Estado xt∈R+
de Estado

Retorno ctTxt + dtTut + αt(xt)

Como se mencionó anteriormente, la formulación previa es apropiada para describir agregadamente


sistemas industriales en que las variables de estado se asocian con la cantidad de existencias de recursos
en los almacenamientos y las variables de control con la producción y la distribución de materias primas,
productos intermedios y/o productos finales. Por ejemplo, la familia de los problemas de optimización
PDDG: se puede utilizar en la planificación táctica de sistemas industriales en los que sus características
no-lineales, si existen, pueden ser linealizadas. La aplicación de PDDG resuelve el problema de
optimización como la solución coordinada de una suma problemas más simples.

El enfoque conceptual de PDDG es similar al de PDD-R, en el sentido que mantiene la diferencia entre
variables de estado y variables de control; la diferencia fundamental radica en la forma de evaluar la
función de oferta en cada período. En PDDG las funciones de oferta se construyen con base en el conjunto
de hiperplanos que la definen, que son generados utilizando TB de la misma forma que PDD-P lo hace
para la función de costo futuro.

La diferencia entre PDD-P y PDDG radica la formulación conceptual, ya que PDD-P solo considera
variables de estado, en tanto que PDDG hace diferencia entre variables de estado y variables de control.
3-13
Capitulo 3. Programación Dinámica Optimización Estocástica Multi-Etapa con Manejo de Riesgo

PDDG considera una formulación más detallada en la que las variables que acoplan dos períodos
consecutivos, corresponden a las variables de estado, xt, en tanto que las variables no incluidas
directamente en la relación dinámica son manejadas como variables de control, ut .

La formulación conceptual del problema PDDG: permite desarrollar algoritmos eficaces basados en la
partición y la descomposición del problema original utilizando TB ya que la solución del problema se
obtiene con base en la solución coordinada de múltiples problemas de dimensión más pequeña que en
PDD-P.

La equivalencia entre la formulación de la PPD-P y PDDG puede visualizarse al considerar las dos
siguientes formulaciones

PDD-P: = { Min Σt=1,T cPtT xt |


APtxt = bPt - EPt-1xt-1 ∀ t=1,T
xt∈R+ ∀ t=1,T }

PDDG: = { Min Σt=1,T ctTyt + dtTut |


Atyt = bt - Et-1yt-1 ∀ t=1,T
Btyt + Gtut = gt ∀ t=1,T
ut∈R+
∀ t=1,T , xt∈R+ ∀ t=1,T }

donde el vector xt es igual a { yt , ut } y las matrices APt y EPt-1 iguales a

At 0
APt = | Bt Gt |
Et 0
EPt = | 0 0 |
3.3.1. TEORÍA BÁSICA

En la solución de PDDG: se considera un proceso de dos fases: primero, se definen las variables de estado
xt como las variables de coordinación y se desacopla el problema a nivel temporal, generando sub-
problemas para las variables de control ut. parametrizados en xt. Posteriormente, utilizando los principios
de PDD-P se resuelve el problema coordinador para las variables de estado xt, que incluyen los cortes de
Benders que se han generado.

El problema coordinador para xt es

CX: = { Min Σt=T-1 ctTxt + Ωt(xt-1,xt) |


{ Ωt(xt-1,xt) = Min | Btut = bt - Et-1xt-1 - Atxt , Gtut = gt , ut∈R+ } ∀ t=1,T
dtTut
xt∈R+ ∀ t=1,T }

donde Ωt(xt-1,xt) representa el costo del funcionamiento óptimo en el período t teniendo como condición
de frontera inicial xt-1 y como frontera final xt y corresponde a la función objetivo del problema estático
de operaciones SUt(xt-1,xt): definido como

SUt(xt-1,xt): = { Ωt(xt-1,xt) = Min dtTut | Btut = bt - Et-1xt-1 - Atxt , Gtut = gt , ut∈R+ }


3-14
Capitulo 3. Programación Dinámica Optimización Estocástica Multi-Etapa con Manejo de Riesgo

El problema dual de SUt(xt-1,xt): es

DSUt(xt-1,xt): = {Ωt(xt-1,xt) = Max πtT[bt - Et-1xt-1 - Atxt] + δtTgt | πtTBt + δtTGt ≤ dtT }

donde πt representa el vector de variables duales de las restricciones Btut=bt-Et-1xt-1-Atxt y δt el vector de


variables duales de Gtut=gt.

Considerando los cortes desacoplados para cada sub-problema SUt(xt-1,xt): el coordinador CX: es

CX: = { Min Σt=1,T ctTxt + Ωt(xt-1,xt) |


Ωt(xt-1,xt) + (πt ) Et-1xt-1+(πtk)TAtxt ≥ θt(πtk,δtk) ∀ t=1,T
k T
∀ k=1,IU(t) }

donde IU(t) representa el número de cortes generados para cada sub-problema SUt(xt-1,xt) y θt(π,δ) es una
función temporal, de dos argumentos, que define un valor constante

θt(π,δ) = πTbt + δTgt

El problema coordinador CX: solo contiene cortes de Benders y variables de estado, estructura similar a la
considerada para la PDD-P, por lo tanto es posible utilizar esta teoría para resolverlo. Los cortes que
integran el coordinador CX: son

Ωt(xt-1,xt) + (πtk)TEt-1xt-1+(πtk)TAtxt ≥ θt(πtk,δtk) ∀ t=1,T ∀ k=1,IU(t)

La anterior condición será llamada corte de Benders tipo FO (función de oferta). Se debe notar que en la
publicación original este tipo de corte se denominó corte de Benders tipo 1.

PROGRAMACIÓ
PROGRAMACIÓN DINÁ
DINÁMICA DUAL GENERALIZADA
FASE I

CX: =
{
Min Σt=1,T ctTxt + Ωt(xt-1,xt) |
Ωt(xt-1,xt) + (πtk)TEt-1xt-1+(πtk)TAtxt ≥ θt(πtk,δtk) ∀t=1,T ∀k=1,IU(t)
}

π1k πtk πTk


x1 k xtk xTk

t=1 t=T

SUt(xt-1,xt): = SUt(xt-1,xt): = SUt(xt-1,xt): =


{ Ωt(xt-1,xt) = { Ωt(xt-1,xt) = { Ωt(xt-1,xt) =
Min dtTut | Min dtTut | Min dtTut |
Btut = bt - Et-1xt-1 - Atxt Btut = bt - Et-1xt-1 - Atxt Btut = bt - Et-1xt-1 - Atxt
Gtut = gt Gtut = gt Gtut = gt
ut∈R+ ut∈R+ ut∈R+
} } }

Siguiendo el enfoque de recursión hacia atrás es posible aplicar TB al coordinador del último período
CX:. El coordinador CGT-1: para el período {1,T-1} es
3-15
Capitulo 3. Programación Dinámica Optimización Estocástica Multi-Etapa con Manejo de Riesgo

CGT-1: = { Min Σt=1,T-1 [ ctTxt +Ωt(xt-1,xt)] + αT(xT-1) |


Ωt(xt-1,xt) + (πtk)TEt-1xt-1+(πtk)TAtxt ≥ θt(πtk,δtk) ∀ t=1,T-1 ∀k∈IU(t)
xt∈R+ ∀ t=1,T-1
αT(xT-1) + Σk∈I1(T,j) ψk,jT (πTk)TET-1xT-1 ≥ Σk∈I1(T,j) ψk,jT θT(πTk,δTk) ∀j∈IJ(T-1) }

donde αt+1(xt) respresenta la función de costo futuro definida en la PDD-P, ψk,jt la variable dual del k-
ésimo corte de Benders tipo FO para el período t obtenido al resolver el sub-problema SGt(xjt-1):, IJ(t) el
número de cortes generados para el sub-problema SGt(xjt-1): y I1(t,j) el número de cortes de Benders tipo
FO incluido en el sub-problema SGt(xjt-1).

El sub-problema SGt(xjt-1) para el período T es

SGT(xjT-1):={ αT(xjT-1) = Min cTTxT + ΩT(xT-1,xT) |


ΩT(xT-1,xT) + (πTk)TATxT ≥ θT(πTk,δTk) - (πTk)TET-1xjT-1 ∀ k∈IU(T)
xT∈R+ }

El nuevo corte incluido en CGT-1: es

αT(xT-1) + Σk∈I1(T,j) ψk,jT (πTk)TET-1xT-1 ≥ Σk∈I1(T,j) ψk,jT θT(πTk,δTk)

Esta condición será llamada corte de Benders tipo CF (función de costo futuro). Se debe notar que en la
publicación original este tipo de corte se denominó corte de Benders tipo 2.

Aplicando TB para dividir el coordinador CGT-1: se obtiene un nuevo coordinador CGT-2:

CGT-2: = { Min z = Σt=1,T-2 [ ctTxt +Ωt(xt-1,xt)] + αT-1(xT-2) |


Ωt(xt-1,xt) + (πtk)TEt-1xt-1+(πtk)TAtxt ≥ θt(πtk,δtk) ∀t=1,T-2 ∀k∈IU(T-2)
xt∈R+ ∀ t=1,T-2
αT-1(xT-2) + Σk∈I1(T-1,j) ψk,jT-1 (πT-1k)TET-2xT-2 ≥ Σk∈I1(T-1,j) ψk,jT-1 θT-1(πT-1k,δT-1k)
+ Σm=1,IJ(T-1,j) γm,jT-1 Σk∈I1(T,j) ψk,jT θT(πTk,δTk) ∀j∈IJ(T-2) }

donde γm,jt representa la variable dual del m-ésimo corte de Benders tipo CF para el período t obtenido en
la solución del sub-problema SGt(xjt-1): definido para el período T-1 como

SGT-1(xjT-2):={ αT(xjT-2) = Min cT-1TxT-1 + ΩT-1(xT-2,xT-1) + αT(xT-1) |


ΩT-1(xT-2,xT-1) + (πT-1k)TAT-1xT-1 ≥ θT(πT-1k,δT-1k) - (πT-1k)TET-2xjT-2 ∀ k∈IU(T-1)
xT-1∈R+
αT(xT-1) + Σk∈I1(T,j) ψk,jT (πTk)TET-1xT-1 ≥ Σk∈I1(T,j) ψk,jT θT(πTk,δTk) ∀ j∈IJ(T-1) }

Se puede demostrar que el problema coordinador para cada etapa intermedia t (menor que T) es

CGt: = { Min Στ=1,t [ cτ Tx1 +Ωτ(xτ-1,xτ)] + αt+1(xt) |


Ωτ(xτ-1,xτ) + (πτk)TEτ-1xτ-1+(πτk)TAτxτ ≥ θτ(πτk,δτk) ∀τ=1,t ∀ k∈IU(t)
xτ∈R+ ∀τ=1,t
αt+1(xt) + Σk∈I1(t+1,j) ψk,jt+1 (πt+1k)TEtxt ≥ φtj ∀ j∈IJ(t) }

3-16
Capitulo 3. Programación Dinámica Optimización Estocástica Multi-Etapa con Manejo de Riesgo

y el sub-problema para cada etapa intermedia t es

SGt(xjt-1):={ αT(xjt-1) = Min ctTxt + Ωt(xt-1,xt) + αt+1(xt) |


Ωt(xt-1,xt) + (πtk)TAtxt ≥ θT(πtk,δtk) - (πtk)TEt-1xjt-1 ∀ k∈IU(t)
xt∈R+
αt+1(xt) + Σk∈I1(t+1,j) ψ t+1 (πt+1k)TEtxt ≥ φtj ∀j∈IJ(t) }
k,j

donde φtj es un valor constante calculado como

Σk∈I1(T,j) ψk,jT θT(πTk,δTk) t=T


φtj = { Σk∈I1(t,j) ψk,jt θt(πtk,δtk) + Σm=1,IJ(t,j) γm,jtφt+1m t = 1 , T-1

El problema original GDP: corresponde al problema coordinador de la primera etapa CG1:, que tiene la
misma estructura del que sería el sub-problema SG1(xj0).

Las funciones Ωt(xt-1,xt) corresponden a las funciones de oferta (“costs supply functions”) que Read
considera en la PDD-R.

La implementación de PDDG implica la solución coordinada jerárquicamente de dos tipos de problemas:


en el nivel superior se resuelve la cadena integrada por los sub-problemas SGt(xjt-1):, que con excepción
de los sub-problemas asociados a las etapas extremas, 1 y T, cada uno de ellos actúa como coordinador del
sub-problema siguiente, etapa t+1, y como sub-problema coordinado, etapa t-1. En el nivel inferior,
dependiente de cada sub-problemna SGt(xjt-1):, se resuelve los sub-problemas SUt(xt-1,xt):.

Como en el caso de la PDD-P, desde el punto de vista algorítmico existe más de una alternativa para
implementar la metodología PDDG. En este caso se propone un algoritmo similar al de PDD-P con una
fase forward y una fase fast-backward. La diferencia fundamental radica en la fase forward en la que se
deben resolver dos problemas para cada etapa t; se propone que inicialmente se resuelva el sub-problema
SUT(xt-1,xt): y con base en su solución se incluya un corte tipo FO en el sub-problema SGt(xt-1): y a partir
de su solución se proceda a generar xt como condición de frontera de la siguiente etapa; en la fase fast-
backward se insertan cortes tipo CF de en SGt(xt-1): con base en el valor de las variables duales obtenidas
para SGt+1(xt):.

3-17
Capitulo 3. Programación Dinámica Optimización Estocástica Multi-Etapa con Manejo de Riesgo

PROGRAMACIÓ
PROGRAMACIÓN DINÁ
DINÁMICA DUAL GENERALIZADA
FASE II
t=1 t=T

xk xk
SGt(xt-1):= 1 SGt(xt-1):= T-1 SGt(xt-1):=
{α T(xjt-1) Min = {α T(xjt-1) Min = {αT(xjt-1) Min =
c tTxt + Ω t(xt-1,xt) + α t+1(xt) c tTxt + Ω t(xt-1,xt) + α t+1(xt) c tTxt + Ω t(xt-1,xt) + α t+1(xt)
| | |
Ω t(xt-1,xt) + (π tk )TAtxt ≥ Ω t(xt-1,xt) + (π tk )TAtxt ≥ Ω t(xt-1,xt) + (π tk)TAtxt ≥
θ T(π t ,δ t ) - (π tk )TEt-1xjt-1 ∀k∈IU(t,j)
k k θ T(π t ,δ t ) - (π tk)TEt-1xjt-1 ∀k∈IU(t,j)
k k
ψ kjt+1 θ T(πtk,δ tk) - (π tk)TEt-1xjt-1 ∀k∈IU(t,j)
ψ kjt+1
xt∈R+ xt∈R+ xt∈R+
αt+1(xt) + Σk∈I1(t+1,j) ψ k,j t+1 (πt+1k )Te txt α t+1(xt) + Σ k∈I1(t+1,j) ψ k,j t+1 (π t+1k )Te txt α t+1(xt) + Σk∈I1(t+1,j) ψ k,j t+1 (π t+1k )Te txt
≥ φ tj ∀j∈IJ(t) } ≥ φ tj ∀j∈IJ(t) } ≥ φ tj ∀j∈IJ(t) }

πk1 xk0, x k1, πkt xkt-1, xkt, πkT xkT-1, x kT,

t=1 t=T

SUt(xt-1, xt): = SUt(xt-1, xt): = SUt(xt-1, xt): =


{Ω t(xt-1,xt) = {Ω t(xt-1,xt) = {Ω t(xt-1,xt) =
Min dtTut | Min dtTut | Min dtTut |
Btut = bt - Et-1xt-1 - Atxt Btut = bt - Et-1xt-1 - Atxt Btut = bt - Et-1xt-1 - Atxt
Gtut = gt Gtut = gt Gtut = gt
ut∈R+ ut∈R+ ut∈R+
} } }

3.3.2. CASOS ESPECIALES

3.3.2.1. Bt , Gt , dt CONSTANTES

Consideremos el caso especial cuando la zona de factibilidad dual de los problemas SUt(xt-1, xt): es
estática, lo que implica que las matrices Bt y Gt y el vector dt son independientes del tiempo y el problema
dual se formula como

DSUt(xt-1, xt): = { Ωt(xt-1, xt) = Max πtT[bt - Tt-1xt-1 - Wtxt] + δtTgt |


πtTB + δtTG ≤ dT }

En este caso, un vector dual {πt,δt} factible para DSUt(xt-1, xt): es factible para todos los sub-problemas
DSUt(xt-1, xt): independientemente valor de t. Por tanto cuando se resuelve SUt(xt-1, xt): para valores
específicos de t es posible generar cortes tipo FO para todos los períodos y el coordinador CX: puede
expresarse como

CGt(xt-1): = { Min ctTxt + Ωt(xt-1,xt) + αt(xt) |


Ωt(xt-1,xt) + (πk)TWtxt ≥ θt(πk,δk) - (πk)TTt-1xt-1 ∀k∈IU
αt(xt) + Σk∈I1(t+1,j) ψtk,j (πt+1k)TTtxt ≥ φtj ∀ j∈IJ(t)
xt∈R+ }

donde el vector de variables duales {π,δ} es independiente del tiempo. Para cada iteración coordinador-
sub-problemas solo se requiere resolver un sub-problema SUt(xt-1, xt):. Esta situación es frecuente para las
matrices Gt y Bt debido a que en muchos casos están relacionadas con la tecnología y la topología del
sistema, las que en el corto plazo no varían. La situación con el vector de costos dt es diferente ya que en
muchos casos es dependiente del tiempo. En casos en que la variación temporal de dt se expresa como

dt = β t d
3-18
Capitulo 3. Programación Dinámica Optimización Estocástica Multi-Etapa con Manejo de Riesgo

donde β es un factor de descuento y d es un vector de referencia de precios constantes. En este caso, los
sub-problemas SUt(xt-1, xt): se pueden formular como

SUt(xt-1, xt): = { Min Ωt(xt-1, xt) = dTut |


But = bt - Tt-1xt-1 - Wtxt , Gut = gt , ut∈R+ }

y el coordinador CGt(xt-1): como

CGt(xt-1): = { Min z = ctTxt + βt Ω (xt-1,xt) + αt(xt) |


Ω(xt-1,xt)+ (πk)TWtxt ≥ θt(πk,δk) - (πk)TTt-1xt-1 ∀ k∈IU
αt(xt) + Σk∈I1(t+1,j) ψtk,j (πt+1k)TTtxt ≥ φtj ∀ j∈IJ(t)
xt∈R+ }

y solo se requiere resolver un sub-problema, independientemente de la cantidad de períodos. Este hecho es


fundamental cuando el número de períodos es muy grande, como en el caso de los problemas de control
óptimo, que exigen muchos períodos para representar apropiadamente los movimientos continuos y las
restricciones diferenciales de las variables de estado.

Desde el punto de vista económico, Ωt(xt-1,xt) representa el costo de la operación óptima en el período t
cuando las condiciones de frontera son xt-1 y xt, que será constante e igual para todos los períodos,
independiente del tiempo en el corto y en el mediano plazo, si durante el período de planificación la
topología, la tecnología y los índices de precios son constantes.

Otros casos especiales pueden considerarse cuando el vector de precios de referencia, d, es dependiente
del tiempo presentando variaciones estacionales. En este caso es posible definir familias de funciones
Ωe(xt-1,xt), donde el índice e representa la variaciones estacional de d, definida como de. En este caso solo
se requiere resolver un problema para cada período que pertenece a una “estación” e.

Desde el punto de vista algorítmico se debe modificar el procedimiento propuesto para implementar la
metodología PDDG y tomar ventaja de la estructura del problema. La modificación se realiza en la fase
forward y radica en que posteriormente a resolver el sub-problema SUt(xt-1,xt): se incluyen un corte tipo
FO en todos los sub-problemas que pertenecen a la “estación” e a la que pertenece SUt(xt-1,xt):.

3-19
Capitulo 3. Programación Dinámica Optimización Estocástica Multi-Etapa con Manejo de Riesgo

PROGRAMACIÓ
PROGRAMACIÓN DINÁ
DINÁMICA DUAL GENERALIZADA
Bt , Gt, dt - CONSTANTES
t=1 t=T

xk1 xk
SGt(xjt-1):= SGt(xjt-1):= T-1 SGt(xjt-1):=
{α T(xjt-1) min = {α T(xjt-1) min = {α T(xjt-1) min =
ctTxt + Ω t(xt-1,xt) + αt+1(xt) ctTxt + Ω t(xt-1,xt) + αt+1(xt) ctTxt + Ω t(xt-1, xt) + αt+1(xt)
| | |
Ω t(xt-1,xt) + (πtk )TAtxt ≥ Ω t(xt-1, xt) + (πtk )TAtxt ≥ Ω t(xt-1, xt) + (πtk )TAtxt ≥
θT(πtk ,δtk ) - (πtk)TEt-1xjt-1 ∀k∈IU(t,j) θ T(πtk ,δtk ) - (πtk)TEt-1xjt-1 ∀k∈IU(t,j) ψ k,jt+1 θ T(πtk ,δtk ) - (πtk)TEt-1xjt-1 ∀k∈IU(t,j)
ψ k,jt+1
xt∈R+ xt∈R+ xt∈R+
αt+1(xt) + Σk∈I1(t+1,j) ψ k,j t+1 (πt+1k )Te txt αt+1(xt) + Σk∈I1(t+1,j) ψ k,j t+1 (πt+1k )Te txt αt+1(xt) + Σk∈I1(t+1,j) ψ k,j t+1 (πt+1k )Te txt
≥ φ tj ∀j∈IJ(t) } ≥ φtj ∀j∈IJ(t) } ≥ φ tj ∀j∈IJ(t) }
πk
πk
πk xkT
xk1 xkt

SUt(xt-1,xt): =
{Ωt(xt-1,xt) =
Min dtTut |
But = bt - Tt-1xt-1 - Wtx t
Gut = gt
ut∈R+
}

3.3.2.2. Wt = I y Tt = -I

Otro caso especial puede considerarse cuando Wt es igual a la matriz identidad y Tt es igual al negativo de
la matriz identidad, entonces xt se expresa como

xt = xt-1 + bt - Btut
o sea
Δxt = xt - xt-1 = bt - Btut

Éste es un caso muy común para las ecuaciones relacionadas con niveles de almacenamiento que
determinan la dinámica de las variables de estado xt. En este caso el nivel es igual al nivel en t-1 más un
“input” externo y una combinación lineal de las variables de producción y de distribución. Bajo esta
condición, la función Ωt(xt-1,xt) puede expresarse como Ωt(Δxt) ya que el sub-problema se formula como

SUt(Δxt): = { Ωt(Δxt) = Min dTut | But = bt - Δxt , Gut = gt , ut∈R+ }

La ventaja de esta estructura es la función de costo Ωt(Δxt) solamente depende de la variación en el nivel
de las variables de estado Δxt, siendo independiente de su valor absoluto. El coordinador CX: puede
expresarse en términos de Δxt como

CX: = { Min Σt=1,T ctT (Σq=1,t Δxq) + βt Ωt(Δxt) |


Ωt(Δxt) + (πk)TΔxt ≥ θt(πk,δk) ∀t=1,T ∀k∈IT }

3.4. PROGRAMACIÓN DINÁMICA DUAL NO-LINEAL

Velásquez (2003) presenta consideraciones teóricas relacionadas con la introducción de los conceptos de
la Teoría de Descomposición Generalizada de Benders (GBD, Geoffrion 1972) para modelar bajo el
enfoque de programación dinámica problemas con función objetivo lineal y restricciones no-lineales
continuas. De esta forma se utiliza en problemas lineales TB y en problemas no-lineales la extensión GBD
de Geoffrion, esta teoría se denomina Programación Dinámica Dual No-Lineal (PDD-NL), en inglés
3-20
Capitulo 3. Programación Dinámica Optimización Estocástica Multi-Etapa con Manejo de Riesgo

Non-Linear Dual Dynamic Programming (NLDDP), y se considera un aporte original de la presente


investigación.

El problema NLDDP: se formula como

NLDDP: = { Min Σt=1,T ctT xt | Gt(xt ,xt-1)=bt t=1,T ; xt∈R }

donde z es la función objetivo, ct es un vector de costos, xt es el vector de decisiones, Gt(xt,xt-1) una


función vectorial no-lineal y bt el vector de recursos compuesto por términos independientes. La
restricción no-lineal Gt(xt,xt-1)=bt reemplaza el conjunto de restricciones lineales expresadas como
Atxt+Et-1xt-1=bt en el problema PDD-P:.

De acuerdo con el principio de optimalidad de Bellman la solución a NLDDP: puede obtenerse con base
en la cadena de problemas

PD-NLt(xt-1): = { αt-1(xt-1) = Min ctT xt + αt(xt) | Gt(xt ,xt-1)=bt t=1,T ; xt∈R }

donde αt(xt) corresponde al costo de la etapa t+1 hasta la última etapa, T, dado que el estado del sistema
es xt al final de la etapa t, donde cada etapa se asocia a un período del horizonte de planificación.

Para determinar αt(xt) se debe considerar que en cada etapa t la formulación anterior corresponde a un
tipo de problema que se puede descomponer utilizando los principios metodológicos planteados por
Benders (TB) y ampliados por Geoffrion (GBD).

Tal como se hace en PDD-P, consideremos inicialmente la aplicación de la GBD a un problema de dos
etapas. Tal como ocurre en PDD-P en el desarrollo de la NLDDP se ignoran los cortes que se refieren a la
factibilidad del problema, lo que implica que se asume que siempre hay solución factible, lo que se logra
en la formulación del problema, o con la relajación de restricciones introduciendo factores de penalización
para el caso de su violación.

Consideremos el problema

{ Min z = c1Tx1 + c2Tx2 | G1(x1 ,x0)=b1 ; G2(x2 ,x1)=b2 ; x1∈R ; x2∈R }

La aplicación de la GBD implica dividir el problema en dos subproblemas, uno para cada período, o etapa.

PD-NL2(x1): = { α1(x1) = Min c2T x2 | G2(x2 ,x1)=b2 ; x2∈R }

para la etapa 2, y

PD-NL1(x0): = { α0(x0) = Min c1T x1 + α1(x1) | G1(x1 ,x0)=b1 ; x1∈R }

para la etapa 1.

Con base en la GBD se puede definir un proceso iterativo para estimar α1(x1). Geoffrion demostró que
para problemas convexos, es decir con función objetivo convexa para minimización y conjunto de
restricciones convexas, es posible obtener α0(x0) con base en los hiperplanos que aproximan la función

3-21
Capitulo 3. Programación Dinámica Optimización Estocástica Multi-Etapa con Manejo de Riesgo

Lagrangeana del problema en el vecindario de la solución óptima que define a α1(x1) que puede ser
aproximada con base en la siguiente representación:

PD-NL2(x1): = { α1(x1) = Min a2 |


a2 ≥ c2Tx12 + (π12)T (b2 - G(x12 ,x1))
a2 ≥ c2Tx22 + (π22)T (b2 - G(x22 ,x1))
.
.
.
a2 ≥ c2Txj2 + (πj2)T (b2 - G(xj2 ,x1)) }

donde j representa la iteración, πj2 corresponde al vector de variables duales correspondientes a las
restricciones del problema que define α0(x0) en la solución obtenida en la iteración j, y xj2 corresponde al
vector de variables primales en la solución obtenida en la iteración j.

Con base en la definición de α1(x1) se modifica el problema PD-NL1(x1): para generar un problema
coordinador CX1(x1): con base en los cortes que definen α1(x1), de la siguiente manera:

CX1(x1): = { α0(x0) = Min c1T x1 + a2 |


G1(x1 ,x0)=b1
a2 ≥ c2Tx12 + (π12)T (b2 - G(x12 ,x1))
a2 ≥ c2Tx22 + (π22)T (b2 - G(x22 ,x1))
.
.
.
a2 ≥ c2 x 2 + (π 2) (b2 - G(xj2 ,x1))
T j j T

x1∈R , a2∈R }

Para dos etapas, el procedimiento comienza asumiendo un valor inicial x11 factible a G1(x1 ,x0)=b1 para
dicho valor se resuelve PD-NL2(x11): generando π12 y x12, se incluye el primer corte en el problema
coordinador CX1(x1):, es decir a2 ≥ (π12)T(b2-G(x12,x1)), y se soluciona para obtener x21. Posteriormente se
resuelve (PD-NL2(x21): generando π22 y x22, y se incluye un nuevo corte en CX1(x1): y se genera x31, y así
sucesivamente. El proceso continua hasta que se satisfaga el criterio de convergencia que se da cuando la
cota superior c1Tx1+c2Tx2 (primal) es igual a la cota inferior c1Tx1+a2 (dual).

Para generalizar la teoría NLDDP a un problema con T etapas, consideremos el problema de la última
etapa T asociado a la determinación de αT-1(xT-1) que se puede obtener resolviendo el problema

PD-NLT(xT-1): = { αT-1(xT-1) = Min cTT xT | G(xT ,xT-1)=bT , xT∈R }

Para evaluar αT-2(xT-2), es decir el costo de las dos últimas etapas, se debe resolver el siguiente problema

PD-NLT-1(xT-2): = { αT-2(xT-2) = Min cT-1T xT-1 + αT-1(xT-1) | G(xT-1 ,xT-2)=bT-1 , xT-1∈R ;


{ αT-1(xT-1) = Min cTT xT | G(xT ,xT-1)=bT , xT∈R } }

3-22
Capitulo 3. Programación Dinámica Optimización Estocástica Multi-Etapa con Manejo de Riesgo

αT-1(xT-1) se puede reemplazar por el conjunto de hiperplanos que acotan de la función Lagrangeana del
problema PD-NLT(xT-1):, lo que implica un problema coordinador

CXT-2(xT-2): = { αT-2(xT-2) = Min cT-1T xT-1 + aT-1 | G(xT-1 ,xT-2)=bT-1 , xT-1∈R ;


aT-1 ≥ cTT x1T + (π1T)T (bT - G(x1T ,xT-1)) }

donde aT-1 representa el valor de la función αT-1(xT-1). Agrupando los términos constantes, el corte puede
escribirse como

aT-1 + (π1T)TG(x1T ,xT-1) ≥ cTT x1T + (π1T)TbT

El anterior corte se puede generalizar para múltiples iteraciones (índice j) como

aT-1 + (πjT)TG(xjT ,xT-1) ≥ cTT xjT + (πjT)TbT j=1,J

donde el índice j representa una iteración en la que se ha resuelto el problema PD-NLT(xT-1):, J el número
total de iteraciones, xjT la solución óptima obtenida en la j-ésima iteración y πjT el vector de variables
duales obtenidas para las restricciones G(xT ,xT-1)=bT en la j-ésima iteración. El coordinador CXT-2(xT-2):
queda

CXT-2(xT-2): = { αT-2(xT-2) = Min cT-1T xT-1 + aT-1 | G(xT-1 ,xT-2)=bT-1 , xT-1∈R ;


aT-1 + (πjT)TG(xjT ,xT-1) ≥ cTT xjT + (πjT)TbT j=1,J }

Para la generalización del corte a incluir consideremos el problema CXT-2(xT-2): para evaluar αT-3(xT-3)

CXT-3(xT-3): = { αT-3(xT-3) = Min cT-2T xT-2 + αT-2(xT-2) | G(xT-2 ,xT-3)=bT-2 , xT-2∈R


{ αT-2(xT-2) = Min cT-1T xT-1 + aT-1 | G(xT-1 ,xT-2)=bT-1 , xT-1∈R
aT-1 + (πjT)TG(xjT ,xT-1) ≥ cTT xjT + (πjT)TbT j=1,J } }

Como en el caso anterior, reemplazando αT-2(xT-2) por cortes se tiene

aT-2 ≥ cT-1T x1T-1 + a1T-1


+ (π1T-1)T (bT-1 - G(x1T-1 ,xT-2) )
+ Σj=1,J λ T-1 [a1T-1 - cTT xjT - (πjT)T (bT - G(xjT ,x1T-1)]
j

donde λjt representa la variable dual del j-ésimo corte incluido para la estimación a1T-1 y la variable aT-2
representa el valor de la función αT-2(xT-2). Agrupando apropiadamente los términos constantes, el anterior
corte se puede generalizar para múltiples iteraciones como

aT-2 + (πkT-1)TG(xkT-1 ,xT-2) ≥ σ kT-1

donde el índice k se refiere a la k-ésima iteración del problema CXT-2(xT-2): que define αT-2(xT-2) y σ kT-1 es
un valor constante calculado como

σ kT-1 = cT-1T xkT-1 + akT-1 + (πkT-1)TbT-1 + Σj=1,J(k) λk,jT-1 [akT-1 - cTT xk,jT - (πk,jT)T (bT - G(xk,jT ,xkT-1) ]

3-23
Capitulo 3. Programación Dinámica Optimización Estocástica Multi-Etapa con Manejo de Riesgo

donde J(k) el número de cortes incluidos en CXT-2(xT-2): en la iteración k. Para identificar las variables
primales y duales se requiere un doble super-índice (k,j) que relacione las iteraciones de los problemas
PD-NLT(xT-1): y CXT-2(xT-2):.

aT-2 + (πkT-1)TG(xkT-1 ,xT-2) ≥ cT-1T xkT-1 + akT-1


+ (πkT-1)TbT-1 + Σj=1,…J(k) λk,jT-1 [akT-1 - cTT xk,jT - (πk,jT)T (bT - G(xk,jT ,xkT-1)]

El problema general para αT-3(xT-3) puede escribirse como

{ αT-3(xT-3) = Min cT-2T xT-2 + aT-2 | G(xT-2 ,xT-3)=bT-2 ; xT-2∈R


aT-2 + (πkT-1)TG(xkT-1 ,xT-2) ≥ σ kT-1 k=1,K }

donde K representa el número total de iteraciones realizadas para estimar αT-2(xT-2.).

Con base en un proceso de inducción se puede probar que el sub-problema para cualquier etapa t es

{ αt(xt) = Min ct+1T xt+1 + at+1 | G(xt+1 ,xt)=bt+1 ; xt+1∈R


at+1 + (πjt+2)TG(xjt+2 ,xt+1) ) ≥ σ jt+2 j=1,IT(t+1) }

donde el índice j representa una iteración de problema que evalúa la función αt(xjt) por medio de la
variable at, IT(t) el número de veces que se ha resuelto el problema asociado a la función αt(xt), xjt la
solución óptima obtenida en la j-ésima iteración y πjt el vector de variables duales obtenidas para las
restricciones G(xt ,xt-1)=bt en la j-ésima iteración. σjt+2 es un valor constante calculado como

cTT xjT + (πjT)TbT t=T


σjt = { ctT xjt + ajt + (πjt)Tbt + Σk=1,IJ(t,j) λk,jt σ kt+1 t = 1,T-1

donde IJ(t,j) representa el número de cortes incluidos en el problema evaluador de la función αt-1(xt-1):
cuando se resuelve el problema αt-1(xjt-1):

El problema que estima αt(xt) cumple las funciones de un coordinador del tipo Benders de acuerdo a los
procedimientos de partición de problemas que A. M. Geoffrion especificó. El problema correspondiente a
la primera etapa, es equivalente al problema original y obtiene la solución a dicho problema en un número
finito de pasos, siempre y cuando todo el problema corresponda a uno de programación convexa, esto
principalmente debido al encadenamiento de cortes que exige que el problema en cada etapa sea de
programación convexa. La estructura de los cortes es similar a la determinada en la revisión realizada por
Velásquez et al. (2002) para la PDD-P.

Finalmente, en la extensión para el caso de funciones objetivo no-lineales el problema para estimar αt(xt)
es:

{ αt(xt) = Min ft+1( xt+1) + at+1 | G(xt+1 ,xt)=bt+1 ; xt+1∈R


at+1 + (πjt+2)TG(xjt+2 ,xt+1) ) ≥ σ jt+2 j=1,IT(t+1) }

donde σ jt+2 es un valor constante calculado como

σjt = fT(xjT) + (πjT)TbT t=T


{ 3-24
Capitulo 3. Programación Dinámica Optimización Estocástica Multi-Etapa con Manejo de Riesgo

ft( xjt) + αt(xjt) + (πjt)Tbt + Σk=1,IJ(t,j) λk,jt σt+1k t = 1,T-1

3-25

También podría gustarte