programación dinámica -...

40
Programación Dinámica

Upload: trancong

Post on 16-Apr-2018

258 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Programación Dinámica - humberto-r-alvarez-a.webs.comhumberto-r-alvarez-a.webs.com/IO-2/1.Programacion dinamica.pdf · Ejemplo: asignación de brigadas médicas El WORLD HEALTH

Programación Dinámica

Page 2: Programación Dinámica - humberto-r-alvarez-a.webs.comhumberto-r-alvarez-a.webs.com/IO-2/1.Programacion dinamica.pdf · Ejemplo: asignación de brigadas médicas El WORLD HEALTH

Introducción a la PD El matemático Richard que se utiliza para optimizar problemas

complejos que pueden ser discretizados y secuencializados.Bellman

inventó la PD en 1953

Es una técnica que permite determinar de manera eficiente las

decisiones que optimizan el comportamiento de un sistema que

evoluciona a lo largo de una serie de etapas.

Trata de encontrar la secuencia de decisiones que optimiza el

comportamiento de un proceso múltiples etapas.

Determina la solución óptima de un problema de n variables

descomponiéndola en n etapas, con cada etapa incluyendo un

subproblema de una sola variable.

La ventaja en el aspecto de los cálculos es que optimizar una sola

variable, en vez de subproblemas de n variables.

Page 3: Programación Dinámica - humberto-r-alvarez-a.webs.comhumberto-r-alvarez-a.webs.com/IO-2/1.Programacion dinamica.pdf · Ejemplo: asignación de brigadas médicas El WORLD HEALTH

Principio de optimalidad de Bellman La principal contribución de la PD es el principio de

optimalidad, un marco de referencia para

descomponer el problema en etapas.

Dada una secuencia óptima de decisiones, toda

subsecuencia de ella es, a su vez, óptima».

Los cálculos en la PD se hacen recursivamente, en el

sentido de la solución óptima de un subproblema se

utiliza como una entrada para el siguiente subproblema.

Para el momento en que se resuelve el último

subproblema, se tiene la solución óptima para todo el

problema

Page 4: Programación Dinámica - humberto-r-alvarez-a.webs.comhumberto-r-alvarez-a.webs.com/IO-2/1.Programacion dinamica.pdf · Ejemplo: asignación de brigadas médicas El WORLD HEALTH

Características de los problemas de PD

El problema se puede dividir en etapas; cada etapa requiere una

decisión.

Cada etapa tiene un numero de estados asociados con ella.

La decisión tomada en cualquier etapa indica como se transforma

en la siguiente etapa.

Dado el estado actual, la decisión optima para cada una de las

etapas restantes no debe depender de estados previamente

alcanzados o de decisiones previamente tomadas.

Si los estados del problema se han clasificado en uno de T etapas,

debe haber una formula recursiva que relacione el costo o

recompensa durante las etapas t, t+1,…, T con el costo o

recompensa de las etapas t +1, t +2,…, T

Relación recursiva: función que relaciona las etapas Hacia atrás: define la política óptima de n conociendo n-1

Hacia adelante: define la política óptima de n+1 conociendo n

Page 5: Programación Dinámica - humberto-r-alvarez-a.webs.comhumberto-r-alvarez-a.webs.com/IO-2/1.Programacion dinamica.pdf · Ejemplo: asignación de brigadas médicas El WORLD HEALTH

Elementos de un problema de PD

