Vous êtes sur la page 1sur 28

Fundamentos de Investigación de Operaciones

Investigación de Operaciones 1
Programación Lineal Entera

11 de septiembre de 2003

1. Introducción
Un LP donde se requiere que todas las variables sean enteras se denomina un problema de
programación lineal entera pura. Por ejemplo:

máx z = 3x1 + 2x2


s.t. x1 + x2 ≤ 6 (1.1)
x1 , x2 ∈ Z +
Un LP donde sólo algunas variables deben ser enteras se denomina problema de programación
lineal entera mixta. Por ejemplo:

máx z = 3x1 + 2x2


s.t. x1 + x2 ≤ 6
(1.2)
x2 ≥ 0
x1 ∈ Z +
Un LP donde todas la variables deben ser igual a 1 ó 0 se denomina problema de programación
lineal binaria. Por ejemplo:

máx z = x1 − x2
s.t. x1 + 2x2 ≤ 2
(1.3)
2x1 − x2 ≤ 1
x1 , x2 = {0, 1}
El concepto de relajación de un problema de programación lineal entera (IP) juega un rol funda-
mental en la resolución de este tipo de problemas.

Definición 1 El LP obtenido eliminando todas las condiciones de valores enteros o binarios para las
variables se denomina Relajación del LP.

Por ejemplo, la relajación de (1.1) quedarı́a:

máx z = 3x1 + 2x2


s.t. x1 + x2 ≤ 6 (1.4)
x1 , x2 ≥ 0
De la misma forma, la relajación de (1.3) queda:

1
Segundo Semestre 2003 Programación Lineal Entera

máx z = x1 − x2
s.t. x1 + 2x2 ≤ 2
(1.5)
2x1 − x2 ≤ 1
x1 , x2 ≥ 0
Cualquier IP puede ser visto como el LP relajado más algunas restricciones adicionales. Por lo
tanto, el LP relajado es un problema menos restringido, o más relajado, que el IP. En consecuencia
la región factible para cualquier IP debe estar contenida en la región factible del correspondiente LP
relajado. Luego, si el problema es de maximización:

El valor óptimo de z del LP relajado ≥ El valor óptimo de z del IP


Consideremos el siguiente ejemplo:

máx z = 21x1 + 11x2


s.t. 7x1 + 4x2 ≤ 13 (1.6)
x1 , x2 ∈ Z +
La región factible del problema relajado se presenta en la figura 1.1. En este caso, la región factible
del IP lo conforma el siguiente conjunto de puntos: S = {(0, 0), (0, 1), (0, 2), (0, 3), (1, 0), (1, 1)}. En
este caso, mediante la evaluación y comparación de los valores de z en los seis puntos factibles es
posible determinar el óptimo. Luego, la solución óptima de (1.6) es z = 33, x 1 = 0, x2 = 3.

x2

3,0 = punto en la región factible

2,5
7x 1

2,0
+4
x2

1,5
=
13

1,0

0,5

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

Figura 1.1: Región Factible del ejemplo 1.6

Si la región factible de la relajación de un IP puro está acotada, la región factible del IP consistirá en
un número finito de puntos. En teorı́a, mediante la enumeración y la evaluación de z en cada uno de
los puntos es posible encontrar el mejor valor de z. El problema es que si la región factible contiene
miles de puntos factibles, la enumeración completa no es viable desde un punto de vista computacional.

Una segunda opción para resolver el IP serı́a mediante la aproximación de la solución obtenida de
la relajación. Por ejemplo si se resolviera la relajación de (1.6) se obtendrı́a: x 1 = 13
7 , x2 = 0. Redon-
deando esta solución se obtendrı́a: x1 = 2, x2 = 0 como posible solución óptima. Sin embargo este
punto está fuera de la región factible por lo que no puede ser óptimo. Otro candidato a óptimo se

2
Segundo Semestre 2003 Programación Lineal Entera

puede obtener redondeando el valor obtenido de la relajación hacia abajo: x 1 = 1, x2 = 0, valor que
tampoco corresponde al óptimo real del problema.

Como se ve en este ejemplo, no existen garantı́as de que la aproximación de soluciones del prob-
lema relajado corresponda a la solución óptima real del IP. Por lo tanto, no es un enfoque válido
para resolver el problema. Como se estudió previamente, el algoritmo Simplex resuelve un LP a partir
de una solución básica factible mejorándola iteración a iteración. Luego, en la mayorı́a de los casos,
Simplex examina sólo una porción de todas las soluciones basales factibles antes de llegar al óptimo.
En forma análoga, se podrı́a esperar que existan algoritmos capaces de resolver un IP iterando de una
solución factible entera a otra. Lamentablemente, no existen o no son conocidos tales algoritmos. Por
lo tanto, como se verá en detalle más adelante, la resolución de un IP es mucho más compleja que la
resolución de su relajación.

2. Formulación de IP
Los problema de programación lineal entera permiten ampliar el espectro de problemas factibles
de plantear como modelos de programación lineal. A continuación se verán algunos ejemplos.

2.1. Problema de Asignación de Capital


Ejemplo 1 Una empresa está considerando cuatro posibles inversiones. La opción 1 tiene asociado
un valor actualizado neto (VAN) de U S$16000, la opción 2 tiene un VAN de U S$22000, la inversión 3
representa un VAN de U S$12000 y la inversión 4 posee un VAN de U S$8000. Cada inversión requiere
un cierto capital inicial: U S$5000, U S$7000, U S$4000 y U S$3000, para las inversiones 1, 2, 3 y 4
respectivamente. Actualmente la empresa dispone $14000 para invertir. Formule un IP que permita
determinar la forma de invertir el dinero de forma de maximizar las utilidades.

Las opciones son invertir o no en cada una de las posibilidades. Por lo tanto, conviene emplear
variables de tipo binaria para indicar si se escoge cada opción:
½
1 se invierte en la opción j
xj = ∀ j = 1...4 (2.1)
0 en caso contrario
La función objetivo para el problema queda (en miles):

máx z = 16x1 + 22x2 + 12x3 + 8x4 (2.2)


En la expresión (2.2) se verifica que si la opción j se realiza, entonces xj = 1 y se suma el VAN
respectivo al valor de la función objetivo. En caso contrario, la variable x j = 0 y no se contabiliza ese
aporte. Se sigue la misma lógica para construir las restricciones.

Como existe un capital limitado de U S$14000 para invertir, se debe satisfacer (en miles):

5x1 + 7x2 + 4x3 + 3x4 ≤ 14 (2.3)


Como no existen otras restricciones, el modelo completo para el problema queda:

máx z = 16x1 + 22x2 + 12x3 + 8x4


s.t. 5x1 + 7x2 + 4x3 + 3x4 ≤ 14 (2.4)
xj = {0, 1} ∀ j
Supongamos ahora que se agregan las siguientes restricciones al problema original:

3
Segundo Semestre 2003 Programación Lineal Entera

1. La empresa puede invertir en a lo más dos opciones.

2. Si la empresa invierte en la opción 2, también debe invertir en 1.

3. Si la empresa invierte en 1, no puede tomar la opción 4.

4. Sólo se puede invertir en 3 si se escoge 1 ó 2.

El planteo original del problema (2.4) se ve modificado de la siguiente forma:

1. En este caso basta con agregar la restricción:

x1 + x 2 + x 3 + x 4 ≤ 2

2. Para incorporar esta restricción, se debe imponer que si x2 = 1 necesariamente x1 = 1. Luego,


