Programacion Lineal Entera y Binaria 205
Programacion Lineal Entera y Binaria 205
Programacion Lineal Entera y Binaria 205
Capítulo 12
Programación Lineal Entera y Binaria
X2
Max Z = 5X1+2X2
C.S.R. 2X1 + 2X2 < 9
3X1 + X2 < 11
Max Z = 5X1+2X2 X2 > 2
C.S.R. 2X1 + 2X2 < 9
3X1 + X2 < 11 XJ > 0 ; J = 1,2
X2 < 1 X2 > 2
X2 < 1
X1
Introducción
Muchos de los problemas de la vida real exigen soluciones con números entero, por lo tanto
las variables de dicho problema deben ser definidas como variables enteras. Los métodos
de solución que contemplaremos en éste capitulo son: Método gráfico, Método de los planos
cortantes de Gomory, Método de Bifurcación y Acotación (Branch And Bound), el Método
de Egon Balas en donde las variables son de carácter binario (0,1). Por último se ilustra el
uso del software WinQsb para atender éste tipo de problema.
Método Gráfico
Es idéntico al método gráfico de programación lineal continua, solo que aquí, se seleccionan
solo las soluciones enteras dentro del área de soluciones factibles.
205
Programación Lineal Entera y Binaria
Ejemplo
Max Z = 5X1 + 3X2 3X1 + 5X2 < 15 5X1 + 2X2 < 10 Z = 5X1 + 3X2 = 15
3X1 + 5X2 = 15 5X1 + 2X2 = 10
C.S.R. 3X1 + 5X2 < 15 X1 = 0 X2 = 0 X1 = 0 X2 = 0 X1 = 0 X2 = 0
5X1 + 2X2 < 10 X2 = 3 X1 = 5 X2 = 5 X1 = 2 X2 = 5 X1 = 3
P(0,0) ⇒ 0 < 15 P(0,0) ⇒ 0 < 10
Xj > 0 y Enteras ∀j Verdad Verdad
Éste método sirve para solucionar problemas de más de dos (2) variables.
Algoritmo
3. Si no es entera, introducir una restricción nueva para la variable no entera, que tenga la
mayor parte fraccional (Quebrar empates arbitrariamente) y resolver el nuevo problema
mediante el método dual simplex.
206
Programación Lineal Entera y Binaria
Nueva restricción a partir de la restricción actual que tenga la variable cuyo valor en su
parte fraccional sea mayor.
a) Escriba cada constante como la suma de: Un número entero de cualquier signo y una
fracción no negativa, menor que uno (1).
Ejemplo
î
C.S.R. X1 + 10X2 < 20 C.S.R. X1 + 10X2 + X3 = 20
X1 < 2 X1 + X4 = 2
Xj > 0 y enteros para toda j Xj > 0 y enteros para toda j
207
Programación Lineal Entera y Binaria
Remplazamos cada constante por la suma de un número entero de cualquier signo y una
fracción no negativa menor que uno (1).
1/10X3 + 9/10X4 = 4/5 + 1 – X2 + X4 ; Fíjese que el lado izquierdo subrayado debe ser
positivo y el lado derecho subrayado, debe ser entero, luego podemos asegurar que:
1/10X3 + 9/10X4 > 4/5 ; Multiplicando por (-1) ; -1/10X3 – 9/10X4 < -4/5 ; Adicionando una
variable de holgura; -1/10X3 – 9/10X4 + X5 = -4/5 ; Ecuación ésta que adicionamos, así:
Cj î 1 5 0 0 0 Cj î 1 5 0 0 0
VB b X1 X2 X3 X4 X5 VB b X1 X2 X3 X4 X5
5 X2 9/5 0 1 1/0 -1/10 0 5 X2 17/9 0 1 1/9 0 -1/9
1 X1 2 1 0 0 1 0 1 X1 10/9 1 0 -1/9 0 10/9
0 X5 -4/5 0 0 -1/10 -9/10 1 → 0 X4 8/9 0 0 1/9 1 -10/9
Zj - Cj 11 0 0 1/2 1/2 0 Zj - Cj 95/9 0 0 4/9 0 5/9
Zj – Cj / arj NO NO -5 -5/9 NO
↑
Escogemos la variable básica con mayor parte fraccionaria, en caso de empate, escoja al
azar. Escojo X4
208
Programación Lineal Entera y Binaria
1/9X3 + 8/9X5 > 8/9 ⇒ -1/9X3 – 8/9X5 < -8/9 ⇒ -1/9X3 – 8/9X5 + X6 = -8/9
Cj î 1 5 0 0 0 0 Cj î 1 5 0 0 0 0
VB b X1 X2 X3 X4 X5 X6 VB b X1 X2 X3 X4 X5 X6
5 X2 17/9 0 1 1/9 0 -1/9 0 5 X2 2 0 1 1/8 0 0 -1/8
1 X1 10/9 1 0 -1/9 0 10/9 0 1 X1 0 1 0 -1/4 0 0 5/4
0 X4 8/9 0 0 1/9 1 -10/9 0 0 X4 2 0 0 1/4 1 0 -5/4
0 X6 -8/9 0 0 -1/9 0 -8/9 1 → 0 X5 1 0 0 1/8 0 1 -9/8
Zj - Cj 95/9 0 0 4/9 0 5/9 0 Zj - Cj 10 0 0 3/8 0 0 5/8
Zj – Cj / arj NO NO -4 NO -5/8 NO
↑ Solución factible, óptima y entera
Es una estrategia sistemática, que reduce mucho el número de combinaciones que se deben
examinar.
Algoritmo
209
Programación Lineal Entera y Binaria
3. Se selecciona una variable con valor no cero y se crean dos ramas mutuamente
excluyentes, esto da lugar a dos (2) nuevos problemas de Programación Lineal; que se
deben resolver.
4. Si ninguna solución es entera, con la rama de mayor valor de Z, se crean nuevas ramas y
se resuelven nuevos problemas por programación lineal (Método Simplex).
5. Se repite el punto 4), Hasta encontrar la solución entera óptima.
X2 < 1 X2 > 2
Max: Z = 5X1 + 2X2 Max: Z = 5X1 + 2X2
C.S.R. 2X1 + 2X2 < 9 X1 = 3,33 X1 = 2,50 C.S.R. 2X1 + 2X2 < 9
3X1 + X2 < 11 X2 = 1,00 X2 = 2,00 3X1 + X2 < 11
X2 < 1 Z = 18,67 Z = 16,50 X2 > 2
XJ > 0 ; j = 1, 2 y Enteros El Mayor Z XJ > 0 ; j = 1, 2 y Enteros
X1 < 3 X1 > 4
Max: Z = 5X1 + 2X2 Max: Z = 5X1 + 2X2
C.S.R. 2X1 + 2X2 < 9 X1 = 3 No hay C.S.R. 2X1 + 2X2 < 9
3X1 + X2 < 11 X2 = 1 Solución 3X1 + X2 < 11
X2 > 2 Z = 17 Factible X2 > 2
X1 < 3 X1 > 4
XJ > 0 ; j = 1, 2 y Enteros XJ > 0 ; j = 1, 2 y Enteros
Observe que la primera acotación se realizó sobre la variable X2 , pero pudo haber sido
sobre X1 , de todas formas el método es dispendioso, en especial si se hace manualmente.
210
Programación Lineal Entera y Binaria
Algoritmo
32 POSIBLES SOLUCIONES
X1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
X2 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
X3 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
X4 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
X5 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
211
Programación Lineal Entera y Binaria
Evaluamos cada restricción, primeramente suponiendo que todas las variables valgan cero, y
después, alternativamente a cada variable le asignamos el valor de uno (1) y al resto de
variables el valor de cero (0). Cada vez que una solución no satisfaga una restricción, el que
tan lejos está de satisfacerla, lo llamamos infactibilidad.
Ejemplo: Si X1 = 1 y X2 = X3 = X4 = X5 = 0
Remplazando en la restricción uno (1), establecemos que: -3 < 0 , luego aquí la infactibilidad
es cero (0), ya que la solución evaluada, satisface la restricción, convirtiéndola en una
afirmación verdadera.
Remplazando en la restricción dos (2), establecemos que: 3 < 0 , luego aquí la infactibilidad
es tres (3), ya que la solución evaluada, no satisface la restricción, convirtiéndola en una
afirmación falsa. El que tan lejos está de ser una verdad, es lo que llamamos infactibilidad.
Si en ésta primera iteración, encontramos una solución cuya infactibilidad sea cero (0),
hemos encontrado la solución factible y óptima. Si encontramos que varias soluciones
tienen la infactibilidad igual a cero (0), remplazamos todas éstas soluciones en la función
objetivo y la solución óptima será aquella que haga que Z sea mínima.
Si no hay ninguna solución con su infactibilidad igual a cero (0), Escogemos la solución que
menor infactibilidad tenga y de ella la variable que esté valiendo uno (1). Remplazamos en
las restricciones dicha variable y sobre dichas restricciones iniciamos la segunda iteración.
Éste procedimiento se repite hasta encontrar la solución óptima factible.
212
Programación Lineal Entera y Binaria
X1 = X2 = X3 = X4 = X5 = 0 X1 = 1 ; X3 = X4 = X5 = 0
3<0 -6 < 0
7 < 0 Infactibilidad = 10 -2 < 0 Infactibilidad = 0 ; Z=15
X1 = 1 ; X2 = X3 = X4 = X5 = 0 X3 = 1 ; X1 = X4 = X5 = 0
-3 < 0 2<0
3 < 0 Infactibilidad = 3 -2 < 0 Infactibilidad = 2
X2 = 1 ; X1 = X3 = X4 = X5 = 0 X4 = 1 ; X1 = X3 = X5 = 0
0<0 -4 < 0
2 < 0 Infactibilidad = 2 ; La menor -1 < 0 Infactibilidad = 0 Z=12
X3 = 1 ; X1 = X2 = X4 = X5 = 0 X5 = 1 ; X1 = X3 = X4 = 0
5<0 -1 < 0
3 < 0 Infactibilidad = 8 5 < 0 Infactibilidad = 5
Aquí concluimos, que lo menos malo es fijar Solamente se hizo necesario escudriñar 10
la primera variable con valor de uno (1) a X2 de las 32 soluciones posibles. Podemos
ya que presenta la menor infactibilidad, asegurar que el método hace una búsqueda
remplazamos a X2 = 1 en las dos sistemática que evita probar todas las
restricciones e iniciamos la 2º iteración. combinaciones posibles.
213
Programación Lineal Entera y Binaria
Software WinQsb
214
Programación Lineal Entera y Binaria
Problemas propuestos
215
Programación Lineal Entera y Binaria
a) Min: Z = 5X1 + 7X2 + 10X3 + 3X4 + X5 b) Max: Z = 3X1 + 2X2 - 5X3 - 2X4 + 3X5
C.S.R. - X1 + 3X2 + 5X3 – X4 + 4X5 < -2 C.S.R. X1 + X2 + X3 + 2X4 + X5 < 4
2X1 - 6X2 + 3X3 + 2X4 – 2X5 < 0 7X1 + 3X3 - 4X4 + 3X5 < 8
X2 - 2X3 + X4 + X5 < -1 11X1 – 6X2 + 3X4 - 3X5 > 3
XJ = 0,1 j = 1,2,3,4,5 XJ = 0,1 j = 1,2,3,4,5
T R A B A J O
PROGRAMADOR 1 2 3 4 5
JOSE 100 150 200 100 50
T R A B A J O TIEMPO DISPONIBLE
PROGRAMADOR 1 2 3 4 5 (HORAS)
JOSE 40 15 20 10 5 35
216