Page 6: Programación Dinámica - humberto-r-alvarez-a.webs.comhumberto-r-alvarez-a.webs.com/IO-2/1.Programacion dinamica.pdf · Ejemplo: asignación de brigadas médicas El WORLD HEALTH
Page 7: Programación Dinámica - humberto-r-alvarez-a.webs.comhumberto-r-alvarez-a.webs.com/IO-2/1.Programacion dinamica.pdf · Ejemplo: asignación de brigadas médicas El WORLD HEALTH
Page 8: Programación Dinámica - humberto-r-alvarez-a.webs.comhumberto-r-alvarez-a.webs.com/IO-2/1.Programacion dinamica.pdf · Ejemplo: asignación de brigadas médicas El WORLD HEALTH
Page 9: Programación Dinámica - humberto-r-alvarez-a.webs.comhumberto-r-alvarez-a.webs.com/IO-2/1.Programacion dinamica.pdf · Ejemplo: asignación de brigadas médicas El WORLD HEALTH
Page 10: Programación Dinámica - humberto-r-alvarez-a.webs.comhumberto-r-alvarez-a.webs.com/IO-2/1.Programacion dinamica.pdf · Ejemplo: asignación de brigadas médicas El WORLD HEALTH
Page 11: Programación Dinámica - humberto-r-alvarez-a.webs.comhumberto-r-alvarez-a.webs.com/IO-2/1.Programacion dinamica.pdf · Ejemplo: asignación de brigadas médicas El WORLD HEALTH
Page 12: Programación Dinámica - humberto-r-alvarez-a.webs.comhumberto-r-alvarez-a.webs.com/IO-2/1.Programacion dinamica.pdf · Ejemplo: asignación de brigadas médicas El WORLD HEALTH
Page 13: Programación Dinámica - humberto-r-alvarez-a.webs.comhumberto-r-alvarez-a.webs.com/IO-2/1.Programacion dinamica.pdf · Ejemplo: asignación de brigadas médicas El WORLD HEALTH
Page 14: Programación Dinámica - humberto-r-alvarez-a.webs.comhumberto-r-alvarez-a.webs.com/IO-2/1.Programacion dinamica.pdf · Ejemplo: asignación de brigadas médicas El WORLD HEALTH

Sean

Sn : el estado del sistema en la etapa n

Xn : la variable de decisión en la etapa n

fn = (Sn, Xn ) una función de recursividad que define una

política óptima en la etapa n

Page 15: Programación Dinámica - humberto-r-alvarez-a.webs.comhumberto-r-alvarez-a.webs.com/IO-2/1.Programacion dinamica.pdf · Ejemplo: asignación de brigadas médicas El WORLD HEALTH

Ejemplo 1: La diligencia (stagecoach)

Es un ejemplo para ilustrar la PD, ya que hay métodos más

eficientes para hacerlo.

Un viajero quiere ir de un punto A, a un punto J a un menor

costo, siendo los costos como se describen en las tablas:

De \ A B C D

A 2 4 3

De\ A E F G

B 7 4 6

C 3 2 4

D 4 1 5

De\ A H I

E 1 4

F 6 3

G 3 3

De\ A J

H 3

I 4

Page 16: Programación Dinámica - humberto-r-alvarez-a.webs.comhumberto-r-alvarez-a.webs.com/IO-2/1.Programacion dinamica.pdf · Ejemplo: asignación de brigadas médicas El WORLD HEALTH

Sistema de caminos y costos

x1 x3 x4 x2 A

Page 17: Programación Dinámica - humberto-r-alvarez-a.webs.comhumberto-r-alvarez-a.webs.com/IO-2/1.Programacion dinamica.pdf · Ejemplo: asignación de brigadas médicas El WORLD HEALTH

Formulación del problema Sean xn (n = 1, 2, 3…p) las variables de decisión que representan el

destino inmediato de la etapa n, tal que la ruta seleccionada sea A x1

x2 … xp, donde xp será el destino J.

Sea n(s, xn) el costo total de la mejor política global para las etapas

restantes, dado que el viajero se encuentra en el estado s listo para iniciar

la etapa n y elige xn como destino inmediato.

Dados s y n, sea xn* (no necesariamente único) que minimiza n(s, xn) y

sea n* el valor mínimo de n(s, xn), entonces:

n* = min n*(s, xn) = n(s, xn*), xn

Donde n(s, xn) = costo inmediato(etapa n) + mínimo costo futuro (etapas n

+ 1 en adelante), tal que

n(s, xn) = cs, xn + n+1(s, xn*)

+

Page 18: Programación Dinámica - humberto-r-alvarez-a.webs.comhumberto-r-alvarez-a.webs.com/IO-2/1.Programacion dinamica.pdf · Ejemplo: asignación de brigadas médicas El WORLD HEALTH

Solución El objetivo es encontrar 1*(A) y la ruta correspondiente. A través de la

PD, se encuentra sucesivamente 4*(s), 3*(s), 2*(s) y finalmente

1*(s). Esto se conoce como recursividad hacia atrás.

Cuando el viajero sólo tiene una etapa por recorrer (n = 4), su ruta de

ahí en adelante está determinada por su estado actual (H o I) y su