se podrı́a emplear:
x2 ≤ x1 ó x2 − x1 ≤ 0
Si x2 = 1 necesariamente se tendrá x1 = 1. Si x2 = 0, x1 podrı́a ser 0 ó 1. Como no existen
indicaciones en ese caso, se satisface el requerimiento de la nueva restricción.

3. Esta restricción impone la condición de que las alternativas 1 y 4 sean excluyentes, en otras
palabras:
x1 + x 4 ≤ 1
Como las variables son binarias, no se permite que ambas puedan ser igual a 1.

4. Aquı́, la variable x3 puede valer 1 sólo si x1 o x2 es igual a 1. No existen restricciones que digan
que x1 y x2 sean excluyentes, por lo tanto eventualmente se podrı́a escoger ambas. En este caso
se puede agregar:
x3 ≤ x 1 + x 2
Luego, basta con tener un 1 a la derecha de la desigualdad para que x 3 pueda tomar valor igual
a 1. Si se exigiera que deben escogerse 1 y 2 para poder seleccionar 3, la restricción quedarı́a:

2 × x 3 ≤ x1 + x2

En este caso se requiere tener un 2 a la derecha de la desigualdad para que x 3 pueda ser igual a
uno.

2.2. Problemas de Costo Fijo


Ejemplo 2 Una compañı́a es capaz de producir tres tipos de prendas: poleras, shorts y pantalones.
La fabricación de cada tipo de prenda requiere de maquinaria especializada. La maquinaria puede ser
arrendada a los siguientes costos: U S$200, U S$150 y U S$100 al mes en el caso de las poleras, shorts
y pantalones respectivamente. La fabricación de cada prenda requiere las cantidades de tela y mano
de obra indicadas en la Cuadro 2.1. Cada mes se dispone de 150 horas de mano de obra y 160 yd 2
de tela. El costo unitario de producción y el precio de venta de cada artı́culo se muestra en el Cuadro
2.2. Formule un IP que permita maximizar el beneficio de la fábrica.

Para plantear el modelo se pueden definir las siguientes variables:

x1 = número de poleras producidas mensualmente


x2 = número de shorts producidos mensualmente (2.5)
x3 = número de pantalones producidos mensualmente

4
Segundo Semestre 2003 Programación Lineal Entera

Mano de Obra [hrs] Tela [yd2 ]


Poleras 3 4
Shorts 2 3
Pantalones 6 4

Cuadro 2.1: Requerimientos de Fabricación

Precio de Venta U S$ Costo Variable U S$


Poleras 12 6
Shorts 8 4
Pantalones 15 8

Cuadro 2.2: Requerimientos de Fabricación

Como el costo de arriendo de la maquinaria sólo depende de la prenda producida, será necesario
emplear variables binarias para cuantificar el hecho de arrendar o no cada máquina:
½
1 se arrienda maquinaria para fabricar prendas tipo i
yi = ∀ j = 1...3 (2.6)
0 en caso contrario
Para que el modelo funcione, se debe garantizar que:

Si xi > 0 → yi = 1
(2.7)
Si xi = 0 → yi = 0
Para ello, se debe incorporar las restricciones de activación de las variables binarias:

x 1 ≤ M 1 y1
x 2 ≤ M 2 y2 (2.8)
x 3 ≤ M 3 y3
Los valores Mi son valores escalares lo suficientemente grandes de forma que sean una cota superior
para el valor de xi en el contexto del problema. La restricción (2.8) activa la variable binaria ya que
si xi > 0, para que la restricción se pueda satisfacer la variable binaria yi debe ser exactamente igual
a 1. En el caso que xi = 0, la variable binaria yi puede o no valer 1 sin afectar la satisfacción de la
restricción, sin embargo, si la variable binaria valiera 1 se estarı́a considerando el costo de arriendo
de una maquinaria que no se está empleando. Evidentemente, como el problema es de maximización
de ganancias, si no es estrictamente necesario cuantificar un costo, el algoritmo de resolución se en-
cargará de hacer que la variable yi = 0 en el óptimo. En otras palabras, si el problema no obliga a
considerar un costo, el algoritmo de resolución se encargará de no contabilizarlo.

La función objetivo corresponderá a la diferencia entre los ingresos por venta, menos los costos de
producción fijos y variables:

z = (12x1 + 8x2 + 15x3 ) − (6x1 + 4x2 + 8x3 ) − (200y1 + 150y2 + 100y3 ) (2.9)
| {z } | {z } | {z }
Ingresos por venta Costos variables Costos fijos
Por lo tanto, la función objetivo a maximizar queda:

z = 6x1 + 4x2 + 7x3 − 200y1 − 150y2 − 100y3 (2.10)

5
Segundo Semestre 2003 Programación Lineal Entera

A continuación es preciso construir las restricciones del problema. En este caso existe un disponi-
bilidad máxima de mano de obra y de tela. La restricción de mano de obra queda:

3x1 + 2x2 + 6x3 ≤ 150 (2.11)


y la de tela serı́a:

4x1 + 3x2 + 4x3 ≤ 160 (2.12)


Las restricciones (2.11) y (2.12) nos permiten estimar el valor de M i . Por ejemplo si sólo se produ-
jeran artı́culos de tipo 1, el valor máximo a producir quedarı́a controlado por: mı́n{ 150 160
3 , 4 }, es decir,
40. Luego, basta con escoger M1 = 40, pero en general podrı́a ser cualquier valor mayor. En el caso de
x2 controla 1603 y para x3 basta con M3 = 25. En términos generales los valores de Mi sólo deben ser
lo suficientemente grandes para no restringir los valores de xi por lo que se escogerá arbitrariamente
M1 = M2 = M3 = 100.

De acuerdo a la selección anterior, el modelo final para el problema queda:

máx z = 6x1 + 4x2 + 7x3 − 200y1 − 150y2 − 100y3


s.t. 3x1 + 2x2 + 6x3 ≤ 150
4x1 + 3x2 + 4x3 ≤ 160
x 1 ≤ M 1 y1
(2.13)
x 2 ≤ M 2 y2
x 3 ≤ M 3 y3
xi ∈ Z + ∀ i = 1 . . . 3
yi = {0, 1} ∀ i = 1 . . . 3

2.3. Problemas de Cubrir Conjuntos


Ejemplo 3 Existen 6 barrios en una ciudad. La Alcaldı́a debe determinar cómo construir estaciones
de bomberos. La Alcaldı́a desea construir el número mı́nimo de estaciones de bomberos de forma de
asegurar que al menos una estación esté a menos de 15 minutos de cada barrio. Los tiempos de viaje
entre cada barrio de la ciudad se muestra en el Cuadro 2.3. Formule el IP que permita determinar
cuantas estaciones deben ser construidas y donde deben estar ubicadas.

Hasta
Desde Barrio 1 Barrio 2 Barrio 3 Barrio 4 Barrio 5 Barrio 6
Barrio 1 - 10 20 30 30 20
Barrio 2 10 - 25 35 20 10
Barrio 3 20 25 - 15 30 20
Barrio 4 30 35 15 - 15 25
Barrio 5 30 20 30 15 - 14
Barrio 6 20 10 20 25 14 0

Cuadro 2.3: Tiempo de viaje entre barrios

Para resolver el problema se debe buscar la asignación del menor número de estaciones de bomberos
de forma de ’cubrir’ un conjunto de Barrios. Para construir el IP, conviene definir las siguientes
variables:

6
Segundo Semestre 2003 Programación Lineal Entera

½
1 se construye una estación de bomberos en el barrio i
xi = ∀ i = 1...6 (2.14)
0 en caso contrario

