CO-5423 (F05) 12/10/2005 18 Algoritmos de “Branch and Bound” El nombre viene de el proceso de usar un árbol donde se ramifica para examinar subregiones (y sus relajaciones) de la región factible y cotas para mantener el crecimiento del árbol bajo control y lograr optimalidad (ǫ). Es el método general más efectivo, el que aparece en todos los paquetes comerciales. La idea es usar una forma elaborada de la estrategia de relajación-restricción. Las restricciones se logran a través de la ramificación y las relajaciones (en conjunto) producen cotas superiores sobre el valor óptimo. Una caracterı́stica fundamental de estas restricciones es que producen tı́picamente relajaciones no convexas de la región factible (a diferencia del método de planos cortantes). Regiones divididas en pedazos que deben ser analizadas separadamente. Para manejar esta situación necesitamos un simple principio de descomposición. Principio de descomposición. Teorema 1 Sea f una función de valores reales definida en S ⊆ Rn. Consideremos el problema: (P) maximizar f(x) s.a. x ∈ S Supongamos que S = [ Sj, con J finito, no vacı́o. j∈J Sea z∗j el valor óptimo de (Pj) maximizar f(x) s.a. x ∈ Sj (donde suponemos que z∗j = +∞ si Pj es no acotado y z∗j = −∞ si Pj es no factible) ENTONCES El valor óptimo de P es z∗ = máx{z∗j }. Además, si k ∈ J y z∗k = z∗ , entonces cualquier solución j∈J óptima de Pk es solución óptima de P. CO-5423 (F05) 12/10/2005 19 Prueba. Sea z∗k = máx{z∗j } j∈J Casos: 1. a) z∗k = +∞ Esto ocurre si y sólo si existe j en J tal que f es no acotada superiormente en Sj, es decir, si y sólo si P es no acotado. b) z∗k = −∞ Esto ocurre si y sólo si todos los Sj = ∅, es decir, si y sólo si S = ∅. c) z∗k es finito. En este caso existe xk ∈ Sk tal que f(xk) = z∗k. Sea x ∈ S, entonces x ∈ Sj para algún j ∈ J. En consecuencia f(x) ≤ z∗j ≤ z∗k = f(xk), lo cual demuestra la optimalidad de xk en todo S. Modificación útil del principio de descomposición. En vez de considerar los valores óptimos sobre los Pj se consideran cotas superiores sobre ellos. El teorema queda enunciado ası́: Teorema 2 Sea f una función de valores reales definida en S ⊆ Rn. Consideremos el problema: (P) maximizar f(x) s.a. x ∈ S Supongamos que S = [ Sj, con J finito, no vacı́o. j∈J Sea zj una cota superior sobre el valor óptimo de (Pj) maximizar f(x) s.a. x ∈ Sj CO-5423 (F05) 12/10/2005 20 ENTONCES Si zk = máx{zj}, entonces zk es una cota superior sobre el valor óptimo de P. Si además zk = z∗k, j∈J entonces z∗k es el valor óptimo de P y cualquier solución óptima de Pk es solución óptima de P. Prueba. Como zj ≥ z∗j , ∀j ∈ J, se tiene que zk = máx{zj} ≥ máx{z∗j } = z∗ y se tiene la primera parte. j∈J Para la segunda parte se tiene z ≥ ∗ z∗k j∈J = zk ≥ z , y por lo tanto z∗k = z∗ . ∗ Por último, cualquier solución óptima de Pk tiene valor objetivo z∗ y como Sk ⊆ S, dicha solución está en S. Listo. (En el caso de programación entera, si la RL tiene solución entera se tiene zk = z∗k.) Ejercicio 1 (Generalización) Si zk + ǫ ≥ máx{zj} j∈J y zk = z∗k, entonces una solución óptima de Pk es una solución ǫ-optimal de P. La estrategia puede ser llevada a cabo de varias formas, pero la más exitosa ha sido aquella basada en PL, es decir que resuelve los subproblemas que conforman las relajaciones sucesivas usando programación lineal. A continuación ilustramos el método que estudiaremos (basado en PL) con un ejemplo. Ilustración de B+B vı́a PL para PE Consideremos el problema (de knapsack): máx 6x1 + 10x2 (P) s.a. 2x1 + 3x2 ≤ 7 x1, x2 ≥ 0 enteras e0 la relajación lineal y T0 su región factible. Sea S0 la región factible del problema, sea P CO-5423 (F05) 12/10/2005 21 Iteración 1: e0 (lo haremos gráficamente). Se resuelve la relajación inicial P x2 Solución óptima ( ) 0, 73 2 1 T0 0 1 2 3 (72 ,0 ) x1 Para representar el progreso del algoritmo llevaremos un árbol (que representa ramificaciones y subproblemas) y un cuadro de cotas. En la primera iteración el árbol consiste de un solo nodo 0 que e0. En este punto el conjunto J = {0} (del principio de descomposición). representa P y P 0 x 0 = (0, 73 ) ~ z0* = 23,3 Relajación T0 z z − ∞ 23,3 ~ Valor óptimo de P0 Donde la cota inferior es −∞ porque no hay todavı́a una sol. factible. No se satisface COR y entonces hay que ramificar. La única variable con valor no entero es x2, entonces añadimos la restricción válida x2 ≤ 2 ∨ x2 ≥ 3. Sea K0 = {(x1, x2) | x2 ≤ 2 ∨ x2 ≥ 3}, entonces la región factible de la nueva relajación es T0 ∩ K0 (más “fuerte” que T0 pero no es convexa). Pero T0 ∩ K0 = T1 ∪ T2 donde T1 = T0 ∩ {(x1, x2) | x2 ≤ 2} y T2 = T0 ∩ {(x1, x2) | x2 ≥ 3} . Entonces lo que se hace es usar el principio de descomposición con T1 y T2 relajaciones de S1 y S2, respectivamente, y como no hemos descartado ninguna solución entera se tiene S = S1 ∪ S2 (J = {1, 2}). Hemos ramificado en el nodo 0, en la variable x2. CO-5423 (F05) 12/10/2005 22 e1: Resolvemos gráficamente P T2 = ∅ x2 Solución óptima ( 21 ,2) 2 1 T1 0 1 2 3 ( 72 ,0) x1 e2 es no factible. Mientras que P Las cotas y el árbol quedan: 0 x2 ≤ 2 1 x2 ≥ 3 x1 = ( 12 ,2) ~ z1* = 23 Relajación T1 ∪ T2 2 z z − ∞ 23 ~ z2* = −∞ (Todavı́a no sabemos si P es factible) Por el principio de descomposición, e z∗1 = 23 es el valor óptimo de la función sobre T0 ∩ K0. Sin embargo todavı́a no tenemos COR, entonces hay que ramificar en el nodo 1, en la variable x1. Añadimos la restricción válida x1 ≤ 0 ∨ x1 ≥ 1. Sea K1 = {(x1, x2) | x1 ≤ 0 ∨ x1 ≥ 1}, entonces la región factible de la nueva relajación es T1 ∩ K1. Pero T1 ∩ K1 = T3 ∪ T4 donde T3 = T1∩{(x1, x2) | x1 ≤ 0} y T4 = T1∩{(x1, x2) | x1 ≥ 1} . Ahora S = S3∪S4∪S2 con relajaciones T3, T4 y T2, respectivamente (J = {3, 4, 2}). CO-5423 (F05) 12/10/2005 23 e3 y P e4: Resolvemos gráficamente P x2 Sol. Ópt. Sol. Ópt. (2,0 ) (1, 53 ) T3 1 T4 0 1 2 3 (72 ,0 ) x1 (esta simultaneidad es sólo para simplificar la explicación, puede haber otras estrategias de crecimiento de los árboles). Las cotas y el árbol quedan: 0 x2 ≤ 2 x2 ≥ 3 1 x1 ≤ 0 2 ~ z2* = −∞ x1 ≥ 1 Relajación T3 ∪ T4 ∪ T2 3 x 3 = (0,2 ) z3* = 20 4 z z ) 20 22,6 x 4 = (1, 53 ) ~z * = 22,6) 4 Aun no tenemos COR. Ramificamos en el nodo 4, en la variable x1. K4 = {(x1, x2) | x2 ≤ 1 ∨ x2 ≥ 2}, entonces la región factible de la nueva relajación es T4 ∩ K4. Pero T4 ∩ K4 = T5 ∪ T6 donde T5 = T4 ∩ {(x1, x2) | x2 ≤ 1} y T6 = T4 ∩ {(x1, x2) | x2 ≥ 2} . Ahora S = S3 ∪ S5 ∪ S6 ∪ S2 con relajaciones T3, T5, T6 y T2, respectivamente (J = {3, 5, 6, 2}). CO-5423 (F05) 12/10/2005 e5 y P e6: Resolvemos gráficamente P x2 T6 = ∅ (0, 73 ) 2 Sol. Ópt. (2,1) 1 T5 0 1 2 3 (72 ,0 ) x1 Las cotas y el árbol quedan: 0 x2 ≤ 2 x2 ≥ 3 1 x1 ≤ 0 3 ~ z2* = −∞ 2 x1 ≥ 1 Relajación x 3 = (0,2 ) T3 ∪ T5 ∪ T6 ∪ T2 4 z3* = 20 x2 ≤ 1 5 x 5 = (2,1) z5* = 22 Y hemos llegado al fin del algoritmo. x2 ≥ 2 6 ~ z6* = −∞ z z 22 22 24