Está en la página 1de 42

Programación dinámica

Investigación de Operaciones I
Francy Castellanos Oviedo
Dirección Ingeniería Industrial
Programación Dinámica PD
DEFINICIÓN DE PROGRAMACIÓN DINÁMICA:

Técnica de programación matemática que proporciona un procedimiento


sistemático para determinar la combinación óptima de una serie de
decisiones interrelacionadas.
Programación Dinámica PD
CONCEPTUALIZACIÓN DE PROGRAMACIÓN DINÁMICA:
1. En contraste con la programación lineal, no se cuenta con una
formulación matemática estándar para “el” problema de Programación
dinámica.
2. Se trata de un enfoque de tipo general para la solución de problemas y
las ecuaciones específicas que se usan se deben desarrollar para que
representen cada situación individual.
3. Se necesita un cierto grado de creatividad y un buen conocimiento de
la estructura general de de los problemas de Programación Dinámica
para reconocer cuándo y cómo se puede resolver un problema por medio
de estos procedimientos.
Tipos de PD
1. Programación dinámica determinística. El estado en la siguiente etapa
está completamente determinado por el estado y la política de decisión de
la etapa actual.

2. Programación dinámica probabilística: El estado en la siguiente etapa


no está completamente determinado por el estado y la política de decisión
de la etapa actual, existiendo en su lugar una distribución de probabilidad
para determinar cuál será el siguiente estado.
Programación dinámica determinística
Programación dinámica (PD) determinística
Esta técnica se aplica sobre problemas que presentan las siguientes
características:

• Subproblemas optimales: La solución óptima a un problema puede


ser definida en función de soluciones óptimas a subproblemas de
tamaño menor.
• Solapamiento entre subproblemas: Al plantear la solución recursiva
del problema, un mismo problema se resuelve más de una vez.
Programación dinámica determinística
Enfoque ascendente (bottom-up):
• Primero se calculan las soluciones óptimas para problemas de tamaño
pequeño.
• Luego, utilizando dichas soluciones, encuentra soluciones a
problemas de mayor tamaño.

Clave: Memorización
Almacenar las soluciones de los subproblemas en alguna estructura de
datos para reutilizarlas posteriormente. De esa forma, se consigue un
algoritmo más eficiente que la fuerza bruta, que resuelve el mismo
subproblema una y otra vez.
Programación dinámica determinística
Memorización
Para evitar calcular lo mismo varias veces:
• Cuando se calcula una solución, ésta se almacena.
• Antes de realizar una llamada recursiva para un subproblema Q, se
comprueba si la solución ha sido obtenida previamente:
o Si no ha sido obtenida, se hace la llamada recursiva y, antes de devolver la solución,
ésta se almacena.
o Si ya ha sido previamente calculada, se recupera la solución directamente (no hace falta
calcularla).
• Usualmente, se utiliza una matriz que se rellena conforme las
soluciones a los subproblemas son calculados (espacio vs. tiempo).
Programación dinámica determinística
Uso de la programación dinámica:

1. Caracterizar la estructura de una solución óptima.


2. Definir de forma recursiva la solución óptima.
3. Calcular la solución óptima de forma ascendente.
4. Construir la solución óptima a partir de los datos almacenados al
obtener soluciones parciales.
Principio de optimalidad de Bellman
Para poder emplear programación dinámica, una secuencia óptima debe
cumplir la condición de que cada una de sus subsecuencias también sea
òptima:
Dado un problema P con n elementos, si la secuencia óptima es
e1e2...ek...en entonces:
• e1e2...ek es solución al problema P considerando los k primeros
elementos.
• ek+1...en es solución al problema P considerando los elementos desde
k+1 hasta n.
Principio de optimalidad de Bellman
En otras palabras:
La solución óptima de cualquier instancia no trivial de un problema es una
combinación de las soluciones óptimas de sus subproblemas.
• Se busca la solución óptima a un problema como un proceso de
decisión “multietápico”.
• Se toma una decisión en cada paso, pero ésta depende de las
soluciones a los subproblemas que lo componen.
El principio de optimalidad se verifica si toda solución óptima a un
problema está compuesta por soluciones óptimas de sus subproblemas.
El principio de optimalidad no nos dice que, si tenemos las soluciones óptimas de los
subproblemas, entonces podamos combinarlas para obtener la solución óptima del problema
original…
Definición de problema
Para aplicar programación dinámica:

1. Se comprueba que se cumple el principio de optimalidad de Bellman,


para lo que hay que encontrar la “estructura” de la solución.
2. Se define recursivamente la solución óptima del problema (en función
de los valores de las soluciones para subproblemas de menor
tamaño).
Cálculo de la solución óptima
3. Se calcula el valor de la solución óptima utilizando un enfoque
ascendente:
• Se determina el conjunto de subproblemas que hay que resolver (el
tamaño de la tabla).
• Se identifican los subproblemas con una solución trivial (casos base).
• Se van calculando los valores de soluciones más complejas a partir de
los valores previamente calculados.
4. Se determina la solución óptima a partir de los datos almacenados en
la tabla.
Características