De acuerdo a las variables definidas, el total de estaciones a construir queda definido por:
6
X
z= xi (2.15)
i=1

Para construir las restricciones, es preciso obtener del Cuadro 2.3 en que lugares es factible cons-
truir la estaciones de bomberos para asegurar que cada barrio quede a menos de 15 minutos de al
menos una de ellas. Por ejemplo, para asegurar que al menos una estación quede a menos de 15 min-
utos del Barrio 1 se debe construir en el propio Barrio 1 o bien en el Barrio 2. Siguiendo la misma
lógica se construye el Cuadro 2.4.

Barrio Barrios factibles de construcción


1 1, 2
2 1, 2, 6
3 3, 4
4 3, 4, 5
5 4, 5, 6
6 2, 5, 6

Cuadro 2.4: Lugares factibles de construcción de estaciones de bomberos

Luego, para asegurar la condición solicitada para el Barrio 1 se puede agregar:

x1 + x 2 ≥ 1 (2.16)
Incorporando las restricciones para los otros barrios se completa el IP:

máx z = x1 + x2 + x3 + x4 + x5 + x6
s.t. x1 + x2 ≥ 1 (Barrio 1)
x1 + x 2 + x 6 ≥ 1 (Barrio 2)
x3 + x 4 ≥ 1 (Barrio 3)
(2.17)
x3 + x 4 + x 5 ≥ 1 (Barrio 4)
x4 + x 5 + x 6 ≥ 1 (Barrio 5)
x2 + x 5 + x 6 ≥ 1 (Barrio 6)
xi = {0, 1} ∀ i = 1 . . . 6

2.4. Problemas con restricciones excluyentes o no excluyentes


En un modelo matemático puede ocurrir frecuentemente que existan dos o más restricciones que
sean mutuamente excluyentes, por ejemplo sean las restricciones:

f (x1 , x2 , . . . xn ) ≤ 0 (2.18)
g(x1 , x2 , . . . xn ) ≤ 0 (2.19)

7
Segundo Semestre 2003 Programación Lineal Entera

Si se desea que sólo sea satisfecha una de las restricciones, se puede modificar el planteo de las
restricciones de la siguiente forma:

f (x1 , x2 , . . . xn ) ≤ M y (2.20)
g(x1 , x2 , . . . xn ) ≤ M (1 − y) (2.21)

donde y es una variable binaria y M es una constante lo suficientemente grande para asegurar que las
restricciones:

f (x1 , x2 , . . . xn ) ≤ M
g(x1 , x2 , . . . xn ) ≤ M

se satisfacen para toda combinación de valores de x1 , x2 , . . . xn . Por lo tanto, si y = 1 se tiene que


f ≤ M y g ≤ 0, es decir, sólo existe para efectos prácticos las restricción asociada a g. En caso
contrario, si y = 0 se tiene que f ≤ 0 y g ≤ M , por lo tanto sólo existe la restricción f en términos
prácticos.

Si se deseara que al menos una de las restricciones fuera satisfecha, el planteo quedarı́a:

f (x1 , x2 , . . . xn ) ≤ M y1
g(x1 , x2 , . . . xn ) ≤ M y2
y1 + y 2 ≤ 1

donde y1 e y2 son variables binarias independientes. La idea anterior se puede extender a cualquier
número de restricciones.

Ejemplo 4 Una fábrica de automóviles construye tres tipos de autos: compactos, medianos y grandes.
Los requerimientos de materiales, mano de obra y el beneficio obtenido por cada tipo de auto fabricado
se muestra en el Cuadro 2.5. Actualmente, la fábrica dispone 6000 toneladas de materiales y 60000
horas de mano de obra. Para que la producción de un tipo de vehı́culo sea económicamente factible,
se deben producir al menos 1000 unidades de cada tipo que se fabrique. Formule un IP que permita
maximizar el beneficio de la fábrica.

Compacto Mediando Grande


Materiales [T] 1,5 3 5
Mano de obra [hr] 30 25 40
Beneficio [U S$] 2000 3000 4000

Cuadro 2.5: Requerimientos y beneficios por tipo de vehı́culo.

Como variables de decisión conviene emplear:

xi = número de automóviles de tipo i fabricados (2.22)


La función objetivo queda definida por la combinación lineal de las variables por sus respectivos
beneficios unitarios (en miles):

máx z = 2x1 + 3x2 + 4x3 (2.23)

8
Segundo Semestre 2003 Programación Lineal Entera

A continuación se debe agregar la restricción que obligue a que si se produce un determinado tipo
de vehı́culo, se produzcan como mı́nimo 1000 unidades, es decir:

xi ≤ 0 ó xi ≥ 1000 ∀ i = 1...3 (2.24)

O bien:

xi ≤ 0 ó 1000 − xi ≤ 0 ∀ i = 1...3 (2.25)

Introduciendo la variable binaria yi , las restricciones quedan:

x i ≤ M i yi (2.26)
1000 − xi ≤ Mi (1 − yi ) (2.27)
yi = {0, 1} (2.28)

Un valor posible para Mi se puede obtener a partir de la disponibilidad de materiales y de mano


de obra, por ejemplo para los vehı́culos compactos serı́a: M1 = mı́n{ 6000 60000
1,5 , 30 } = 2000. Siguiendo la
misma lógica se puede obtener: M2 = 2000 y M3 = 1200.

Por otro lado, se deben incorporar las restricciones relativas a la disponibilidad de materiales y
mano de obra:

1,5x1 + 3x2 + 5x3 ≤ 6000 (Materiales)


(2.29)
30x1 + 25x2 + 40x3 ≤ 60000 (Mano de Obra)
Finalmente, el IP queda:

máx z = 2x1 + 3x2 + 4x3


s.t. x1 ≤ 2000y1
1000 − x1 ≤ 2000(1 − y1 )
x2 ≤ 2000y2
1000 − x2 ≤ 2000(1 − y2 )
x3 ≤ 1200y3 (2.30)
1000 − x3 ≤ 1200(1 − y3 )
1,5x1 + 3x2 + 5x3 ≤ 6000
30x1 + 25x2 + 40x3 ≤ 60000
xi ∈ Z+ ∀ i = 1 . . . 3
yi = {0, 1} ∀ i = 1 . . . 3

2.5. Problemas con restricciones de tipo si... entonces


En un modelo matemático puede ocurrir que si la restricción:

f (x1 , x2 , . . . xn ) > 0 (2.31)

se satisface, entonces la restricción:

g(x1 , x2 , . . . xn ) ≥ 0 (2.32)

9
Segundo Semestre 2003 Programación Lineal Entera

tenga también que satisfacerse, mientras que si f ≤ 0 la restricción g ≥ 0 pueda o no satisfacerse.


Para garantizar esta condición se pueden incorporar las siguientes restricciones:

−g(x1 , x2 , . . . xn ) ≤ M y (2.33)
f (x1 , x2 , . . . xn ) ≤ M (1 − y) (2.34)
y = {0, 1} (2.35)

El valor de M debe ser escogido de tal forma que si f ≤ M y −g ≤ M se asegure que todos los
valores de x1 , x2 , . . . xn satisfagan las restricciones. Si la variable binaria vale cero, se tiene f ≤ M ,
en particular f > 0. Por otro lado, si y = 0 se tiene −g ≤ 0 o bien g ≥ 0. En caso contrario, cuando
y = 1 se tiene f ≤ 0, es decir, no se puede cumplir que f > 0. Si y = 1 se tiene −g ≤ M , es decir, se
cumple si g ≥ 0 o si g < 0.

En suma, si se satisface f > 0, la variable binaria debe valer 1 lo que obliga a satisfacer g ≤ 0.

