En este momento será más conveniente explicar los fundamentos del algoritmo de ramificar y acotar (R y A), por medio de un ejemplo numérico:
Consideremos el siguiente problema de Programación lineal Entera: Max z = 5×1 + 4×2
Sujeto a x1 + x2 <=5 10×1 + 6×2 <=45 x1, x2 >= 0 y entero
En la siguiente figura se muestra el espacio de soluciones de la programación lineal entera representado por los puntos. El espacio de soluciones de programación lineal asociado, programación lineal óptima, se define por cancelación de las restricciones enteras. La solución programación lineal óptima se da como x1 = 3,75, x2 = 1,25 y z = 23,75.
El procedimiento de Ramificar y Acotar se basa en tratar solo con el problema programación lineal. Como la solución óptima (x1 = 3,75, x2 = 1,25 y z = 23,75) pero no satisface la necesidad de valores enteros, el algoritmo de R y A exige “modificar” el espacio de soluciones lineales de forma tal que nos permita identificar, finalmente, para conseguir la solución óptima entera.
Primero seleccionaremos una de las variables cuyo valor corriente en la solución óptima no cumple el requisito de valor entero. Seleccionando x1=3,75 arbitrariamente, observamos que la región ( 3 < x1 < 4 ) del espacio de soluciones lineales, no puede incluir ninguna espacio solución factible entera. Entonces podemos modificar el espacio de soluciones lineales eliminando esta región no prometedora, lo que, en realidad, es equivalente a reemplazar el espacio original por dos espacios los PL1 y PL2, definidos de la manera siguiente:
1. Espacio PL1 = espacio PLO + (x1 <= 3) 2. Espacio PL2 = espacio PLO + (x1 >= 4)
Esta figura muestra los espacios PL1 y PL2 en forma grafica. Se ve que los dos espacios contienen los mismos puntos enteros factibles del modelo PLE. Esto significa que, desde el punto de vista del problema original de PLE, tratar con PL1 y PL2 es igual que tratar con el original PLO. La diferencia principal es que la selección de las nuevas restricciones e acotamiento ( x1 >= 3 y x1 <= 4 ) mejoraran la oportunidad de forzar a los puntos extremos óptimos de PL1 y PL2 hacia la satisfacción del requisito de valor entero. Además el hecho que las restricciones de acotamiento están en la “vecindad inmediata” del optimo continuo del PLO, incrementara las posibilidades de producir “buenas” soluciones enteras.
Las nuevas restricciones x1 >= 3 y x1 <= 4 son mutuamente excluyentes, PL1 y PL2 deben tratarse como dos programas lineales separados. Esta dicotomía da lugar al concepto de ramificación en el algoritmo de R y A. En efecto, ramificar significa subdividir un espacio de soluciones corrientes en subespacios mutuamente excluyentes.
Aquí vemos las ramas PL1 y PL2 y x1 llamada variable de ramificación
Sabemos que la solución óptima entera debe encontrarse en PL1 o PL2. Sin embargo, en ausencia del espacio grafico de soluciones, no tenemos manera de determinar donde puede encontrarse la solución óptima, por lo que nuestra única opción es investigar ambos problemas. Hacemos esto trabajando con un problema a la vez (PL1 o PL2). Supongamos que escogemos a PL1 asociado con x1 <= 3. En efecto, debemos resolver el siguiente problema:
Max z = 5×1 + 4×2 Sujeto a x1 + x2 <=5 10×1 + 6×2 <=45 x1 <=3 x1, x2 >= 0
Como se indico antes PL1 es el mismo que el PLO con la restricción adicional de acotamiento superior, x1 <= 3. así podemos aplicar el algoritmo primal de acotamiento superior para resolver el problema. Esto da la nueva solución óptima.
X1 = 3, x2 = 2 y z = 23
Como esta solución satisface el requisito de valor entero, se dice que el PL1 esta agotado, vació, lo que significa que el PL1 no puede producir ninguna solución mejor y no necesita investigarse mas a fondo.
Determinar una solución factible entera en una etapa temprana de los cálculos es crucial para incrementar la eficiencia del algoritmo R y A. Tal solución fija una cota inferior al valor objetivo optimo, que a su vez se puede usar para descartar automáticamente cualquier subproblema no explorado (como el PL2) que no dan mejor solución entera. En este ejemplo el PL1 produce la cota inferior z = 23. Esto significa que cualquier solución entera mejorada debe tener el valor de z mayor 23. Sin embargo, como la solución óptima del problema PLO tiene z = 23,75 y como todos los coeficientes de la función objetivo son enteros, se infiere que ningún subproblema que proceda del PLO puede producir un valor de z mejor que 23. En consecuencia, podemos descartar al PL2 porque no puede dar una mejor solución entera.
Del análisis anterior vemos que un subproblema esta agotado si no satisface una de las siguientes condiciones:
1. El subproblema da una solución factible entera
2. El subproblema no puede dar una mejor solución que la mejor cota inferior disponible (valor z) del problema (Un caso especial de esta condición es que el subproblema no tendrá ninguna solución factible en absoluto)
Pero si en nuestro ejemplo decidimos investigar PL2 primero la solución resultante será: x1 = 4, x2 = 0,8333, z = 23,3333. Como x2 no es entero el PL2 debe investigarse mas a fondo creándose el PL3 y PL4 y usando las respectivas ramas x2 >=0 y x2 >=1. Esto significa que Espacio PL3 = espacio PLO + (x1 >= 4) + (x2 <=0)
Espacio PL4 = espacio PLO + (x1 >= 4) + (x2 >=1)
En este momento para escoger tres subproblemas, el PL1, PL3 y PL4. (Observe nuevamente que estos tres subproblemas incluyen todas las soluciones enteras factibles del problema original PLE.) Si seleccionamos arbitrariamente el PL4, descubrimos que no tiene solución factible y por ello esta agotado. A continuación seleccionamos el PL3 para investigarlo. Su solución la da x1 = 4,5, x2 = 0 y z = 22,5. Como x1 = 4,5 no es entero, creamos dos subproblemas, el PL5 y PL6 del PL4, usando las restricciones x1 <= 4 y x1 >= 5 respectivamente.
Obtenemos entonces:
Espacio PL5 = espacio PLO + (x1 >= 4) + (x2 <=0) + (x1 <= 4) Espacio PL6 = espacio PLO + (x1 >= 4) + (x2 <=0) + (x1 >= 5)
Escogemos ahora el PL6, para investigarlo. Como el PL6 no tiene solución factible, esta agotado. A continuación escogemos el PL5 cuya solución óptima (x1 = 4, x2 = 0, z = 20) satisface el requisito de valor entero. Finalmente, hemos encontrado una solución entera que fija una cota inferior (z = 20) a la solución entra óptima. Desafortunadamente, esta cota inferior es “muy débil” y “muy tardía” para ser útil. El único nodo restante, PL1, queda agotado a continuación con z = 23, lo que fija una nueva cota inferior. Como no quedan ya subproblemas por investigar, la ultima cota inferior asocia la solución óptima del PLE con PL1.
La pero secuencia posible de solución, mostrada en al figura siguiente, se ha escogido intencionalmente para evidenciar una de las principales debilidades del algoritmo de R y A. Esto es, un subproblema especifico, ¿cómo seleccionamos a la variable de ramificación? Y, de entre todos los subproblemas no explorados, ¿Cuál debe investigarse a continuación? Observe que en la figura, encontramos una buena solución en el primer subproblema PL1, lo que nos permitió declarar agotado al PL2 sin ninguna investigación posterior. Básicamente, el problema PLE se resolvió investigando solo un subproblema. En el siguiente caso tuvimos que resolver seis subproblemas antes de alcanzar la optimidad. Este caso no es raro y puede encontrarse situaciones reales. Aunque existen muchos métodos para aumentar l habilidad del algoritmo de R y A de “ver adelante” y hacer una buena “conjetura”, respecto a sí una rama dada conducirá a una solución mejorada del PLE, no existe una teoría consistente que produzca resultados concretos uniformes para la solución del problema general de PLE.
Resumiremos ahora los pasos del algoritmo de R y A. Suponiendo un problema de maximización, definiremos z como la cota inferior de la solución entera óptima del problema. Hacemos inicialmente z = - ¥ e i = 0.
Paso 1: Agotamiento y ramificación. Seleccione PLi como el próximo subproblema por investigarse. Resolvemos el PLi y trataremos de agotarlo usando las condiciones apropiadas. (a) Si el PLi se declara agotado (solución inferior, infactible o entera), ponga al día la cota inferior z si se encuentra una mejor solución del PLE; si no es así, seleccione un nuevo
subproblema i y repita el paso 1. Si todos los subproblemas se han investigado, la solución óptima del PLE esta asociada con la ultima cota inferior z en caso de que exista, si no es así (b) Si el PLi no esta agotado, siga con el paso 2 para efectuar la ramificación del PLi.
Paso 2: Ramificación. Seleccione una de las variables xj cuyo valor optimo en la solución del PLi no satisfaga la restricción del valor entero. Elimine la región creando dos subproblemas PL que correspondan a las dos siguientes restricciones mutuamente excluyentes, vuelva al paso 1.