Ramificación y Acotamiento Un método usado para resolver un problema de programación entera en el que los nodos del árbol asociado se examinan de una manera sistemática tratando de eliminar por consideración tantos nodos terminales como sea posible. Con el método de ramificación y acotamiento, en vez de buscar los nodos terminales directamente, comienza en el nivel superior del árbol y procede de nodo en nodo hacia la base del árbol y los nodos terminales. En cada nodo, se resuelve el programa lineal asociado. Sobre la base de esta solución, se toma una decisión respecto a que nodos del árbol, si los hay, pueden eliminarse para otras consideraciones, lo que reduce el número de nodos terminales que necesitan examinarse. Características claves
Si un problema de programación lineal en un nodo es infactible, entonces también lo es el problema entero asociado en ese nodo, así como todos los problemas asociados con los nodos debajo del actual.
Si el programa lineal actual tiene una solución óptima, entonces el valor óptimo de la función objetivo del problema entero correspondiente, así como de cualquier programa lineal o entero asociado con un nodo debajo del actual, no puede exceder el del actual.
Mientras más lejos se fije el valor de una variable de su valor en la solución óptima de un programa lineal, peor será el valor de la función objetivo óptima del programa lineal asociado
Una vez que un problema de programación lineal es infactible para un valor entero fijo de una variable mayor (menor) que su valor óptimo en el programa lineal, todos los valores mayores (menores) de esta variable originan problemas de programación lineal infactibles.
Si el programa lineal en un nodo es ilimitado, el problema de programación entera es ilimitado o infactible.
Utilización En algunos problemas los valores de las variables de decisión no pueden contener decimales, como por ejemplo, en el caso de fabricación de artefactos para su venta, debido que estos no pueden ser vendidos de forma incompleta, también se da el caso cuando se tiene la asistencia de personas a eventos, pues en ellos las variables solo pueden tomar valores de 0-1 (Binarios) los cuales indican si la persona asiste o no.
Ejemplo Paso 1 En primer lugar no se considera la restricción de que las variables deben ser enteras y se busca el óptimo, con el método simplex.
S.A
Forma estándar
S.A
Cb 0 0
B
Cb 0
6 9 0
B
4
3 2 2 -3
4 1 3 -4
3
0 1 0 0
3
4 0
3
1
12
0
0 0 1 0
0 1 0
0
0
Cb 3
B
4
3 1
4 0
0
1
0
0
12.75
0
0
Soluciones optimas encontradas por método simplex
Paso 2 Con la solución óptima (ej. X=a, Y=b), se comienza a r ealizar la ramificación del problema Se escoge una variable X del problema cuya solución no sea entera (no las de holgura), y se ramifica (agrega una restricción) Por un lado haciendo que X ≤ [a] y por la otra rama X ≥ [a]+1 P0
1 P2
P1
Se coge la parte entera de
en este caso es 2
dado que al dividir 9 % 4 = 2.25 Por lo tanto el problema queda de la siguiente forma
S.A
Aplicando X ≥ [a]+1 para la otra rama, entonces quedara en Por lo tanto el problema queda de la siguiente forma
S.A
Hacemos que
Hacemos que
Reemplazamos en las restricciones
Reemplazamos
1
Recordar que para la otra rama es necesario sumar (1) X ≥ [a]+1
en
las
restricciones
y
conseguimos que:
Teniendo estos valores se halla el nuevo Z De la siguiente manera
Volver a Calcular el nuevo valor Z (3*3) + (4+0) = 9
(3*2) + (4* ) = 12.667
Se encuentra con una variable entera (Z=9), pero aun no podemos utilizar esta solución como la óptima dado que la solución objetivo de la primera rama es mayor, por lo tanto se debe seguir ramificando por P1. Paso 3 Como tiene valor entero tomamos
P1
P3
P4
Se coge la parte entera de
en este caso es 1
La restricción que se agrega ahora es
dado que al dividir 5 % 3 = 1.667 La primera restricción que se agrega es Se toma el problema anterior con la restricción de P1 la cual era y además agregar la restricción de
S.A
S.A
Por lo tanto decimos que Reemplazamos en las restricciones quedando
Como la restricción que se agrego es se asume que toma el valor de 1 y estos se remplazan en las restricciones anteriores quedando que:
Por lo tanto el valor mayor que puede tomar la variable es 2 y es 1 Hallar el nuevo valor de Z (3*2) + (4+1) = 10
Hallar el nuevo valor de Z
(3* ) + (4*2)=12.50
En este caso no se encuentra una solución entera pero la función objetivo aun es mayor a la solución entera encontrada en P3 por lo tanto se debe seguir ramificando con P4
Paso 4 P4
P5
P6
Dado que la variable que no tiene valores enteros, se debe ramificar por ahí. Se agrega la restricción La función objetivo y el problema de programación lineal queda con sus restricciones originales que fue agregada antes de P1, agregada antes que P4 y que fue agregada reciente
S.A
Se dice que
La restricción que se agrega ahora es
S.A
Se dice que Reemplazando obteniendo
Reemplazamos obteniendo
En este caso el valor que no se puede determinar puesto que no hay una intersección Entre las inecuaciones dadas, esto se conoce como problema infactible.
Hallar el nuevo valor de Z
(3*1) + (4+ ) = 12.333
Problema infactible Esta Rama se termina aquí, no se puede seguir realizando.
Solo se debe continuar con la rama P5 Paso 5 P5
P7
P8