Programación Dinámica. Es un procedimiento matemático diseñado principalmente para mejorar la...

53
Programación Dinámica

Transcript of Programación Dinámica. Es un procedimiento matemático diseñado principalmente para mejorar la...

Page 1: Programación Dinámica. Es un procedimiento matemático diseñado principalmente para mejorar la eficiencia de cálculo de problemas de programación matemática.

Programación Dinámica

Page 2: Programación Dinámica. Es un procedimiento matemático diseñado principalmente para mejorar la eficiencia de cálculo de problemas de programación matemática.

Programación Dinámica

Es un procedimiento matemático diseñado principalmente para mejorar la eficiencia de cálculo de problemas de programación matemática seleccionados, descomponiéndolos en subproblemas de menor tamaño y por consiguiente mas fáciles de calcular. La PD normalmente resuelve el problema en etapas mediante el criterio del Principio de Optimalidad. Los cálculos en las diferentes etapas se enlazan a través de cálculos recursivos de manera que se genere una solución óptima factible a todo el problema

Page 3: Programación Dinámica. Es un procedimiento matemático diseñado principalmente para mejorar la eficiencia de cálculo de problemas de programación matemática.

Programación Dinámica

Principio de OptimalidadUna política óptima solo puede estar formada por subpolíticas óptimasEstablece el marco de referencia unificador para los n sub problemas o n etapas de los problemas de programación dinámica.

Page 4: Programación Dinámica. Es un procedimiento matemático diseñado principalmente para mejorar la eficiencia de cálculo de problemas de programación matemática.

Metodologías de Planteamiento

A medida que se estudie cada aplicación de la programación dinámica, hay que definir correctamente 3 elementos básicos:

•Etapas: es el mecanismo con el que construimos el problema •Alternativas en cada etapa: •Estado de cada etapa: es cualquier etapa de la información necesaria para tomar la decisión correcta en la etapa actual

Page 5: Programación Dinámica. Es un procedimiento matemático diseñado principalmente para mejorar la eficiencia de cálculo de problemas de programación matemática.

Programación Dinámica Determinista

Técnica que se aplica para encontrar la solución óptima de un problema con n variables descomponiéndolo en n etapas, siendo cada etapa un sub-problema de cada variable.

Page 6: Programación Dinámica. Es un procedimiento matemático diseñado principalmente para mejorar la eficiencia de cálculo de problemas de programación matemática.

Programación Dinámica Determinista

Modelo de Mochila (Carga-Volumen)

Consiste en abordar un problema de carga de artículos que poseen diferentes niveles de utilidad, en medios de carga con capacidad limitada. El objetivo es seleccionar las cargas más valiosas a transportar.

Page 7: Programación Dinámica. Es un procedimiento matemático diseñado principalmente para mejorar la eficiencia de cálculo de problemas de programación matemática.

Se tienen N=3 artículos que se desean trasportar en la mochila que posee una capacidad de C=15Kg

Siendo p = peso del articulob = beneficio o ganancia

Ejemplo

Modelo de Mochila

Page 8: Programación Dinámica. Es un procedimiento matemático diseñado principalmente para mejorar la eficiencia de cálculo de problemas de programación matemática.

Algoritmos voraces

SoluciónM={0,1,1} = $64

Solución OptimaM={1,1,0} =$78

Modelo de Mochila

Page 9: Programación Dinámica. Es un procedimiento matemático diseñado principalmente para mejorar la eficiencia de cálculo de problemas de programación matemática.

Ecuación Recurrente

Diseño y Dimensiones de la tabla

N+1

C+1

j

i

Si (j – p) < 0 : el mayor será siempre el otro valor

Modelo de Mochila

Page 10: Programación Dinámica. Es un procedimiento matemático diseñado principalmente para mejorar la eficiencia de cálculo de problemas de programación matemática.

0 1 2 3 4 5 6 7 8 9 10

11

12

13

14

15

0

1

2

3

15+1

3+1 i

j

Page 11: Programación Dinámica. Es un procedimiento matemático diseñado principalmente para mejorar la eficiencia de cálculo de problemas de programación matemática.

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

1 0

2 0

3 0

Si (j – p) < 0 : el mayor será siempre el otro valor

j

i

Page 12: Programación Dinámica. Es un procedimiento matemático diseñado principalmente para mejorar la eficiencia de cálculo de problemas de programación matemática.

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0 0 0

2 0

3 0

Si (j – p) < 0 : el mayor será siempre el otro valor

ji