destino final x4 = J, de manera que para esta última jornada el viaje es

s J,

Cómo 4*(s) = 4(s, J) = cs,J + 5(s, x5*)

Donde 5(s, x5*) = 0 (el viaje termina en J)

Page 19: Programación Dinámica - humberto-r-alvarez-a.webs.comhumberto-r-alvarez-a.webs.com/IO-2/1.Programacion dinamica.pdf · Ejemplo: asignación de brigadas médicas El WORLD HEALTH

n = 4

s 4*(s) x4

n = 3

s \ x3 3(s, x3) = cs,x + 4(s, x4*)

3*(s) x3*

Page 20: Programación Dinámica - humberto-r-alvarez-a.webs.comhumberto-r-alvarez-a.webs.com/IO-2/1.Programacion dinamica.pdf · Ejemplo: asignación de brigadas médicas El WORLD HEALTH

n = 4

n = 3

s 4*(s) x4

H 3 J

I 4 J

s \ x3 3(s, x3) = cs,x + 4(s, x4*)

3*(s) x3* H I

E 1 + 3 4 + 4 4 H

F 6 + 3 3 + 4 7 I

G 3 + 3 3 + 4 6 H

Page 21: Programación Dinámica - humberto-r-alvarez-a.webs.comhumberto-r-alvarez-a.webs.com/IO-2/1.Programacion dinamica.pdf · Ejemplo: asignación de brigadas médicas El WORLD HEALTH

n =

n =

s \ x2 (s, x2) = cs,x + 3(s, x3*)

2*(s) x2*

s \ x1 (s, x1) = cs,x + 2(s, x2*)

1*(s) x1*

Page 22: Programación Dinámica - humberto-r-alvarez-a.webs.comhumberto-r-alvarez-a.webs.com/IO-2/1.Programacion dinamica.pdf · Ejemplo: asignación de brigadas médicas El WORLD HEALTH

n = 2

n = 1

s \ x2 (s, x2) = cs,x + 3(s, x3*)

2*(s) x2* E F G

B 7 + 4 4 + 7 6 + 6 11 E o F

C 3 + 4 2 + 7 4 + 6 7 E

D 4 + 4 1 + 7 5 + 6 8 E o F

s \ x1 (s, x1) = cs,x + 2(s, x2*)

1*(s) x1* B C D

A 2 + 11 4 + 7 3 + 8 11 C o D

Ruta óptima:

A C E H I = 11

A D E H J = 11

A D F I J = 11

Page 23: Programación Dinámica - humberto-r-alvarez-a.webs.comhumberto-r-alvarez-a.webs.com/IO-2/1.Programacion dinamica.pdf · Ejemplo: asignación de brigadas médicas El WORLD HEALTH

Solución con WinQSB

Page 24: Programación Dinámica - humberto-r-alvarez-a.webs.comhumberto-r-alvarez-a.webs.com/IO-2/1.Programacion dinamica.pdf · Ejemplo: asignación de brigadas médicas El WORLD HEALTH

Ejemplo: asignación de brigadas médicas El WORLD HEALTH COUNCIL, se dedica a mejorar la atención

médica en los países subdesarrollados del mundo. Dispone de 5

brigadas médicas para asignarlas a tres de estos países.

El consejo necesita determinar cuántas brigadas debe asignar a cada

país (si lo hace) para maximizar la medida de la eficiencia de las

brigadas, la cual será el incremento en el promedio de vida esperado

en añose , multiplicado por la población de cada país.

Page 25: Programación Dinámica - humberto-r-alvarez-a.webs.comhumberto-r-alvarez-a.webs.com/IO-2/1.Programacion dinamica.pdf · Ejemplo: asignación de brigadas médicas El WORLD HEALTH

Formulación

Etapas: Países a los cuales se les debe asignar las

brigadas. ( n=1- País1 ); ( n=2 –País 2 ); ( n=3 -País 3).

Variable de decisión: Xn : Número de brigadas

asignadas al país n.

Estado: ¿ Qué es lo que cambia de una etapa a otra?

Sn : Número de brigadas médicas disponibles para

asignarse a los países restantes

S1 = 5, X1: 0,.., 5

S2 = S1 - X1: 0,…, 5, dependiendo de X1

S3 = S2 - X2: 0,…, 5 dependiendo de X2

