Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Entera s2 2003 PDF
Entera s2 2003 PDF
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 = 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.
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:
x2
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
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.
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):
Como existe un capital limitado de U S$14000 para invertir, se debe satisfacer (en miles):
3
Segundo Semestre 2003 Programación Lineal Entera
x1 + x 2 + x 3 + x 4 ≤ 2
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.
4
Segundo Semestre 2003 Programación Lineal Entera
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:
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:
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
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.
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
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
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.
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:
O bien:
x i ≤ M i yi (2.26)
1000 − xi ≤ Mi (1 − yi ) (2.27)
yi = {0, 1} (2.28)
Por otro lado, se deben incorporar las restricciones relativas a la disponibilidad de materiales y
mano de obra:
g(x1 , x2 , . . . xn ) ≥ 0 (2.32)
9
Segundo Semestre 2003 Programación Lineal Entera
−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.
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:
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)
f (b3 )
f (b2 )
b1 b2 b3 x
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.
z1 ≤ y1
z2 ≤ y1 + y2
(2.60)
z3 ≤ y2 + y3
z4 ≤ y3
12
Segundo Semestre 2003 Programación Lineal Entera
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
Ejemplo 6
máx z = 3x1 + 2x2
s.t. 2x1 + x2 ≤ 6 (3.1)
x1 , x2 ∈ Z +
4
2x 1
+x
3
2
=6
0
0 1 2 3 x1
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:
8
9x 1
7
+5
x2
6
=
45
4 óptimo
2
x1
+
x2
1
=
6
0
0 1 2 3 4 5 6 x1
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:
x1 ≤ 3 x1 ≥ 4
Subproblema 2 Subproblema 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
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
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:
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
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
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
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
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
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
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:
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 :
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
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:
Restricciones:
• Ofertas:
23
Segundo Semestre 2003 Programación Lineal Entera
• Demandas:
• Activación de variables:
xijk ≤ M × yijk ; ∀ i = 1, 2, 3; j = 1, 2; k = a, b
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
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,
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
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:
• 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
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
5
X
wi ≤ 3
i=1
w1 ≤ w 3 + w 4 + w 5
w2 ≤ w 3 + w 4 + w 5
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
26
Segundo Semestre 2003 Programación Lineal Entera
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
27
Segundo Semestre 2003 Programación Lineal Entera
28