Page 13: Programación Dinámica. Es un procedimiento matemático diseñado principalmente para mejorar la eficiencia de cálculo de problemas de programación matemática.

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0 0 0 38 38 38 38 38 38 38

2 0 0 0 0 0 0 40 40 40 40 40 40 40 40 40 78

3 0 0 0 0 0 28 40 40 40 40 40 64 64 64 64 78

Si (j – p) < 0 : el mayor será siempre el otro valor

ji

Page 14: Programación Dinámica. Es un procedimiento matemático diseñado principalmente para mejorar la eficiencia de cálculo de problemas de programación matemática.

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0 0 0 38 38 38 38 38 38 38

2 0 0 0 0 0 0 40 40 40 40 40 40 40 40 40 78

3 0 0 0 0 0 28 40 40 40 40 40 64 64 64 64 78

ji

Si => M[ i , j ] = M[i-1 , j] => El articulo no se incluirá en la mochila

De lo contrario se agregara a la mochila y se restara el peso a

capacidad de la mochila

i=i-1

Page 15: Programación Dinámica. Es un procedimiento matemático diseñado principalmente para mejorar la eficiencia de cálculo de problemas de programación matemática.

ji

Si => M[ i , j ] = M[i-1 , j] => El articulo no se incluirá en la mochila

De lo contrario se agregara a la mochila y se restara el peso a capacidad de la mochila

i=i+1

Page 16: Programación Dinámica. Es un procedimiento matemático diseñado principalmente para mejorar la eficiencia de cálculo de problemas de programación matemática.

ji

Si => M[ i , j ] = M[i-1 , j] => El articulo no se incluirá en la mochila

De lo contrario se agregara a la mochila y se restara el peso a capacidad de la mochila

i=i+1

Page 17: Programación Dinámica. Es un procedimiento matemático diseñado principalmente para mejorar la eficiencia de cálculo de problemas de programación matemática.

Solución OptimaM={1,1,0} = $78

Page 18: Programación Dinámica. Es un procedimiento matemático diseñado principalmente para mejorar la eficiencia de cálculo de problemas de programación matemática.

Programación Dinámica Determinista

Aplicaciones 1. Transporte Marítimo: cargar artículos en un barco con capacidad de peso limitada.

2. Equipaje de Emergencia: un piloto de jet debe determinar los artículos más valiosos (de emergencia) a llevar a bordo del jet.

3. Problema de la Mochila: un soldado (o un excursionista) debe decidir cuáles son los artículos más valiosos para llevar en su mochila.

Page 19: Programación Dinámica. Es un procedimiento matemático diseñado principalmente para mejorar la eficiencia de cálculo de problemas de programación matemática.

Programación Dinámica Determinista

Modelo del Número de Empleados

En algunos proyectos de construcción, las contrataciones y los despidos se ejercen para mantener un número de empleados que satisfaga las necesidades del proyecto. Debido a que las actividades tanto de contratación como de despido incurren en costos adicionales, ¿cómo se debe mantener el número de empleados a todo lo largo de la vida del proyecto? La aplicación de este método nos ayuda a responder dicha pregunta.

Page 20: Programación Dinámica. Es un procedimiento matemático diseñado principalmente para mejorar la eficiencia de cálculo de problemas de programación matemática.

Planteamiento del problema

Supóngase que el proyecto se ejecutará durante el lapso de n semanas y que el número mínimo de empleados requeridos en la semana i es bi trabajadores. Bajo condiciones ideales, es deseable que el numero de empleados en la semana i fuera exactamente bi, sin embargo, dependiente de los costos, puede ser más económico permitir que el número de empleados varié mas arriba de los requeridos mínimos.

Page 21: Programación Dinámica. Es un procedimiento matemático diseñado principalmente para mejorar la eficiencia de cálculo de problemas de programación matemática.

Un contratista de una construcción calcula que el número de trabajadores necesarios durante las próximas 5 semanas es de: 5, 7, 8, 4 y 6 trabajadores, respectivamente.El exceso de trabajadores que se mantienen en la fuerza laboral costará $300 por trabajador y por semana.Las nuevas contrataciones en cualquier semana incurrirán en un costo fijo de $400 más $200 por trabajador y por semana. Se desea tener el menor costo total en la planilla de la fuerza laboral.¿Cómo se debe mantener el número de empleados a lo largo de proyecto?

Problema

Page 22: Programación Dinámica. Es un procedimiento matemático diseñado principalmente para mejorar la eficiencia de cálculo de problemas de programación matemática.

