Investigación de Operaciones 2 Ingeniería Civil Industrial
UNAP, 2014
Programación Lineal Entera (PLE) Existen muchos problemas administrativos importantes que serian de programación lineal si no fuera por el requerimiento de que sean enteros los valores de algunas variables de decisión, en los que no se pueden encontrar una buena solución mediante el uso del método simplex seguido del redondeo de los valores óptimos resultantes para las variables de decisión. Estos problemas deben ser resueltos mediante algoritmos especialmente diseñados para resolver problemas de programación entera . La Programación Lineal Entera (PLE) ha llegado a ser un área muy especializada de la ciencia administrativa. Se trata de formular y solucionar problemas de programación lineal con la particularidad de que alguna o todas las variables asuman valores enteros. La magnitud del rendimiento y la asignación de recursos asociados con cada unidad del problema aconsejan determinar la mejor solución entera posible. Muchos problemas usan variables enteras para indicar decisiones lógicas.
Programación Lineal Entera (PLE) En los problemas de Programación Lineal (PL) se permite a las variables tener valores fraccionarios y conforme al principio de que “todo lo que está permitido ocurre”, se deben esperar las respuestas fraccionarias. Las variables de decisión en el mundo real a menudo deben ser enteras. Con sentido práctico, muchas soluciones aceptables para el administrador se obtiene mediante redondeo. Hay muchos problemas importantes en los que el redondeo hacia los requerimientos enteros en los problemas reales simplemente no funciona. El redondeo no siempre conduce a soluciones factibles.
Clasificación de PLE La PLE es un término general para los modelos de programación matemática que presentan condiciones de integralidad (condiciones que estipulan que algunas o todas las variables de decisión deben tener valores enteros). Atendiendo al tipo de variables se clasifican en: Programas lineales enteros puros (PLE): Son aquellos en que todas las
variables de decisión únicamente pueden tomar valores enteros. También se distinguen dentro de estos los programas totalmente enteros como aquellos en que tanto las variables como todos los coeficientes que intervienen en el programa han de ser enteros. Por ejemplo: Min z = 6x1 + 5x2 + 4x3 s.a. 108x1 + 92x2 + 58x3 ≥ 576 7x1 + 18x2 + 22x3 ≥ 83 x1, x2, x3 ≥ 0 y enteros
Clasificación de PLE Programas lineales enteros mixtos (PLEM): Son aquellos en el que sólo se
requiere que algunas variables tengan valores enteros mientras que otras pueden asumir cualquier número no negativo (es decir, cualquier valor continuo). Por ejemplo: Min z = 6x1 + 5x2 + 4x3 s.a. 108x1 + 92x2 + 58x3 ≥ 576 7x1 + 18x2 + 22x3 ≥ 83 x1, x2, x3 ≥ 0 ; x1 y x2 enteros
Clasificación de PLE Programas lineales enteros binarios (PLEB): en estos se restringe el valor
de las variables a 0 y 1. Son de particular interés debido a que se pueden usar las variables 0 – 1 para representar decisiones dicotómicas (si o no). Diversos problemas de asignación, ubicación de plantas, planes de producción y elaboración de cartera, etc. son de programación lineal entera 0 – 1. Por ejemplo: Max z = 40x1 + 70x2 + 80x3 + 100x4 s.a. 10x1 + 30x2 + 10x3 + 20x4 ≤ 50 5x1 + 20x2 + 20x3 + 10x4 ≤ 45 20x1 + 10x2 + 27x3 + 40x4 ≤ 70 10x1 + 10x2 + 20x3 + 20x4 ≤ 40 10x2 + 10x3 + 20x4 ≤ 30 xi = 0 o 1 ; i = 1, …, 4
Interpretación gráfica de PLE Dado el siguiente problema de PL: Max. z = 6x1 + 7x2 s.a. x1 + 2x2 ≤ 8 (1)
x1 – x2 ≤ 4 (2) x1, x2 ≥ 0
Interpretación gráfica de PLE Del problema anterior, veamos ahora cual es la región factible para una solución optima considerando valores enteros, es decir: Max. z = 6x1 + 7x2 s.a. x1 + 2x2 ≤ 8 (1)
x1 – x2 ≤ 4 (2) x1, x2 ≥ 0; x1, x2 enteros
En este caso el conjunto de soluciones factibles no es el área de la región poligonal cerrada, sino sólo puntos
Interpretación gráfica de PLE
Interpretación gráfica de PLE Si consideramos los posibles valores enteros dentro de la región factible, se puede construir una tabla con los resultados y valores de la función objetivo: X1
X2
Z = 6X1 + 7X2
0 0 0 0 0 1 1 1 1 2 2 2 2 3 3 3 4 4 4 5
0 1 2 3 4 0 1 2 3 0 1 2 3 0 1 2 0 1 2 0
0 7 14 21 28 6 13 20 27 12 19 26 33 18 25 32 24 31 38 37
Resumen de resultados óptimos Z (PL) = 41,33 Z (PLE) = 38 Solución óptima PLE
Método de Ramificación y Acotamiento (Branch and Bound) El método de Branch and Bound (o Ramificación y Acotamiento) es un algoritmo diseñado para la resolución de modelos de programación entera. Su operatoria consiste en “linealizar ” el modelo de programación entera, es decir, resolver éste como si fuese un modelo de programación lineal y luego generar cotas en caso que al menos una variable de decisión adopte un valor fraccionario. El método lleva ese nombre dado que comienza a separar el problema (ramificación) y lo acota a valores enteros. En cada ramificación, se resuelve el programa lineal asociado. Sobre la base de esta solución, se toma una decisión respecto a qué nodos del árbol, si los hay, pueden eliminarse para otras consideraciones, lo que reduce el número de nodos terminales que necesitan examinarse.
Método de Ramificación y Acotamiento (Branch and Bound) Consideremos el siguiente ejemplo: Maximizar Sujeto a:
X1 + 5X2 11X1 + 6X2 66 5X1 + 50X2 225 X1, X2 0 enteros
Método de Ramificación y Acotamiento (Branch and Bound) En la figura podemos ver el conjunto factible de dicha aproximación. Los puntos negros son los que satisfacen la condición de enteros. (hay 27 de dichos puntos). La solución es X1* = 3.750; X2* = 4.125; Z= 24.375 Como estos valores no son enteros no se ha resuelto (P1). Si tomamos la solución óptima de PL y redondeamos a X1 = 3, X2 = 4 obtendremos una solución factible del problema (P1). Si evaluamos ahora la función objetivo para este punto (o para cualquier otro punto factible), tendremos una cota inferior del valor óptimo del problema (P1). En este caso puntual, si evaluamos en X 1 = 3, X2 = 4 , obtenemos un valor Z= 23. No podemos asegurar que este es el valor óptimo entero del problema.
Método de Ramificación y Acotamiento (Branch and Bound) La información relativa a la resolución bifurcación y acotamiento se sintetiza en su forma típica en un “diagrama de árbol” . El primer nodo es
X1* = 3.75 X2* = 4.125 Z = 24,37 P1
Num. Del Nodo
Tenemos que descubrir si se puede hallar una solución mejor. Para hacerlo bifurquemos. Procedemos a dividir el problema (P1) en dos más cortos. En este caso, bifurquemos X1. Ésta es una elección arbitraria. El proceso de bifurcación aprovecha la circunstancia de que en la solución optima del problema (P1), o bien X1 3 o bien X1 4. En términos generales se bifurca en Xi a y Xi a+1
Método de Ramificación y Acotamiento (Branch and Bound) Luego, el planteamiento queda como sigue: Maximizar X1 + 5X2 s.a.11X1 + 6X2 66 5X1 + 50X2 225 X1, X2 0 enteros P1 Maximizar X 1 + 5X2 s.a.11X1 + 6X2 66 5X1 + 50X2 225 X1 3 X1, X2 0 enteros P2
X1 ≤ 3
X1 ≥ 4
Maximizar X1 + 5X2 s.a.11X1 + 6X2 66 5X1 + 50X2 225 X1 4 X1, X2 0 enteros P3
Método de Ramificación y Acotamiento (Branch and Bound) Una vez establecida la bifurcación, se procede a realizar los cálculos correspondientes considerando los valores de las bifurcaciones. Paso 1: En este caso, en la ramificación P2, se evalúa en cada restricción considerando que X1 = 3. De esta forma, obtenemos las siguientes soluciones: 11X1 + 6X2
66, X2 33/6
5X1 + 50X2
225, X2 210/50
X1
3
Luego, el mayor valor que puede obtenerse de la intersección de ambos resultados, es X2 4,2. Evaluando en Z con los valores X1 = 3, y X2 4,2 obtenemos Z= 24. Solución no óptima dado que X 2 no es entero Paso 2: Se vuelve a bifurcar agregando las restricciones correspondientes a la rama.
Método de Ramificación y Acotamiento (Branch and Bound) Una vez establecida la bifurcación, se procede a realizar los cálculos correspondientes considerando los valores de las bifurcaciones. Paso 1: En este caso, en la ramificación P2, se evalúa en cada restricción considerando que X1 = 3. De esta forma, obtenemos las siguientes soluciones: 11X1 + 6X2
66, X2 33/6
5X1 + 50X2
225, X2 210/50
X1
3
Luego, el mayor valor que puede obtenerse de la intersección de ambos resultados, es X2 4,2. Evaluando en Z con los valores X1 = 3, y X2 4,2 obtenemos Z= 24. Solución no óptima dado que X 2 no es entero Paso 2: Se vuelve a bifurcar agregando las restricciones correspondientes a la rama.
Método de Ramificación y Acotamiento (Branch and Bound) Luego, el planteamiento queda como sigue: Maximizar X1 + 5X2 s.a.11X1 + 6X2 66 5X1 + 50X2 225 X1, X2 0 enteros P2 Maximizar X 1 + 5X2 s.a.11X1 + 6X2 66 5X1 + 50X2 225 X1 3 X2 4 X1, X2 0 enteros P4
X2 ≤ 4
X2 ≥ 5
Maximizar X1 + 5X2 s.a.11X1 + 6X2 66 5X1 + 50X2 225 X1 4 X2 ≥ 5 X1, X2 0 enteros P5
Método de Ramificación y Acotamiento (Branch and Bound) Aplicando el Paso 1 al nodo 4 y 5 obtenemos los siguientes resultados: P4: X1 = 3 , X2 = 4 , Z= 23 P5: Infactible Paso 3: Resolver todos los nodos o ramificaciones existentes y escoger el mayor valor Z con soluciones enteras. Las bifurcaciones se terminan ya sea alcanzo una solución entera o por infactibilidad.
Ejercicios: Resuelva mediante el método de bifurcación y acotamiento Max Z= 4x1 + 6x2
Max Z= 8x1 + 5x2
s.a. 2x1 + 4x2
s.a.
4x1 + 3x2
12
16
X1 + x2
6
9x1 + 5x2
45
X1,x2 enteros. Max Z = 5x1 + 4x2
Max Z = 3x1 + 4x2
s.a.
s.a. 2 x1 + x2
x1 + x2
10x1 + 6x2
5
45
2x1 + 3x2
X1,x2 enteros. Max Z = 120x1 + 80x2 s.a.
2x1 + x2
7x1 + 8x2
28
X1,x2 enteros.
6
6 9