Está en la página 1de 18

Modelos con variables binarias y

enteras
Indiana Jones entra al templo de la perdición y encuentra
diversos metales preciosos.

Si bien quisiera llevárselos todo, sólo


cuenta con una mochila que soporta
hasta 8 Kg de peso.

¿qué debe hacer Indiana Jones?


Metal Cantidad Disponible Valor del Total
Oro 3 Kg $4 MM
Platino 6 Kg $7.5 MM
Plata 5Kg $5 MM
Molibdeno 8Kg $6 MM
Modelo
n Beneficio del item i
X
max pi x i
Peso del item i
i=1
n
X Capacidad de
la mochila
w i xi  C
i=1
0  xi  1 8i = 1 . . . n

xi = fracción del item i a incluir en la mochila


Solución C=8
Au Pt Ag Mo
pi 4 7.5 5 6

wi 3 6 5 8
pi/wi 1.333 1.25 1.0 0.75

x1 = 1 x2 = 5/6 x3 = 0 x4 = 0

Beneficio óptimo: 10.25


Peso total:8
Mochila “continua”
Ø Solución:
§ Ordenamos los items de mayor a menor factor pi/wi
§ Incluimos en la mochila en orden, hasta copar su capacidad

Ø ¿Pero que pasa si ahora son unidades “enteras” que no


puedo dividir? (por ejemplo, “lingotes” de un metal)?
Indiana Jones entra al templo de la perdición y encuentra
lingotes de diversos metales preciosos.

Si bien quisiera llevárselos todo, sólo


cuenta con una mochila que soporta
hasta 8 Kg de peso.

¿qué debe hacer Indiana Jones?


Metal Peso del Lingote Valor del Total
Oro 3 Kg $4 MM
Platino 6 Kg $7.5 MM
Plata 5Kg $5 MM
Molibdeno 8Kg $6 MM
Modelo
n Beneficio del item i
X
Peso del item i
max pi x i
i=1
n
X Capacidad de
w i xi  C la mochila
i=1
xi 2 {0, 1} 8i = 1 . . . n
(
1 item i se incluye en la mochila
xi =
0 si no
Mochila C=8
Au Pt Ag Mo
pi 4 7.5 5 6

wi 3 6 5 8
pi/wi 1.333 1.25 1.0 0.75

X1=1 X2=0 X3=1 X4=0

Beneficio óptimo: 9
Peso total:8
Problema entero versus Continuo
Ø En programación entera,
la solución puede ser muy
distinta a si “relajamos” la
integralidad y después
redondeamos.

xLP=(0.6, 2.1) xIP=(1,2)


Problema
Ø Un problema entero y su relajación lineal pueden ser muy
distintos.

xLP=(3.8, 7.2) xIP=(4,0)


Redondeo
Ø Supongamos que resolvemos la relajación lineal de un
problema entero: min 7x + y
3x + 2y  5
xLP = (0,2.5) 5x + 8y 20
zLP = 2.5 20x + y  80
Ø ¿cómo redondeamos?
§ ¿(0,2)? ¿(0,3)?

Ø ¿Factible? ¿Óptimo?
Variantes
Ø Múltiples copias de cada ítem (varios lingotes)
§ Opción 1: Crear una nueva variable por cada ítem
§ Opción 2: xi pueden ser enteros positivos: xi 2 N

Ø Múltiples restricciones de capacidad


§ Por ejemplo, mochila tiene peso y volumen máximo

Ø Requisitos entre los ítemes:


Modelo
n Beneficio del item i
X
Peso del item i
max pi x i
i=1
n
X Capacidad de
w i xi  C la mochila
i=1
xi 2 {0, 1} 8i = 1 . . . n
(
1 item i se incluye en la mochila
xi =
0 si no
Restricciones adicionales
Ø Si lleva el ítem i, tiene que llevar el j.
xi  xj
Ø Puede llevar el ítem i o el j, pero no los dos.
xi + xj  1
Ø Si lleva el ítem i, tiene que llevar también el j o k (pero no
ambos)
xi  xj + xk
xi + xj + xk  2
Ø Para poder llevar el ítem i, tiene que llevar el j y el k.
2xi  xj + xk
Más variaciones
Ø Nos ofrecen comprar una segunda mochila por de
capacidad D por un costo de $K:
n
X n
X
max pi x i + pi x0i Ky
i=1 i=1
Xn
xi = 1 : item i en mochila original
w i xi  C
x0i = 1 : item i en mochila adicional
i=1
y = 1 : comprar mochila adicional n
X
wi x0i  Dy
Restricción Alternativa i=1
n
X
wi x0i D xi + x0i  18i
i=1 xi , x0i 2 {0, 1}8i, y 2 {0, 1}
x0i  y 8i
Mochilas y grupos
id Produc. Cant. pi wi
Max. Variables:
1 Helado 5 10 5 x1 2 {0, 1, 2, 3, 4, 5}
2 Pie de 10 14 2 x2 2 {0, 1, . . . 10}
Manzana
..
3 Manzana 4 15 4 .
4 Naranja 8 32 4 x8 2 {0, 1}
5 Plátano 3 28 3 Ø No puede llevar helado y pie
6 Jalea 2 40 10
de manzana simultáneamente
y1 2 {0, 1} : Llevar helado
7 Yogurt 8 60 10
y2 2 {0, 1} : Llevar pie
8 Torta 1 100 30
Mochilas y grupos
id Produc. Cant. pi wi Ø No puede llevar helado y pie
Max.
de manzana simultáneamente
x1 Helado 5 10 5
y1 2 {0, 1} : Llevar helado
x2 Pie de 10 14 2
Manzana y2 2 {0, 1} : Llevar pie
x3 Manzana 4 15 4

x4 Naranja 8 32 4 y 1 + y2  1
x5 Plátano 3 28 3
x 1  5 y1
x6 Jalea 2 40 10
x2  10 y2
x7 Yogurt 8 60 10

x8 Torta 1 100 30
Restricciones “big M”
Valor suficientemente
grande (cota de x)

x  yM
Variable continua o entera Variable binaria
(pero no binaria)

Ø Si y = 0, entonces x debe valer 0


Ø Si y = 1, entonces x puede tomar cualquier valor
entre 0 y M

También podría gustarte