Resumen del Problema

• Etapas: las 5 semanas (i).

i=1, 2, 3, 4, 5.

• Alternativas: número real de trabajadores empleados

(xi) .

• Estados: número trabajadores en la semana

inmediamente anterior (xi-1).

Datos importantes• 5 semanas

Page 23: Programación Dinámica. Es un procedimiento matemático diseñado principalmente para mejorar la eficiencia de cálculo de problemas de programación matemática.

Definición de Variables•i= semanas.•xi= número real de trabajadores empleados por semana.•xi-1= número de trabajadores

de la semana anterior.•bi= número de trabajadores

requeridos por semana.

b1=5, b2=7, b3=8, b4=4, b5=6. •c1= costo exceso.•c2= costo fijo + variable.•n= etapa actual(n=1,2,3..n) .

Datos importantes• 5 semanas• 5, 7, 8, 4, 6 num trab.• Costo de exceso de trabajadores: $300.• Costo de contratar o despedir trabajadores: fijo: $400, variable: $200.

Page 24: Programación Dinámica. Es un procedimiento matemático diseñado principalmente para mejorar la eficiencia de cálculo de problemas de programación matemática.

Función Recursiva

Page 25: Programación Dinámica. Es un procedimiento matemático diseñado principalmente para mejorar la eficiencia de cálculo de problemas de programación matemática.

Fórmulas

• c1(xi-bi) = 300(xi-bi) para xi > bi

• c2(xi-xi-1) = 400+200(xi-xi-1) para xi > xi-1

con i= 1,2,3,4,5Función Recursiva :

fi(xi-1)=min{(c1(xi-bi)+ c2(xi-xi-1)+fi+1(xi)}*Importante:fn+1(xn)=0 (los calculos empiezan en la etapa n con xn=

bn y terminan en la etapa 1).

Page 26: Programación Dinámica. Es un procedimiento matemático diseñado principalmente para mejorar la eficiencia de cálculo de problemas de programación matemática.

Etapa 5

n=5, b5=x5=6

Xi-1 (c1(xi-bi)+ c2(xi-xi-1))(300(x5-b5)+ 400+200(x5-x4))

Solución óptima

X4 X5=6 f5* (f5(x4))

x5*

4 300(6-6)+400+200(6-4)=800 800 6

5 300(6-6)+400+200(6-5)=600 600 6

6 300(6-6)+400+200(6-6)=0* 0* 6*

b1= 5b2= 7b3= 8b4= 4b5= 6

Page 27: Programación Dinámica. Es un procedimiento matemático diseñado principalmente para mejorar la eficiencia de cálculo de problemas de programación matemática.

Etapa 4

n=4 b4=4

b1= 5b2= 7b3= 8b4= 4 b5= 6 =

Xi-1 (c1(xi-bi)+ c2(xi-xi-1) + fi+1(xi)})(300(x4-4)+ 400+200(x4-x3) + f5(x4))

Solución óptima

X3 X4=4 X4=5 X4=6 f4* of4(x3)

x4*

8 300(4-4)+ 400+ 200(4-8)+800 = 0-400+800 solución 0+0+800= 800

300(5-4)+400+ 200(5-8)+600= 300(1)-200+600=Solución 300+0+600= 900

300(6-4)+400+ 200(6-8) +0= 300(2)+0+0= 600

600 6

Datos importantes:f5*= f5(x4)4=8005=6006=0

Page 28: Programación Dinámica. Es un procedimiento matemático diseñado principalmente para mejorar la eficiencia de cálculo de problemas de programación matemática.

Etapa 3

n=3 b3=8

b1= 5b2= 7b3= 8b4= 4 ≠ 6b5= 6 =

Datos importantes:f4*= f4(x3)6=600

Xi-1 (c1(xi-bi)+ c2(xi-xi-1) + fi+1(xi)})(300(x3-8)+ 400+200(x3-x2) + f4(x3))

Solución óptima

X2 X3=8 f3* of3(x2)

x3*

7 300(8-8)+400+200(8-7)+600= 1200 1200 8

8 300(8-8)+400+200(8-8)+600=600 600 8

Page 29: Programación Dinámica. Es un procedimiento matemático diseñado principalmente para mejorar la eficiencia de cálculo de problemas de programación matemática.

Etapa 2 Datos importantes:f3*= f3(x2)7=12008=600

b1= 5b2= 7b3= 8 =b4= 4 ≠ 6b5= 6 =

