Uploaded by Adrian

ProgramaciónDinámica

advertisement
Programación
Dinámica y Problema de la
Mochila
Hilda García Hernández
Tania Abigail Martínez Chávez
Adrián Sánchez García
Programación Dinámica
 Es
un método para
resolver problemas
complejos al
quebrarlos en subproblemas mucho
mas sencillos de una
manera recursiva.
Cuando se aplica?
Una enorme cantidad de
problemas.
 Problemas cuyas
soluciones parciales se
solapan.
 Grupos de problemas de
muy distinta
complejidad.

Problema de la Mochila

El problema de la
mochila es un
problema que consiste
en escoger un
conjunto de artículos
para llenar una
mochila de modo de
que se cumplan ciertas
restricciones.
Se tienen n objetos fraccionables y una mochila.
El objeto i tiene peso pi y una fracción xi
(0≤xi≤1) del objeto i produce un beneficio bixi.
El objetivo es llenar la mochila, de capacidad C,
de manera que se maximice el beneficio.
maximizar
sujeto a
 bi xi
1i n
 pi xi  C
1i n
con 0  xi  1, bi  0, pi  0, 1  i  n
Algoritmo Recursivo
M[0,W]
M[i, 0]
M[i, W]
M[i, W]
=0
=0
= m[i-1,W] si Wi>W
= max(M[i-1,W, M[i-1,W-Wi] + Wi)
si Wi<=W
Ejemplo
PRESUPUESTO TOTAL: $50,000
Solución


Maximizar: 15x1 + 8x2 + 15x3 + 17x4 +7x5
Sujeto a: 50000x1 + 25200x2 + 36000x3 +
47000x4 + 12000x5 < 50000 x1,x2,x3,x4,x5 Є
{0,1}

P =NMaximize[{15x1+8x2+15x3+17x4+7x5,
50000x1+25200x2+36000x3+47000x4+12000x
5≤50000, x1≥0, x2≥0, x3≥0, x4≥0, x5≥0,
x1≤1, x2≤1, x3≤1, x4≤1, x5≤1, x1Integers,
x2Integers, x3Integers, x4Integers,
x5Integers},{x1,x2,x3,x4,x5}]

{22., {x1->0, x2->0, x3->1, x4->0, x5->1}
Solución
JUGADOR SUELDO
APORTACION
RAZON (A/S)*1000
1
$50,000
15
.30000
2
$25,200
8
.31746
3
$36,000
15
.41666
4
$47,000
17
.36170
5
$12,000
7
.58333
$36,000 + $12,000 = $48,000
GRACIAS
Download