A modo de ejemplo, supongamos que en el problema de la fábrica de automóviles si se fabrican


autos compactos no se pueden fabricar vehı́culos de otro tipo. En otras palabras se tiene:

Si x1 > 0 → x 2 = x3 = 0 (2.36)
En forma equivalente se tiene:

Si x1 > 0 → x2 + x3 ≤ 0 ó − x 2 − x3 ≥ 0 (2.37)
Por lo tanto, basta incorporar:

x2 + x 3 ≤ M y (2.38)
x1 ≤ M (1 − y) (2.39)
y = {0, 1} (2.40)

El valor de M no tiene porqué ser único. En este caso, podemos emplear los valores de M i calculados
previamente:

x2 + x3 ≤ (M2 + M3 )y = 3200y (2.41)


x1 ≤ M1 (1 − y) = 2000(1 − y) (2.42)
y = {0, 1} (2.43)

2.6. Problemas con funciones lineales definidas por tramos


Una función lineal definida por tramos corresponde a un conjunto de segmentos rectos. Los puntos
donde se producen cambios de pendiente se denominan puntos de quiebre. Sea f (x) una función lineal
por tramos con puntos de quiebre b1 , b2 , . . . bn , para cualquier k = 1, 2, . . . n, bk ≤ x ≤ bk+1 . Entonces,
para algún número zk (0 ≤ zk ≤ 1), x puede ser escrito como:

x = zk bk + (1 − zk )bk+1 (2.44)
Como f (x) es lineal para bk ≤ x ≤ bk+1 , se puede escribir:

10
Segundo Semestre 2003 Programación Lineal Entera

f (x) = zk f (bk ) + (1 − zk )f (bk+1 ) (2.45)


La expresión anterior representa una parametrización entre los valores extremos de la función en
ese intervalo, en términos del parámetro zk ≤ 1. La idea geométrica se ilustra en la Figura 2.1.

f (x)

f (b3 )

f (b2 )

b1 b2 b3 x

Figura 2.1: Función lineal por tramos

La función objetivo puede ser escrita como:

f (x) = z1 f (b1 ) + z2 f (b2 ) + . . . + zn f (bn ) (2.46)


Evidentemente, se debe cumplir que zk+1 + zk = 1 para algún k. Sea yk una variable binaria
auxiliar que indica la presencia de la variable x dentro del intervalo k (k = 1 . . . n − 1). Entonces se
puede escribir las siguientes restricciones:

z1 ≤ y 1
z2 ≤ y 1 + y 2
z3 ≤ y 2 + y 3
.. (2.47)
.
zn−1 ≤ yn−2 + yn−1
zn ≤ yn−1
Por lo tanto, si la variable x está en el intervalo k, se tiene yk = 1 y sólo zk y zk+1 pueden ser
distintas de cero. Evidentemente, la variable x sólo puede pertenecer a un intervalo:

y1 + y2 + . . . + yn−1 = 1 (2.48)
Cómo zk+1 = 1 − zk , se debe agregar la restricción:

z1 + z 2 + . . . + z n = 1 (2.49)
De acuerdo a la ecuación (2.44) se tiene:

x = z1 b1 + z2 b2 + . . . + zn bn (2.50)
Para ilustrar la incorporación de funciones lineales definidas por tramos consideremos el siguiente
ejemplo:

11
Segundo Semestre 2003 Programación Lineal Entera

Ejemplo 5 Una refinerı́a produce dos tipos de gasolina a partir de dos tipos de petróleos. Cada galón
de gasolina tipo 1 debe contener a lo menos 50 % de petróleo 1 y cada galón de gasolina tipo 2 debe
contener al menos 60 % de petróleo tipo 1. Cada galón de gasolina tipo 1 puede ser vendido a $12 y
cada galón de tipo 2 puede ser vendido a $14. Actualmente se dispone de 500 galones de petróleo tipo
1 y 1000 galones de petróleo de tipo 2. Se puede comprar hasta 1500 galones adicionales de petróleo
tipo 1 al siguiente precio: los primeros 500 galones se deben pagar a $25 el galón; los siguientes 500
galones se deben pagar a $20 el galón; los siguientes 500 galones se compran a $15 el galón. Formule
un IP que permita determinar la forma de maximizar las utilidades.

Para plantear el modelo se pueden definir las siguientes variables:

x = cantidad de petróleo tipo 1 comprado


(2.51)
xij = cantidad de petróleo de tipo i empleado para producir gasolina de tipo j
La función objetivo queda:

máx z = 12(x11 + x21 ) + 14(x12 + x22 ) − c(x) (2.52)


donde:

 25x 0 ≤ x ≤ 500
c(x) = 25x + 2500 500 ≤ x ≤ 1000 (2.53)

15x + 7500 1000 ≤ x ≤ 1500
La restricción relativa a la disponibilidad de petróleo tipo 1 queda:

x11 + x12 ≤ x + 500 (2.54)


La restricción relativa a la disponibilidad de petróleo tipo 2 queda:

x21 + x22 ≤ 1000 (2.55)


Para obligar que la gasolina tipo 1 tenga al menos un 50 % de petróleo tipo 1 se agrega:
x11
≥ 0,5 (2.56)
x11 + x21
Para obligar que la gasolina tipo 2 tenga al menos un 60 % de petróleo tipo 1 se agrega:
x12
≥ 0,6 (2.57)
x12 + x22
En la función objetivo se reemplaza c(x) por:

c(x) = 0z1 + c(500)z2 + c(1000)z3 + c(1500)z4


(2.58)
c(x) = 12500z2 + 22500z3 + 30000z4
El valor de la variable x se calcula según:

x = 0z1 + 500z2 + 1000z3 + 1500z4 (2.59)


Las variables continuas zk se relacionan con las binarias yk seún:

z1 ≤ y1
z2 ≤ y1 + y2
(2.60)
z3 ≤ y2 + y3
z4 ≤ y3

12
Segundo Semestre 2003 Programación Lineal Entera

Además se tiene que:

z1 + z 2 + z 3 + z 4 = 1
(2.61)
y1 + y 2 + y 3 = 1
Finalmente se agrega la naturaleza de las variables:

zi ≥ 0 ∀ i = 1...4
yj = {0, 1} ∀ j = 1 . . . 3 (2.62)
xkr ≥ 0 ∀k×r

3. Resolución de IP - Método de Ramificación y Acotamiento


El método de ramificación y acotamiento consiste en una técnica de enumeración eficiente de los
puntos factibles de subproblemas de un cierto problema original. Evidentemente, si se resuelve la
relajación de un problema de programación lineal entera pura o mixta y se encuentra que todas las
variables que deben ser enteras o binarias cumplen la condición de enteridad, el óptimo encontrado
será también el óptimo del IP original. Por ejemplo si se resuelve la relajación del siguiente problema:

Ejemplo 6
máx z = 3x1 + 2x2
s.t. 2x1 + x2 ≤ 6 (3.1)
x1 , x2 ∈ Z +

se obtiene como solución: x1 = 0, x2 = 6 y z = 12, que corresponde exactamente a la solución del IP


original. Tal como se ve en la Figura 3.1, la región factible del IP es un subconjunto de la relajación,
por lo tanto el óptimo del IP no puede ser mejor que el óptimo de su relajación. La generalización de
esta idea es el principio básico del método de ramificación y acotamiento.
x2
6

5 = punto en la región factible

4
2x 1
+x

3
2
=6

0
0 1 2 3 x1

Figura 3.1: Región Factible del ejemplo 3.1