Xi-1 (c1(xi-bi)+ c2(xi-xi-1) + fi+1(xi)})(300(x2-7)+ 400+200(x2-x1) + f3(x2)

Solución óptima

X1 X2=7 X2=8 f2* of2(x1)

x2*

5 300(7-7)+400+ 200(7-5) + 1200= 2000

300(8-7)+400+ 200(8-5) + 600= 1900

1900 8

6 300(7-7)+400+ 200(7-6) + 1200= 1800

300(8-7)+400+ 200(8-6) + 600= 1700

1700 8

7 300(7-7)+400+ 200(7-7) + 1200= 1200

300(8-7)+400+ 200(8-7) + 600= 1500

1200 7

8 300(7-7)+400+ 200(7-8) + 1200= 0+0+1200=1200

300(8-7)+400+ 200(8-8) + 600= 900

900 8

n= 2 b2=7

Page 30: Programación Dinámica. Es un procedimiento matemático diseñado principalmente para mejorar la eficiencia de cálculo de problemas de programación matemática.

Etapa 1

n=1 b1=5

b1= 5 =b2= 7 ≠ 8b3= 8 =b4= 4 ≠ 6b5= 6 =

Xi-1 (c1(xi-bi)+ c2(xi-xi-1) + fi+1(xi)})(300(x1-5)+ 400+200(x1-x0) + f4(x3))

Solución óptima

X0 X1=5 X1=6 X1=7 X1=8 f1* of1(x0)

x1*

0 300(5-5) +400+ 200(5-0)+ 1900= 3300*

300(6-5) +400+ 200(6-0)+ 1700= 3600

300(7-5) +400+ 200(7-0)+ 1200= 3600

300(8-5) +400+ 200(8-0)+ 900= 3800

3300* 5*

Datos importantes:f3*= f3(x2)5=19006=17007=12008=900

Page 31: Programación Dinámica. Es un procedimiento matemático diseñado principalmente para mejorar la eficiencia de cálculo de problemas de programación matemática.

Solución Factible:X1=5,x2=8,x3=8,x4=6,x5=6

Semana Núm. de trabajadores mínimos(bi)

Núm. real de trabajadores (xi)

Decisión

1 5 5 Contratar 5 trabajadores

2 7 8 Contratar 3 trabajadores

3 8 8 Ningún cambio

4 4 6 Despedir 2 trabajadores

5 6 6 Ningún cambio

Page 32: Programación Dinámica. Es un procedimiento matemático diseñado principalmente para mejorar la eficiencia de cálculo de problemas de programación matemática.

Programación Dinámica Determinista

Modelo de Remplazo de Equipo

Mientras más tiempo este en servicio una máquina, más elevado será su costo de Mantenimiento y su producción será menor.

Cuando una máquina llega a cierta edad, puede resultar más económico remplazarla. Por lo consiguiente el problema se reduce a determinar la antigüedad más económica de la máquina.

Page 33: Programación Dinámica. Es un procedimiento matemático diseñado principalmente para mejorar la eficiencia de cálculo de problemas de programación matemática.

Método Remplazo de Equipo

Cuando una máquina llega a cierta edad, se elevan sus costos operacionales y de mantención, por lo que puede ser más económico reemplazarla. Luego, hay que determinar la edad de vida útil económica de la máquina. Se supone el problema de reemplazo de equipo a lo largo de n años. Al principio de cada año se decide si se quiere prolongar el servicio del equipo un año más, o reemplazarlo por uno nuevo.

Page 34: Programación Dinámica. Es un procedimiento matemático diseñado principalmente para mejorar la eficiencia de cálculo de problemas de programación matemática.

• Se definen:

• r(t) : beneficio anual del equipo de edad t años• c(t) : costo de operación del equipo de edad t años• s(t) : valor de rescate del equipo que ha estado en servicio durante t

años • I : costo de adquisición de un equipo nuevo en cualquier.

• Se pueden tomar 2 decisiones cada año: Beneficios• Conservar la maquina r(t)-c(t)• Reemplazar la maquina s(t)-l

Page 35: Programación Dinámica. Es un procedimiento matemático diseñado principalmente para mejorar la eficiencia de cálculo de problemas de programación matemática.
Page 36: Programación Dinámica. Es un procedimiento matemático diseñado principalmente para mejorar la eficiencia de cálculo de problemas de programación matemática.