Page 26: Programación Dinámica - humberto-r-alvarez-a.webs.comhumberto-r-alvarez-a.webs.com/IO-2/1.Programacion dinamica.pdf · Ejemplo: asignación de brigadas médicas El WORLD HEALTH

Función recursiva:

Sea Pi (Xi) la medida del desempeño por

asignar Xi brigadas médicas al país i,

entonces

Max Z = i=1,3 Pi (Xi )

s.a i=1,3 Xi = 5

0 ≤ Xi ≤ 5 para Xi enteros

Page 27: Programación Dinámica - humberto-r-alvarez-a.webs.comhumberto-r-alvarez-a.webs.com/IO-2/1.Programacion dinamica.pdf · Ejemplo: asignación de brigadas médicas El WORLD HEALTH

De manera general

fn(Sn, Xn) = cs,x xn + fn+1* (Xn)

Para el ejemplo

fn(Sn, Xn) = Pn (Xn) + fn+1* (Sn - Xn)

Donde la etapa n corresponde al país n

En el caso de que se asignen todas las

brigadas, el estado final (cero brigadas

para asignar) se alcanza al terminar la

etapa 3,entonces f4* = 0

Page 28: Programación Dinámica - humberto-r-alvarez-a.webs.comhumberto-r-alvarez-a.webs.com/IO-2/1.Programacion dinamica.pdf · Ejemplo: asignación de brigadas médicas El WORLD HEALTH

Utilizando una relación recursiva hacia atrás

N = 3

S3 3(S3, X3) = P3(X3) + 4* 3(S3, X3) X3

Page 29: Programación Dinámica - humberto-r-alvarez-a.webs.comhumberto-r-alvarez-a.webs.com/IO-2/1.Programacion dinamica.pdf · Ejemplo: asignación de brigadas médicas El WORLD HEALTH

N = 2

X2

S2

2(S2, X2) = P2 (X2) + 3*(S2 -X2)

f(S2) X2 0 1 2 3 4 5

Page 30: Programación Dinámica - humberto-r-alvarez-a.webs.comhumberto-r-alvarez-a.webs.com/IO-2/1.Programacion dinamica.pdf · Ejemplo: asignación de brigadas médicas El WORLD HEALTH

N = 1

X2

S2

2(S1, X1) = P1 (X1) + 2*(S1 –X1)

S2 X2 0 1 2 3 4 5

Page 31: Programación Dinámica - humberto-r-alvarez-a.webs.comhumberto-r-alvarez-a.webs.com/IO-2/1.Programacion dinamica.pdf · Ejemplo: asignación de brigadas médicas El WORLD HEALTH
Page 32: Programación Dinámica - humberto-r-alvarez-a.webs.comhumberto-r-alvarez-a.webs.com/IO-2/1.Programacion dinamica.pdf · Ejemplo: asignación de brigadas médicas El WORLD HEALTH
Page 33: Programación Dinámica - humberto-r-alvarez-a.webs.comhumberto-r-alvarez-a.webs.com/IO-2/1.Programacion dinamica.pdf · Ejemplo: asignación de brigadas médicas El WORLD HEALTH

Problema de la mochila 0/1

• Problema: Se tienen n objetos, cada uno con un peso (wi) y un

beneficio (vi), y una mochila en la que se pueden meter objetos,

con una capacidad de peso máximo M. El objetivo es maximizar

el beneficio de los objetos transportados, donde cada objeto se

puede coger entero (xi=1) o nada (xi=0).

• Es un problema NP-Completo

• Sujeto a:

Page 34: Programación Dinámica - humberto-r-alvarez-a.webs.comhumberto-r-alvarez-a.webs.com/IO-2/1.Programacion dinamica.pdf · Ejemplo: asignación de brigadas médicas El WORLD HEALTH

Problema de la mochila 0/1

Definición de la ecuación recurrente: • Sea Mochila (i, m) el problema de la mochila, considerando sólo los i

primeros objetos (de los n originales) con una capacidad de peso m.

Se puede suponer que la siguiente expresión devuelve el valor de

beneficio total: xa·va, para a = 1, j

• Se puede definir el problema de forma recurrente, en función de que se

use o no el objeto i.

• Si no se usa el objeto i: Mochila (i, m) = Mochila (i - 1, m)