Para ilustrar como opera la técnica, consideremos el siguiente ejemplo:

Ejemplo 7 Una mueblerı́a fabrica mesas y sillas. Una mesa requiere de 1 hora de mano de obra y 9
pies cuadrados de madera, una silla requiere de 1 hora de mano de obra y 5 pies cuadrados de madera.
Actualmente, la mueblerı́a dispone de 6 horas de mano de obra y 45 pies cuadrados de madera. Cada

13
Segundo Semestre 2003 Programación Lineal Entera

mesa genera una utilidad de U S$8, cada silla representa una utilidad de U S$5. Formule y resuelva un
IP para maximizar el beneficio de la mueblerı́a.

Consideremos:

x1 = número de mesas fabricadas


(3.2)
x2 = número de sillas fabricadas
Como x1 y x2 deben ser enteras, el IP que resuelve el problema queda:

máx z = 8x1 + 5x2


s.t. x1 + x2 ≤ 6
(3.3)
9x1 + 5x2 ≤ 45
x1 , x2 ∈ Z +
En primer lugar se resuelve la relajación del IP, llamaremos a este problema el Subproblema 1:


 máx z = 8x1 + 5x2

s.t. x1 + x2 ≤ 6
Subproblema 1: (3.4)

 9x1 + 5x2 ≤ 45

x1 , x2 ≥ 0
La resolución gráfica del Subproblema 1 se muestra en la Figura 3.2. En este caso, la solución
óptima corresponde al punto x1 = 15 9 165
4 = 3,75 y x2 = 4 = 2,25, con valor de la función objetivo z = 4 .
Como se mencionó anteriormente, la solución del IP no puede ser mejor a la del IP relajado, por lo
que z = 165
4 es una Cota Superior para la función objetivo.
x2

8
9x 1

7
+5
x2

6
=
45

4 óptimo

2
x1
+
x2

1
=
6

0
0 1 2 3 4 5 6 x1

Figura 3.2: Región Factible del Subproblema 1

El próximo paso es seleccionar una partición de la región factible de la relajación de forma de


intentar obtener la solución óptima del IP. Para ello, arbitrariamente se escoge una variable que no
satisfaga las condiciones del IP, es decir, una variable fraccionaria que deberı́a ser entera, por ejemplo
x1 . Cómo se busca un valor entero para x1 interesa que x1 ≤ 3 o bien que x1 ≥ 4, ya que no puede
haber una solución factible entera en el intervalo 3 < x1 < 4, en otras palabras se buscan soluciones

14
Segundo Semestre 2003 Programación Lineal Entera

en los valores enteros más cercanos al valor fraccionario obtenido. De acuerdo a ello, ramificaremos la
variable x1 definiendo los siguientes subproblemas:

Subproblema 2: Subproblema 1 + restricción: x1 ≤ 3


(3.5)
Subproblema 3: Subproblema 1 + restricción: x1 ≥ 4
Nótese que ambos subproblemas excluyen el valor x1 = 15 4 , es decir, la solución óptima de los
subproblemas no puede ser igual al de la relajación. Por otro lado, como se está resolviendo un
problema más restrictivo que la relajación original el valor de la función objetivo no puede ser mejor.
La ramificación de las variables se ordena en un árbol de ramificación como se muestra en la
Figura 3.3. La región factible del subproblema 2 se muestra en la Figura 3.4. Los puntos extremos de
la región factible: D, E, F y G son los candidatos a óptimos, evaluando se obtiene: z D = 0, zE = 24,
zF = 39 y zG = 30, por lo que la mejor solución corresponde al punto F (x1 = 3, x2 = 3), con valor de
la función objetivo: z = 39. En este caso, la solución obtenida satisface las condiciones de enteridad,
por lo que es posible definir como cota superior z = 39.
Subproblema 1
165
z = 4
15
x1 = 4
9
x2 = 4

x1 ≤ 3 x1 ≥ 4

Subproblema 2 Subproblema 3

Figura 3.3: Árbol de ramificación subproblemas 2 y 3

x2

8
9x 1

7
+5
x2

G
x1 = 3

6
=
45

3
F
2
x1
+
x2

1
=
6

D E
0
0 1 2 3 4 5 6 x1

Figura 3.4: Región Factible del subproblema 2

Si bien la solución obtenida del subproblema 2 satisface todas las condiciones del problema, debe-
mos completar la ramificación ya que aún hay esperanzas de obtener una solución menor o igual al valor

15
Segundo Semestre 2003 Programación Lineal Entera

óptimo del subproblema 1, pero mejor a la cota superior actual. La región factible del subproblema 3
se muestra en la figura 3.5. Los puntos extremos de la región factible son: A, B y C, con respectivos
valores de la función objetivo: zA = 40, zB = 32 y zC = 41. Por lo tanto el óptimo corresponde a:
x1 = 4 y x2 = 95 , valor que no satisface la condición de enteridad.
x2

9x 1
7

+5
x2

x1 = 4
6

x1

=
+

45
5
x2
=
6
4

2 C

1
B A
0
0 1 2 3 4 5 6 x1

Figura 3.5: Región Factible del subproblema 3

Si bien hasta ahora se dispone de una solución entera con valor de la función objetivo de 39, en
el subproblema 3 se obtuvo como valor óptimo: z = 41. Si bien el subproblema 3 no representa una
solución factible para el IP, al ramificar a partir de éste problema se podrı́a esperar un valor de la
función objetivo que sea menor o igual a 41 pero que podrı́a ser mejor que 39, por lo que no se puede
dar como finalizada las ramificaciones. De acuerdo a ello, podemos definir dos nuevos subproblemas
a partir el subproblema 3. Como la variable x2 = 59 no es entera, conviene buscar valores con las
siguientes particiones de la región factible: x2 ≤ 1 y x2 ≥ 2. En otras palabras, se deben resolver los
siguientes subproblemas:

Subproblema 4: Subproblema 3 + restricción: x2 ≤ 1


(3.6)
Subproblema 5: Subproblema 3 + restricción: x2 ≥ 2
El árbol de ramificación con los dos nuevos subproblemas se muestra en la Figura 3.6. La región
factible para los subproblemas 4 y 5 se indican en la Figura 3.7. Para el subproblema 4, los nuevos
candidatos a óptimos son los puntos H e I, con valores de la función objetivo: z H = 37 y zI = 365 9 =
40,556. Entre los puntos A, B, H e I, el mejor valor se obtiene para el punto I con x 1 = 40 9 y x 2 = 1.
Respecto del subproblema 5 se observa que no existen puntos que satisfagan simultáneamente las
restricciones del subproblema 3 y x2 ≥ 2, por lo que tiene solución imposible.
Como la solución óptima del subproblema 4 es superior a la cota, es necesario volver a ramificar
ya que eventualmente se podrı́a encontrar una solución que sea menor o igual a z = 365 9 , pero mejor
que z = 39. En este caso, la variable no entera es x1 = 40 9 , por lo que conviene definir los siguientes
subproblemas:

Subproblema 6: Subproblema 4 + restricción: x1 ≤ 4


(3.7)
Subproblema 7: Subproblema 4 + restricción: x1 ≥ 5

16
Segundo Semestre 2003 Programación Lineal Entera

Subproblema 1
165
z = 4
15
x1 = 4
9
x2 = 4

x1 ≤ 3 x1 ≥ 4

Subproblema 2 Subproblema 3
z = 39 z = 41
x1 = 3 x1 = 4
9
x2 = 3 x2 = 5

x2 ≤ 1 x2 ≥ 2

Subproblema 4 Subproblema 5