Ejemplo reemplazo de equipoSe necesita determinar la política de reemplazo óptima para una máquina que en la actualidad tiene 3 años, durante los próximos 4 años (n = 4), es decir, hasta principios del año 5La compañía requiere que una máquina de 6 años se reemplace. El costo de una máquina nueva es de $100.000.La siguiente tabla proporciona los datos del problema:

Edad t(año) Utilidad r(t) Costo Operación c(t) Rescate s(t)

0 20000 200 -

1 19000 600 80000

2 18500 1200 60000

3 17200 1500 50000

4 15500 1700 30000

5 14000 1800 10000

6 12200 2200 5000

Page 37: Programación Dinámica. Es un procedimiento matemático diseñado principalmente para mejorar la eficiencia de cálculo de problemas de programación matemática.

• La determinación de los estados es un tanto difícil, se recomienda hacer una red edad de la máquina v/s año de la decisión, para distinguir los estados posibles y los valores factibles para la edad de la máquina en cada etapa.

Principio

Edad de la maquina

Año decisión

Page 38: Programación Dinámica. Es un procedimiento matemático diseñado principalmente para mejorar la eficiencia de cálculo de problemas de programación matemática.

• Solución en forma tabular

• La red muestra que al principio del año 2 , las edades posibles de las maquinas son 1 y 4 años. Para principios del año 3, las edades posibles son 1,2 y 5 años y para principios del año 4, las edades posibles son 1,2,3 y 6 años.

• La solución de la red consiste en encontrar la ruta mas larga desde el principio del año 1 hasta finales del año 4.

• Etapa 4

K R Solución Optima

t r(t)+s(t+1)-c(t) r(0)+s(t)+s(1)-c(0)-I f4(t) Decisión

1 19000+60000-600=78400 20000+80000+80000-200-100000=79800 79800 R

2 18500+50000-1200=67300 20000+60000+80000-200-100000=59800 67300 K

3 17200+30000-1500=45700 20000+50000+80000-200-100000=49800 49800 R

6 Se debe reemplazar 20000+5000+80000-200-100000=4800 4800 R

Page 39: Programación Dinámica. Es un procedimiento matemático diseñado principalmente para mejorar la eficiencia de cálculo de problemas de programación matemática.

• Etapa 3

• Etapa 2

K R Solución Optima

t r(t)-c(t)+f4(t+1) r(0)+s(t)-c(0)-I+f4(1) f3(t) Decisión

1 19000-600+67300=85700 20000+80000-200-100000+79800=79600 85700 K

2 18500-1200+49800=67100 20000+60000-200-100000+79800=59600 67100 K

5 14000-1800+4800=17000 20000+10000-200-100000+79800=19600 19600 R

K R Solución Optima

t r(t)-c(t)+f3(t+1) r(0)+s(t)-c(0)-I+f3(1) f2(t) Decisión

1 19000-600+67100=85500 20000+80000-200-100000+85700=85500 85500 K o R

4 15500-1700+19600=33400 20000+30000-200-100000+85700=35500 35500 R

Page 40: Programación Dinámica. Es un procedimiento matemático diseñado principalmente para mejorar la eficiencia de cálculo de problemas de programación matemática.

• Etapa 1

K R Solución Optima

t r(t)-c(t)+f2(t+1) r(0)+s(t)-c(0)-I+f2(1) f1(t) Decisión

3 17200-1500+35500=51200 20000+50000-200-100000+85500=55300 55300 R

Page 41: Programación Dinámica. Es un procedimiento matemático diseñado principalmente para mejorar la eficiencia de cálculo de problemas de programación matemática.

• Al principio del año 1 la decisión optima dada t=3, es remplazar la maquina. Por tanto, la maquina nueva tendrá un año al principio del año 2 y t= 1 al principio del año 2 requiere ya sea conservar o reemplazar la maquina. Si se reemplaza, la maquina nueva tendrá 1 año al principio del año 3; de lo contrario, la maquina que se conservó tendrá 2 años. El proceso se continua de esa manera hasta cubrir el año 4.

Año 1 Año 2 Año 3 Año 4

R

K

R

K

K

R

K

(t=3)

(t=1)

(t=2)

(t=1)

(t=3)

(t=2)

Fin

Las políticas alternativas optimas empezando en el año 1 son (R,K,K,R) y (R,R,K,K). El costo total es de 55 300 dólares.

Page 42: Programación Dinámica. Es un procedimiento matemático diseñado principalmente para mejorar la eficiencia de cálculo de problemas de programación matemática.

Programación Dinámica Probabilística