Etapas •El problema se puede dividir en etapas que requieren una política de decisión
en cada una de ellas.

Estados •Cada etapa tiene cierto número de estados asociados con su inicio.
asociados
Política de •El efecto de la política de decisión en cada etapa es transformar el estado
decisión actual en un estado asociado con el inicio de la siguiente etapa.

Diseño de •El procedimiento de solución está diseñado para encontrar una política óptima
para el problema completo, es decir, una receta para la política de decisión
solución óptima en cada etapa para cada uno de los estados posibles.
Características
Principio de • Dado el estado actual, una política óptima para las etapas restantes es independiente de
la política adoptada en etapas anteriores.
optimalidad • La decisión inmediata óptima depende sólo del estado actual y no de cómo se llegó ahí.

Inicio de solución • El procedimiento de solución se inicia al encontrar una política óptima para la última
etapa.

Relación • Se dispone de una relación recursiva que identifica la política óptima para la etapa n,

recursiva dada la política óptima para la etapa n + 1.

• Cuando se use esta relación recursiva, el procedimiento de solución comienza al final y se


Retroceso mueve hacia atrás etapa por etapa - encontrando cada vez la política óptima para esa
etapa – hasta que se encuentra la política óptima desde la etapa inicial.
Naturaleza recursiva de los cálculos de PD
La idea principal de la programación dinámica (PD) es descomponer el
problema en subproblemas (más manejables). Los cálculos se realizan
entonces recursivamente donde la solución óptima de un subproblema se
utiliza como dato de entrada al siguiente problema. La solución para todo
el problema está disponible cuando se soluciona el último subproblema.

La forma en que se realizan los cálculos recursivos depende de cómo se


descomponga el problema original. En particular, normalmente los
subproblemas están vinculados por restricciones comunes. La factibilidad
de estas restricciones comunes se mantiene en todas las iteraciones.
Ejemplo – Problema de la ruta más corta
Supongamos que deseamos seleccionar la ruta por carretera más corta
entre dos ciudades. La siguiente red proporciona las posibles rutas entre
la ciudad de inicio en el nodo 1 y la ciudad destino en el nodo 7. Las rutas
pasan por ciudades intermedias designadas por los nodos 2 a 6.
Ejemplo
Podemos resolver este problema enumerando todas las rutas entre los
nodos 1 y 7 (hay cinco rutas). Sin embargo, la enumeración exhaustiva es
computacionalmente insoluble en redes grandes.
Para resolver el problema por PD, primero lo descomponemos en etapas:
La idea general para determinar la ruta
más corta es calcular las distancias
(acumulativas) más cortas a todos los
nodos terminales de una etapa, y luego
utilizarlas como datos de entrada a la
etapa inmediatamente subsiguiente.
Partiendo del nodo 1, la etapa 1 llega a
tres nodos terminales (2, 3 y 4) y sus
cálculos son simples.
Ejemplo
Resumen de la etapa 1.

• Distancia más corta del nodo 1 al nodo


2 es 7 millas (desde el nodo 1)
• Distancia más corta del nodo 1 al nodo
3 es 8 millas (desde el nodo 1)
• Distancia más corta del nodo 1 al nodo
4 es 5 millas (desde el nodo 1)
Ejemplo
Resumen de la etapa 2
Luego, la etapa 2 tiene dos
nodos terminales, 5 y 6. La red
muestra que se puede llegar al
nodo 5 desde los nodos 2, 3 y
4 por las rutas (2,5), (3,5) y
(4,5). Esta información, junto
con los resultados resumidos
(distancias más cortas) en la
etapa 1, determina la distancia
(acumulativa) más corta al
nodo 5 como:
Ejemplo

Resumen de la etapa 3
La distancia más corta desde el nodo 1 al nodo 7 = 21millas (desde el nodo 5)
El resumen de la etapa 3 muestra que la distancia más corta entre los nodos 1 y 7 es de 21 millas. Para determinar la
ruta óptima comenzamos con el resumen de la etapa 3, donde el nodo 7 se conecta al nodo 5; en el resumen de la
etapa 2 el nodo 4 se conecta al nodo 5, y en el resumen de la etapa 1 el nodo 4 se conecta al nodo 1. Por lo tanto, la
ruta más corta es 1à4à5à7.
El ejemplo revela las propiedades básicas de los cálculos de PD.
1. Los cálculos en cada etapa son una función de las rutas factibles de dicha etapa, y sólo de esa etapa.
2. Una etapa actual está conectada a la etapa inmediatamente precedente sólo (sin tener en cuenta las etapas anteriores) con
base en el resumen de distancias más cortas de la etapa inmediatamente precedente.
Ejemplo – Ecuación recursiva
Esta sección muestra cómo pueden expresarse matemáticamente los
cálculos recursivos en el ejemplo anterior. Sea fi(xi) la distancia más corta
al nodo xi en la etapa i, y defina d(xi-1, xi) como la distancia del nodo xi-1 al
nodo xi. La ecuación recursiva de PD se define como:
Ejemplo – Principio de optimalidad
Las decisiones futuras para todas las etapas futuras constituyen una
política óptima independientemente de la política adoptada en todas las
etapas precedentes. La implementación del principio de optimalidad es
evidente en los cálculos del ejemplo. En la etapa 3, los cálculos
recursivos en el nodo 7 utilizan la distancia más corta a los nodos 5 y 6
(es decir, los estados de la etapa 2) sin preocuparse sobre cómo se llega
a los nodos 5 y 6 desde el nodo de inicio 1. El principio de optimalidad no
aborda los detalles de cómo se optimiza un subproblema. La razón es la
naturaleza genérica del subproblema. Puede ser lineal o no lineal, y la
cantidad de alternativas puede ser finita o infinita.Todo lo que hace el
principio de optimalidad es “descomponer” el problema original en
subproblemas más manejables computacionalmente.
Recursividad hacia delante (avance) y hacia atrás (retroceso)