Figura 3.6: Árbol de ramificación subproblemas 4 y 5


x2

8
9x 1

7
+5
x2

x1 = 4

6
x1

=
+

45

5
x2
=
6

3
x2 = 2
2
x2 = 1 H I
1
B A
0
0 1 2 3 4 5 6 x1

Figura 3.7: Región Factible del subproblemas 4 y 5

El nuevo árbol de ramificación se muestra en la Figura 3.8. Se agregan las nuevas restricciones
referentes a x1 y se completa la región factible para los subproblemas 6 y 7 en la Figura 3.9. En este
caso, la región factible para el subproblema 6 se reduce al segmento de lı́nea entre los puntos B y H,
con valores para la función objetivo de: zB = 32 y zH = 37, por lo que el óptimo corresponde al punto
H. Como en el punto H los valores de las variables son enteros, se podrı́a pensar que H es un candidato
a óptimo. Sin embargo, el valor de la función objetivo en H es inferior a la cota definida previamente,
por lo que se descarta. En el subproblema 7, el único punto que satisface todas las restricciones es el
punto A, con valor de la función objetivo z = 40. Como en el subproblema 7 el valor de las variables
es entero (x1 = 5 y x2 = 0) y dado que el valor de la función objetivo es mejor que la cota actual,
40 se transforma en la nueva cota. Como el subproblema 6 presenta un valor de la función objetivo

17
Segundo Semestre 2003 Programación Lineal Entera

inferior a la cota, no tiene sentido seguir ramificando pues se ha alcanzado el óptimo del IP. El árbol
de ramificación completo se muestra en la Figura 3.10 donde se identifica la solución óptima.
Subproblema 1
165
z = 4
15
x1 = 4
9
x2 = 4

x1 ≤ 3 x1 ≥ 4

Subproblema 2 Subproblema 3
z = 39 z = 41
x1 = 3 x1 = 4
9
x2 = 3 x2 = 5

x2 ≤ 1
x2 ≥ 2

Subproblema 4
365
z = 9 Subproblema 5
40
x1 = 9 Imposible
x2 = 1
x1 ≤ 4 x1 ≥ 5

Subproblema 6 Subproblema 7

Figura 3.8: Árbol de ramificación subproblemas 6 y 7

x2

8
9x 1

7
+5
x2

x1 = 4

6
x1

=
+

45

5
x2
=

x1 = 5
6

2
x2 = 1 H
1
B A
0
0 1 2 3 4 5 6 x1

Figura 3.9: Región Factible del subproblemas 6 y 7

18
Segundo Semestre 2003 Programación Lineal Entera

Subproblema 1
165
z = 4
15
x1 = 4
9
x2 = 4

x1 ≤ 3 x1 ≥ 4

Subproblema 2 Subproblema 3
z = 39 z = 41
x1 = 3 x1 = 4
9
x2 = 3 x2 = 5

x2 ≤ 1
x2 ≥ 2

Subproblema 4
365
z = 9 Subproblema 5
40
x1 = 9 Imposible
x2 = 1

x1 ≤ 4 x1 ≥ 5

Subproblema 6 Subproblema 7
z = 37 z = 40
x1 = 4 x1 = 5
x2 = 1 x2 = 0

Figura 3.10: Árbol de ramificación final

Ejemplo 8 Considere un problema de programación lineal entera mixta cuyo objetivo es la maxi-
mización de una función z involucrando las variables binarias x 1 , x2 y x3 y la variable continua
x4 ≥ 0. El Cuadro 3.1 presenta la solución óptima para todos los problemas relajados posibles de
obtener (un guión en la columna correspondiente a las variables x1 , x2 y x3 significa que la variable
está libre en el problema relajado).

x1 x2 x3 x z x1 x2 x3 x z x1 x2 x3 x z
- - - (0.2,1,0,0) 82.80 0 - - (0,1,0.67,0) 80.67 1 - - (1,0,0,0) 74.00
- - 0 (0.2,1,0,0) 82.80 0 - 0 (0,1,0,2) 28.00 1 - 0 (1,0,0,0) 74.00
- - 1 (0,0.8,1,0) 79.40 0 - 1 (0,0.8,1,0) 79.40 1 - 1 (1,0,1,0) 63.00
- 0 - (0.7,0,0,0) 81.80 0 0 - Imposible - 1 0 - (1,0,0,0) 74.00
- 0 0 (0.7,0,0,0) 81.80 0 0 0 Imposible - 1 0 0 (1,0,0,0) 74.00
- 0 1 (0.4,0,1,0) 78.60 0 0 1 Imposible - 1 0 1 (1,0,1,0) 63.00
- 1 - (0.2,1,0,0) 82.80 0 1 - (0,1,0.67,0) 80.67 1 1 - (1,1,0,0) 62.00
- 1 0 (0.2,1,0,0) 82.80 0 1 0 (0,1,0,2) 28.00 1 1 0 (1,1,0,0) 62.00
- 1 1 (0,1,1,0.5) 77.00 0 1 1 (0,1,1,0.5) 77.00 1 1 1 (1,1,1,0) 51.00

Cuadro 3.1: Soluciones de todas las relajaciones posibles

Resuelva este problema aplicando la técnica de ramificación y acotamiento.

19
Segundo Semestre 2003 Programación Lineal Entera

En primer lugar se resuelve el problema relajado completo, es decir, se libera el valor de las tres
variables binarias. De acuerdo al Cuadro 3.1, se tiene:


 x1 = 0.2

 x2 =
 1
Subproblema 1 x3 = 0 (3.8)

 x = 0
 4


z = 82.80
En la solución del subproblema 1 el valor de la variable x1 no satisface la condición de binaria, por
lo tanto se ramifica en función de los valores que puede tomar:

Subproblema 2: Subproblema 1 + (x1 = 0)


(3.9)
Subproblema 3: Subproblema 1 + (x1 = 1)
De acuerdo al Cuadro 3.1 se tiene:


 x1 = 0

 x2
 = 1
Subproblema 2 x3 = 0.67 (3.10)

 x = 0
 4


z = 80.67


 x1 = 1

 x2
 = 0
Subproblema 3 x3 = 0 (3.11)

 x = 0
 4


z = 74.00
Se obtiene entonces un primer candidato a óptimo: x1 = 1, x2 = 0, x3 = 0, x4 = 0 y z =74.00. Se
selecciona entonces como cota: z =74.00. El subproblema 2 no representa una solución factible para
el problema original pero posee un valor de la función objetivo superior a la cota, por lo que conviene
ramificar:

Subproblema 4: Subproblema 1 + (x1 = 0) + (x3 = 0)


(3.12)
Subproblema 5: Subproblema 1 + (x1 = 0) + (x3 = 1)
De acuerdo al Cuadro 3.1 se tiene:


 x1 = 0

 x2
 = 1
Subproblema 4 x3 = 0 (3.13)

 x = 2
 4


z = 28.00


 x1 = 0

 x2
 = 0.8
Subproblema 5 x3 = 1 (3.14)

 x = 0
 4


z = 79.40
El subproblema 4 presenta una solución factible, pero muy por debajo de la cota superior por lo que
se puede descartar. El subproblema 5 tiene un asociado un valor óptimo de la función objetivo superior

20
Segundo Semestre 2003 Programación Lineal Entera

a la cota pero no cumple todas las condiciones del problema original. Dado los valores obtenidos, se
debe ramificar según los valores posibles de la variable binaria x2 :

Subproblema 6: Subproblema 1 + (x1 = 0) + (x3 = 1) + (x2 = 0)