La programación dinámica probabilística (PDP) es una técnica matemática útil para la toma de decisiones interrelacionadas, se presenta cuando el estado en la siguiente etapa no está determinado por completo por el estado y la política de decisión de la etapa actual. En su lugar existe una distribución de probabilidad para determinar cuál será el siguiente estado.

Page 43: Programación Dinámica. Es un procedimiento matemático diseñado principalmente para mejorar la eficiencia de cálculo de problemas de programación matemática.

Programación Dinámica Probabilística

Modelo probabilístico de Inversión

Los modelos de análisis de inversiones probabilísticos son modelos matemáticos que intentan simular como se comportarán las principales variables en el caso de realizarse la inversión.

Un modelo de análisis de inversiones nunca podrá predecir con exactitud cómo se comportarán las variables en el futuro, pero son necesarios para contar con información objetiva y para encontrar puntos débiles que pueden hacer peligrar el proyecto de inversión.

Page 44: Programación Dinámica. Es un procedimiento matemático diseñado principalmente para mejorar la eficiencia de cálculo de problemas de programación matemática.

Ejemplo

Una corporación recibe propuestas de sus tres plantas respecto a la posible expansión de las instalaciones. La corporación tiene un presupuesto de 5 millones de dólares para asignarlo a las tres plantas. Cada planta expone sus propuestas indicando el costo total (C) y el ingreso total (R) para cada propuesta.

El objetivo es maximizar el ingreso total resultante.

Page 45: Programación Dinámica. Es un procedimiento matemático diseñado principalmente para mejorar la eficiencia de cálculo de problemas de programación matemática.

Las plantas definen las etapas. Las variables de decisión 1 x , 2 x y 3 x se definen de la siguiente manera:•1 x = monto de capital asignado a la planta 1.•2 x = monto de capital asignado a las plantas 1 y 2.•3 x = monto de capital asignado a las plantas 1, 2 y 3.

Page 46: Programación Dinámica. Es un procedimiento matemático diseñado principalmente para mejorar la eficiencia de cálculo de problemas de programación matemática.

Rn(Pn) = ingreso de la propuesta Pn en la etapa n.

ƒn(Xn) = rendimiento óptimo de las etapas 1,

2, . . . , n dado el estado Xn .

Pj = propuesta óptima asociada a ƒn(Xn)

Por lo tanto se tiene

Page 47: Programación Dinámica. Es un procedimiento matemático diseñado principalmente para mejorar la eficiencia de cálculo de problemas de programación matemática.

Factibilidad

Page 48: Programación Dinámica. Es un procedimiento matemático diseñado principalmente para mejorar la eficiencia de cálculo de problemas de programación matemática.

Ahora se define la parte faltante de la ecuación recursiva y que corresponde a las etapas 2, 3, . . .

Pero como a ƒn(Xn) es función de Xn exclusivamente, el lado derecho también debe serlo, esto se consigue teniendo en cuenta que

Page 49: Programación Dinámica. Es un procedimiento matemático diseñado principalmente para mejorar la eficiencia de cálculo de problemas de programación matemática.

donde Cn(Pn) es el costo de la propuesta Pn en la etapa n. Esta ecuación ilustra la forma en que opera el procedimiento recursivo: de un dado Xn seasigna una parte (Cn(Pn)) para cubrir la propuesta Pn de la etapa n y la cantidad restante ( x n-1 = x n - Cn(Pn) (6) se destina a cubrir las propuestasde las etapas 1,2, . . . ,n-1. Se tiene, entonces:

Page 50: Programación Dinámica. Es un procedimiento matemático diseñado principalmente para mejorar la eficiencia de cálculo de problemas de programación matemática.
Page 51: Programación Dinámica. Es un procedimiento matemático diseñado principalmente para mejorar la eficiencia de cálculo de problemas de programación matemática.

La tabla para la última etapa posee solamente una fila, pues al no haber etapas restantes no deben considerarse todas las posibilidades de inversión sino, únicamente, el caso 3 x =5.

Page 52: Programación Dinámica. Es un procedimiento matemático diseñado principalmente para mejorar la eficiencia de cálculo de problemas de programación matemática.

Solución

Cualquier de estas tres triplas da 17 millones como el máximo a obtener de ganancia de la inversión:

•(2,4, 1)•(3, 2, 2) •(2, 3, 2)

Page 53: Programación Dinámica. Es un procedimiento matemático diseñado principalmente para mejorar la eficiencia de cálculo de problemas de programación matemática.

Muchas Gracias