El ejemplo anterior utiliza la recursividad hacia adelante en la cual los


cálculos proceden de la etapa 1 a la etapa 3. El mismo ejemplo puede
resolverse por medio de recursividad hacia atrás, comenzando en la
etapa 3 y terminando en la etapa 1.

La recursividad hacia adelante y hacia atrás da la misma solución óptima. Aún


cuando el procedimiento hacia adelante parece más lógico, la mayor parte de la
literatura de PD utiliza la recursividad hacia atrás. La razón de esta preferencia
es que, por lo general, la recursividad hacia atrás puede ser más eficiente
desde el punto de vista computacional.
Ejemplo
La ecuación recursiva inversa para el ejemplo anterior es:
Ejemplo
Ejemplo

La solución óptima de la etapa 2 se lee como sigue: Para las ciudades 2 y 4, la ruta más corta pasa por
las ciudad 5; y para la ciudad 3, la ruta más corta pasa por la ciudad 6.
Ejemplo
Modelo de la mochila / equipo de vuelo / carga
de contenedor
Modelo de la mochila
El modelo de la mochila tiene que ver clásicamente con el hecho de
determinar los artículos más valiosos que un combatiente carga en una
mochila. El problema representa un modelo de asignación de recursos
general en el cual se utilizan recursos limitados por varias actividades
económicas.

El objetivo es maximizar el rendimiento total.

La ecuación recursiva (hacia atrás) se desarrolla para el problema


general de asignar n artículos a una mochila con capacidad de peso W.
Modelo de la mochila
Sea mi la cantidad de unidades del artículo i en la mochila, y defina ri y wi
como el ingreso unitario y el peso del artículo i. El problema general se
representa como:

Sujeto a:
Elementos del modelo
Los tres elementos del modelo son:
Ecuación recursiva
Ejemplo
Un barco de 4 toneladas puede cargarse con uno o más de tres artículos. La
siguiente tabla da el peso unitario, wi, en toneladas y el ingreso unitario en miles de
dólares, ri, para el artículo i. El objetivo es determinar la cantidad de unidades de
cada artículo que maximizará el rendimiento total.

Articulo i wi ri
1 2 31
2 3 47
3 1 14

Como el peso unitario wi y el peso máximo W son enteros, el estado xi asume sólo
valores enteros.
Ejemplo
Etapa 3. El peso exacto a ser asignado a la etapa 3 (artículo 3) no se
conoce con anticipación pero puede suponer uno de los valores 0, 1,…, y
4 (porque W=4 toneladas y w3=1 tonelada).

Un valor de m3 es factible sólo si w3m3 ≤x3. Por lo tanto se excluyen todos


los valores no factibles (con w3m3 > x3). El ingreso para el artículo 3 es
14m3. En consecuencia, la ecuación recursiva para la etapa 3 es:
Ejemplo
La siguiente tabla resume los cálculos para la etapa 3.
Ejemplo
Ejemplo

m1
Ejemplo
Ejercicios de aplicación
Un excursionista debe empacar tres artículos: alimento, botiquín de
primeros auxilios y ropa. La mochila tiene una capacidad de 3 pies3. Cada
unidad de alimento ocupa 1 pies3, el botiquín de primeros auxilios ocupa
1/4 pies3, y cada pieza de ropa ocupa aproximadamente 1/2 pies3. El
excursionista asigna pesos de prioridad de 3, 4 y 5 al alimento, el
botiquín, y la ropa, respectivamente, lo que significa que la ropa es el más
valioso de los tres artículos.

Por experiencia, el excursionista debe llevar al menos una unidad de


cada artículo y no más de dos botiquines. ¿Cuántas unidades de cada
artículo debe llevar el excursionista?
Ejercicios de aplicación
El alguacil Bassam busca reelegirse en el condado de Washington. Los fondos
disponibles para la campaña son aproximadamente de $10,000. Aunque al comité
de reelección le gustaría lanzar la campaña en los cinco distritos del condado, los
fondos limitados lo dictan de otra manera. La tabla siguiente incluye listas de la
población votante y el monto de los fondos necesarios para lanzar una campaña
efectiva en cada distrito. Un distrito puede recibir todos sus fondos asignados, o
ninguno. ¿Cómo deberán asignarse los fondos?

También podría gustarte