(3.15)
Subproblema 7: Subproblema 1 + (x1 = 0) + (x3 = 1) + (x2 = 1)
Los valores óptimos para cada subproblema se obtiene del Cuadro 3.1:


 x1 = 0

x2 = 0
Subproblema 6 (3.16)

 x 3 = 1

z = Imposible


 x1 = 0


 2 x = 1
Subproblema 7 x3 = 1 (3.17)



 x 4 = 0.5

z = 77.00
En este caso, la solución del subproblema 7 es factible y es mayor que la cota por lo que se
transforma en la nueva cota. Como no existe una rama en la que aparezca una solución no factible
con valor de la función objetivo mejor que la cota actual, la solución del subproblema 7 es el óptimo.
El árbol de ramificación completo se muestra en la Figura 3.11.

21
Segundo Semestre 2003 Programación Lineal Entera

Subproblema 1
x1 = 0.2
x2 = 1
x3 = 0
x4 = 0
z = 82.80

x1 = 0 x1 = 1

Subproblema 2 Subproblema 3
x1 = 0 x1 = 1
x2 = 1 x2 = 0
x3 = 0.67 x3 = 0
x4 = 0 x4 = 0
z = 80.67 z = 74.00

x3 = 0 x3 = 1

Subproblema 4 Subproblema 5
x1 = 0 x1 = 0
x2 = 1 x2 = 0.8
x3 = 0 x3 = 1
x4 = 2 x4 = 0
z = 28 z = 79.4

x2 = 1
x2 = 0
Subproblema 7
x1 = 0
Subproblema 6 x2 = 1
Imposible x3 = 1
x4 = 0.5
z = 77

Figura 3.11: Árbol de ramificación completo Ejemplo 8

22
Segundo Semestre 2003 Programación Lineal Entera

4. Ejercicios
Ejercicio 1 Considere el problema de distribución de artı́culos desde tres centros productores a dos
centros consumidores. Los artı́culos pueden ser transportados entre cada centro productor y cada centro
consumidor considerando dos rutas posbiles. La utilización de cada ruta tiene asociada un costo fijo
que es independiente de la cantidad de artı́culos transportados por esa ruta. La siguiente tabla presenta
las capacidades de producción, las demandas estimadas, el costo fijo por la utilización de cada ruta y
el costo de transporte de un artı́culo desde cada centro productor a cada centro consumidor.

Destino
1 2
Origen Ruta Costo fijo Costo unitario Costo fijo Costo unitario Oferta
1 a 10 3 12 9 200
b 20 2 24 8
2 a 15 5 16 12 400
b 25 4 32 10
3 a 30 7 18 16 600
b 35 6 36 14
Demanda 300 500

Formule un modelo de programación lineal mixta que permita determinar la cantidad a trans-
portar por cada ruta que minimiza el costo total satisfaciendo todas las demandas. Defina claramente
variables, función objetivo y restricciones.

Variables:
xijk : Cantidad transportada entre el origen i y el destino j a través de la ruta k; ∀ i =
1, 2, 3; j = 1, 2; k = a, b.

 1 si la ruta k entre el origen i y el destino j es utilizada
yijk = 0 si la ruta k entre el origen i y el destino j no es utilizada

∀ i = 1, 2, 3; j = 1, 2; k = a, b.
Función objetivo:

M in z = 3 × x11a + 2 × x11b + 9 × x12a + 8 × x12b +


5 × x21a + 4 × x21b + 12 × x22a + 10 × x22b +
7 × x31a + 6 × x31b + 16 × x32a + 14 × x32b +
10 × y11a + 20 × y11b + 12 × y12a + 24 × y12b +
15 × y21a + 25 × y21b + 16 × y22a + 32 × y22b +
30 × y31a + 35 × y31b + 18 × y32a + 36 × y32b

Restricciones:

• Ofertas:

23
Segundo Semestre 2003 Programación Lineal Entera

x11a + x11b + x12a + x12b ≤ 200


x21a + x21b + x22a + x22b ≤ 400
x31a + x31b + x32a + x32b ≤ 600

• Demandas:

x11a + x11b + x21a + x21b + x31a + x31b = 300


x12a + x12b + x22a + x22b + x32a + x32b = 500

• Activación de variables:

xijk ≤ M × yijk ; ∀ i = 1, 2, 3; j = 1, 2; k = a, b

• Valores posibles para las variables:

xijk ≥ 0; ∀ i = 1, 2, 3; j = 1, 2; k = a, b
yijk ∈ {0, 1}; ∀ i = 1, 2, 3; j = 1, 2; k = a, b

Ejercicio 2 Una fábrica se dedica a la producción de aceite de cocina a partir de aceites vegetales
y aceites no vegetales. Cada aceite requiere un proceso de refinamiento diferente. La fábrica tiene
capacidad para refinar 210 litros de aceite vegetal y 260 litros de aceite no vegetal. Los aceites refinados
son mezclados pudiendo venderse a $180 el litro del producto final. No existe pérdida de aceite en los
procesos de refinamiento y mezcla y el costo de estos procesos puede ser ignorado. Existe una restricción
técnica relativa a la calidad del aceite producido: en las unidades en que es medida la calidad, ésta debe
estar entre 3, 5 y 6, 2. Se asume que las calidades de los aceites originales se combinan linealmente.
Existen 2 proveedores de aceite, cada uno ofreciendo dos variedades de aceite vegetal y tres variedades
de aceite no vegetal. El Cuadro 4.1 presenta el costo, en pesos, y la calidad de cada aceite ofrecido por
cada proveedor:

Aceites
vegetal 1 vegetal 2 no vegetal 1 no vegetal 2 no vegetal 3
Proveedor 1 Costo 115 128 132 109 114
Calidad 8,8 6,2 1,9 4,3 5,1
Proveedor 2 Costo 110 130 125 108 116
Calidad 8,5 6,4 1,5 4,2 5,2

Cuadro 4.1: Propiedades de los aceites

Existe un costo fijo por ordenar al proveedor 1 de $2,000 y al proveedor 2 de $2,500, independiente
de la variedad y cantidad de aceite ordenado.
Finalmente, las siguientes condiciones se imponen sobre la producción de aceite:

24
Segundo Semestre 2003 Programación Lineal Entera

el producto final no puede estar compuesto de más de tres variedades de los aceites originales,

cualquier aceite, si es usado, debe usarse por lo menos 30 litros, y

si algún aceite vegetal es usado debe usarse algún aceite no vegetal.

Formule un modelo de programación lineal mixta que permita determinar la cantidad de cada tipo
de aceite que debe comprarse a cada proveedor de manera de maximizar las ganancias satisfaciendo
todas las condiciones del problema. Defina claramente variables, función objetivo y restricciones.

Variables:
xij : Cantidad de aceite tipo i comprada al proveedor j; ∀i = 1, . . . , 5, ∀j = 1, 2
½
1, si se compra aceite tipo i a proveedor j; ∀i = 1, . . . , 5, ∀j = 1, 2
yij =
0, si no
½
1, si se compra a proveedor j; ∀j = 1, 2
zj =
0, si no
½
1, si se compra aceite tipo i; ∀i = 1, . . . , 5
wi =
0, si no

Función objetivo (10 %):

5 X
X 2
M ax z = 180 × xij − 2,000 × z1 − 2,500 × z2
i=1 j=1

−115 × x11 − 128 × x21 − 132 × x31 − 109 × x41 − 114 × x51
−110 × x12 − 130 × x22 − 125 × x32 − 108 × x42 − 116 × x52

Restricciones:

• Capacidad de refinamiento:

x11 + x21 + x12 + x22 ≤ 210