• Si se usa: Mochila (i, m) = vi + Mochila (i - 1, m - wi)

• Valor óptimo:

Mochila (i, m) = max (Mochila (i-1, m), vi + Mochila (i-1, m - wi))

Page 35: Programación Dinámica - humberto-r-alvarez-a.webs.comhumberto-r-alvarez-a.webs.com/IO-2/1.Programacion dinamica.pdf · Ejemplo: asignación de brigadas médicas El WORLD HEALTH

Problema de la mochila 0/1

Casos base:

• Si (i<0) o (m<0) entonces no hay solución: Mochila (i, m) =

-

• En otro caso, si (i=0) ó (m=0) la solución es no incluir

ningún objeto: Mochila (i, m) = 0

Definición de las tablas:

• La solución del problema original será Mochila (n, M).

• Por lo tanto necesitamos una tabla: V: array [0..n, 0..M] de

enteros

• V[i, j] = Beneficio máximo usando los i primeros objetos y

peso j.

Page 36: Programación Dinámica - humberto-r-alvarez-a.webs.comhumberto-r-alvarez-a.webs.com/IO-2/1.Programacion dinamica.pdf · Ejemplo: asignación de brigadas médicas El WORLD HEALTH

Problema de la mochila 0/1

Se puede tener una tabla auxiliar de 0/1 para almacenar las decisiones parciales y recomponer la solución, o

A partir de la tabla V obtener la solución (x1, x2, ..., xn): partir de la posición V[n, M] y analizar las decisiones que se tomaron para cada objeto i.

Si (V[i, j] = V[i-1, j]) entonces la solución no usa el objeto i, xi= 0.

Si (V[i, j] = V[i-1, j-wi] + vi) entonces sí se usa el objeto i, xi= 1.

Si (V[i, j] = V[i-1, j-wi] + vi) y (V[i, j] = V[i-1, j]) entonces se puede usar el objeto i o no (existe más de una solución óptima).

Acabar cuando se llegue a un i=0 ó j=0.

Page 37: Programación Dinámica - humberto-r-alvarez-a.webs.comhumberto-r-alvarez-a.webs.com/IO-2/1.Programacion dinamica.pdf · Ejemplo: asignación de brigadas médicas El WORLD HEALTH

Problema de la mochila 0/1

Forma de rellenar las tablas:

• Inicializar los casos base.

• Para todo i, desde 1 hasta n, y j desde 1 hasta M, aplicar la

ecuación de recurrencia:

V[i, j] = max (V[i - 1, j] , V[i - 1, j - wi] + vi)

• Si j es negativo, entonces V[i, j] = -, y el máximo será el

otro término.

• Ejemplo. n= 3, M= 6, w= (2, 3, 4), v= (1, 2, 5), hay uno de cada uno de los elementos

Page 38: Programación Dinámica - humberto-r-alvarez-a.webs.comhumberto-r-alvarez-a.webs.com/IO-2/1.Programacion dinamica.pdf · Ejemplo: asignación de brigadas médicas El WORLD HEALTH

Solución

w, v

i \ j 0 1 2 3 4 5 6

0

1

2

3

i w j

0 0 0

1 2 1

2 3 2

3 4 5

i n w v

1

2

3

Page 39: Programación Dinámica - humberto-r-alvarez-a.webs.comhumberto-r-alvarez-a.webs.com/IO-2/1.Programacion dinamica.pdf · Ejemplo: asignación de brigadas médicas El WORLD HEALTH

Solución

w, v

i \ j 0 1 2 3 4 5 6

0 0, 0 0, 0 0, 0 0, 0 0, 0 0, 0 0, 0

1 0, 0 0, 0 2, 1 2, 1 2, 1 2, 1 2, 1

2 0, 0 0, 0 2, 1 3, 2 3, 2 5, 3 5, 3

3 0. 0 0. 0 2, 1 3, 2 4, 5 4, 5 6, 6

i w j

0 0 0

1 2 1

2 3 2

3 4 5

i n w v

1 1 2 1

2 0 2 1

3 1 6 6

Page 40: Programación Dinámica - humberto-r-alvarez-a.webs.comhumberto-r-alvarez-a.webs.com/IO-2/1.Programacion dinamica.pdf · Ejemplo: asignación de brigadas médicas El WORLD HEALTH

WinQSB