x31 + x41 + x51 + x32 + x42 + x52 ≤ 260

• Calidad:
8, 8x11 + 6, 2x21 + 1, 9x31 + 4, 3x41 + 5, 1x51 + 8, 5x12 + 6, 4x22 + 1, 5x32 + 4, 2x42 + 5, 2x52
P5 P 2 ≥ 3, 5
i=1 j=1 xij
8, 8x11 + 6, 2x21 + 1, 9x31 + 4, 3x41 + 5, 1x51 + 8, 5x12 + 6, 4x22 + 1, 5x32 + 4, 2x42 + 5, 2x52
P5 P 2 ≤ 6, 2
i=1 j=1 xij

• Activación de variables:

xij ≤ M × yij ; ∀i = 1, . . . , 2; j = 1, 2

25
Segundo Semestre 2003 Programación Lineal Entera

• Si se compra a cada proveedor:

5
X
yij ≤ 5 × zj ; ∀j = 1, 2
i=1

• Mı́nimo a comprar:

xij ≥ 30 × yij ; ∀i = 1, . . . , 5; j = 1, 2
• Utilización aceite tipo i:

2
X
yij ≤ 2 × wi ; ∀i = 1, 5
j=1

• Cantidad máxima de aceites originales:

5
X
wi ≤ 3
i=1

• Usar algún aceite no vegetal si se usa algún aceite vegetal:

w1 ≤ w 3 + w 4 + w 5
w2 ≤ w 3 + w 4 + w 5

• Valores posibles para las variables:

xij ≥ 0; ∀i = 1, . . . , 5; j = 1, 2
yij ∈ {0, 1}; ∀i = 1, . . . , 5; j = 1, 2
wi ∈ {0, 1}; ∀i = 1, . . . , 5
zj ∈ {0, 1}; ∀j = 1, 2

Ejercicio 3 Teniendo en cuenta el próximo término de la guerra, la Organización de las Naciones


Unidas, ONU, continua estudiando futuras polı́ticas de integración para el pueblo de Afganistán. Ex-
iste un presupuesto de un millón de dólares para la construcción de un máximo de tres escuelas que
atenderı́an jóvenes talibanes y de la alianza del norte. Los talibanes se distribuyen en tres comunidades
en tanto que la alianza del norte se distribuye en dos comunidades. El Cuadro 4.2 presenta la dis-
tancia en kilómetros que un estudiante de cada comunidad deberı́a recorrer para llegar a cada una de
las escuelas, la población estudiantil de cada comunidad, la capacidad máxima proyectada para cada
escuela y el costo de construir cada escuela.
Por razones de integración, la ONU desea que los talibanes tengan una participación de entre un
25 % y un 35 % en cada escuela construida. Se requiere que cada escuela construida tenga un mı́nimo
de 1,000 estudiantes. Por último, se desea que los talibanes se distribuyan por lo menos en dos escuelas.
Considerando que la ONU desea que todos los estudiantes de una misma comunidad asistan a la
misma escuela, formule un modelo matemático que permita minimizar la distancia total recorrida por
todos los estudiantes afganos. Defina claramente variables, función objetivo y restricciones.

26
Segundo Semestre 2003 Programación Lineal Entera

Comunidad Comunidad de la Capacidad


Escuela talibán alianza del norte máxima Costo
1 2 3 1 2 [personas] [103 U S$]
1 20 km 12 km 10 km 4 km 5 km 1.500 150
2 15 km 18 km 8 km 6 km 9 km 2.000 220
3 25 km 17 km 18 km 7 km 3 km 2.500 350
4 10 km 13 km 9 km 9 km 4 km 1.800 180
5 14 km 28 km 14 km 8 km 7 km 2.800 400
Población 600 550 500 1.200 1.100
estudiantil [personas] [personas] [personas] [personas] [personas]

Cuadro 4.2: Distancias entre comunidades y escuelas.

Ejercicio 4 Considere el siguiente modelo de programación lineal entera mixta:

M ax z = 60x1 + 80x2 + 70x3 − 100y1 − 150y2 − 100y3


Sujeto a
13x1 + 18x2 + 15x3 ≤ 800
16x1 + 10x2 + 8x3 ≤ 600
x1 + x2 + x3 ≤ 15
x1 − 10y1 ≤ 0
x2 − 10y2 ≤ 0
x3 − 10y3 ≤ 0
x1 , x2 , x3 ≥ 0
y1 , y 2 , y 3 ∈ {0, 1}

El Cuadro 4.3 presenta la solución óptima para todos los problemas relajados posibles de obtener
(un guión en la columna correspondiente a las variables y1 , y2 e y3 significa que la variable está libre
en el problema relajado).
y1 y2 y3 x z y1 y2 y3 x z y1 y2 y3 x z
0 0 0 (0, 0, 0,0,0,0) 0 1 0 0 (10, 0, 0,1,0,0) 500 - 0 0 (10,0,0,1,0,0) 500
0 0 1 (0, 0,10,0,0,1) 600 1 0 1 ( 5, 0,10,1,0,1) 800 - 0 1 (5,0,10, 12 ,0,1) 850
0 0 - (0, 0,10,0,0,1) 600 1 0 - (10, 0, 5,1,0, 12 ) 800 - 0 - (5,0,10, 12 ,0,1) 850
0 1 0 (0,10, 0,0,1,0) 650 1 1 0 ( 5,10, 0,1,1,0) 850 - 1 0 (5,10,0, 12 ,1,0) 900
0 1 1 (0,10, 5,0,1,1) 900 1 1 1 ( 0,10, 5,1,1,1) 800 - 1 1 (0,10,5,0,1,1) 900
0 1 - (0,10, 5,0, 12 ) 950 1 1 - ( 5,10, 0,1,1,0) 850 - 1 - (0,10,5,0,1, 12 ) 950
0 - 0 (0,10, 0,0,1,0) 650 1 - 0 ( 5,10, 0,1,1,0) 850 - - 0 (5,10,0, 12 ,1,0) 900
0 - 1 (0, 5,10,0, 12 ,1) 925 1 - 1 ( 0, 5,10,1, 12 ,1) 825 - - 1 (0,5,10,0, 12 ,1) 925
0 - - (0,10, 5,0,1, 12 ) 950 1 - - ( 5,10, 0,1,1,0) 850 - - - (0,10,5,0,1, 12 ) 950

Cuadro 4.3: Solución de todos los problemas relajados posibles

1. Resuelva este problema aplicando la técnica de ramificación y acotamiento. Explı́que y justifique


claramente cada uno de los pasos.
2. Considerando en general la resolución de problemas de Programación Lineal Entera, indı́que si
las siguientes afirmaciones son verdaderas o falsas justificando claramente:

27
Segundo Semestre 2003 Programación Lineal Entera

a) La solución óptima a un problema de programación lineal entrega x 1 = 2, 58 y x2 = 1, 32.


Si x1 y x2 están restringidas a tomar valores enteros, entonces x1 = 3 y x2 = 1 es una
solución factible pero no necesariamente óptima.
b) Si la relajación de programación lineal de un problema de programación lineal entera tiene
solución posible entonces el problema de programación lineal entera tiene solución posible.
c) La solución entera óptima x1 = 3 y x2 = 5 con z = 150 ha sido encontrada para un
problema de programación lineal entera. Para su relajación de programción lineal, el rango
de optimalidad para el coefiente c1 está entre 15 y 30 con un coeficiente actual de 20. Si
c1 aumenta a 21 en el problema de programación lineal entera, el nuevo valor óptimo de la
función objetivo será de 153.

28