Introducción Relajación Lineal Métodos de Plano Cortante Cortes de Gomory Algoritmo Branch & Bounds Programación Entera Nelson Devia C. IN3701 - Modelamiento y Optimización Departamento de Ingenierı́a Industrial Universidad de Chile 2011 Basado en Bertsimas, D., Tsitsiklis, J. (1997) “Introduction to Linear Optimization” Capı́tulos 10 y 11 Nelson Devia C. Programación Entera Introducción Relajación Lineal Métodos de Plano Cortante Cortes de Gomory Algoritmo Branch & Bounds Contenidos 1 Introducción 2 Relajación Lineal 3 Métodos de Plano Cortante 4 Cortes de Gomory 5 Algoritmo Branch & Bounds Nelson Devia C. Programación Entera Introducción Relajación Lineal Métodos de Plano Cortante Cortes de Gomory Algoritmo Branch & Bounds Introducción Los problemas de programación lineal entera (IP1 ) son equivalentes a los problemas de programación lineal (LP2 ), excepto que algunas de las variables se restringen a tomar sólo valores enteros. En general, se tiene el siguiente problema de programación mixta(MIP3 ): (MIP) mı́n z = c 0 x + d 0 y Ax + By = b y ≥ 0 x ∈ Zn+ Si no hay variables continuas, entonces se tiene un problema de programación entera: (IP) mı́n z = c 0 x 1 2 3 Ax = b x ∈ Zn+ Integer Programming Linear Programming Mixed Integer Programming Nelson Devia C. Programación Entera Introducción Relajación Lineal Métodos de Plano Cortante Cortes de Gomory Algoritmo Branch & Bounds Introducción Las variables binarias son aquéllas que sólo pueden tomar los valores 0 ó 1. Claramente, las variables binarias también son enteras, ya que {0, 1} ⊂ Z Si todas las variables son binarias se tiene un problema de programación entera binaria: mı́n z = c 0 x Ax = b x ∈ {0, 1}n El caso más general es cuando se tienen todo tipo de variables: mı́n z = c 0 x + d 0 y + e 0 z Ax + By + Cz = b x ≥ 0 y ∈ Zn+ z ∈ {0, 1}m Es importante destacar que para que un problema sea entero las variables deben ser enteras, no ası́ el valor de la función objetivo. Nelson Devia C. Programación Entera Introducción Relajación Lineal Métodos de Plano Cortante Cortes de Gomory Algoritmo Branch & Bounds Introducción Los problemas enteros y mixtos son más difı́ciles de resolver que los problemas lineales, por varias razones: No se tiene una región factible. El conjunto S de soluciones factibles es no convexo. El óptimo del problema entero no se encuentra necesariamente en un “vértice” de S. Ejemplo de Problema Entero en R2 : máx x1 x1 + x2 ≤ 4 x1 − x2 ≤ 3 x1 , x2 ∈ Z+ Nelson Devia C. Programación Entera Introducción Relajación Lineal Métodos de Plano Cortante Cortes de Gomory Algoritmo Branch & Bounds Introducción Los problemas enteros y mixtos son más difı́ciles de resolver que los problemas lineales, por varias razones: No se tiene una región factible. El conjunto S de soluciones factibles es no convexo. El óptimo del problema entero no se encuentra necesariamente en un “vértice” de S. Ejemplo de Problema Mixto en R2 : máx x1 x1 + x2 ≤ 4 x1 − x2 ≤ 3 x1 ≥ 0 x2 ∈ Z+ Nelson Devia C. Programación Entera Introducción Relajación Lineal Métodos de Plano Cortante Cortes de Gomory Algoritmo Branch & Bounds Relajación Lineal La relajación lineal de un problema entero (o mixto) corresponde al mismo problema, pero en el que se les permite a todas las variables ser continuas. Ejemplo: (P) máx z = x1 (PR) máx z = x1 x1 + x2 ≤ 4 x1 + x2 ≤ 4 x1 − x2 ≤ 3 x1 − x2 ≤ 3 x1 , x2 ∈ Z+ x1 , x2 ≥ 0 ⇒ Relajación Lineal Nelson Devia C. Programación Entera Introducción Relajación Lineal Métodos de Plano Cortante Cortes de Gomory Algoritmo Branch & Bounds Relajación Lineal En toda relajación, se tiene que el conjunto de soluciones factibles es más grande que el del problema original. Si llamamos SP a la región factible del problema entero y SPR a la del problema relajado, siempre se tiene que: SP ⊆ SPR Por esta razón, el óptimo del problema relajado siempre será mejor o igual al óptimo del problema entero. En el ejemplo, como se trataba de un problema de maximización: ∗ zPR ≥ zP∗ ∗ Concretamente: zPR = 3,5, mientras que zP∗ = 3. ∗ Notar que la solución óptima de (PR), xPR = 3, 5 el problema (P), pues no es entera. 0,5 es infactible en ∗ En general, el óptimo del problema relajado (zPR ) sirve como una cota para el problema original. Nelson Devia C. Programación Entera Introducción Relajación Lineal Métodos de Plano Cortante Cortes de Gomory Algoritmo Branch & Bounds Métodos de Plano Cortante Como no existen algoritmos eficientes para resolver problemas enteros, se plantean métodos que buscan el óptimo resolviendo una serie de problemas lineales. Ejemplo: Consideremos el problema (P) y su relajación (PR): (P) mı́n c 0 x Ax (PR) mı́n c 0 x = b x ∈ Z+ Un algoritmo de plano cortante genérico es el siguiente: Ax = b x ≥ 0 1. Resolver la relajación lineal (PR). Sea x ∗ la solución óptima. 2. Si x ∗ ∈ Z+ terminar, x ∗ es el óptimo de (P). 3. Si no, agregar una restricción a (PR), tal que sea satisfecha por toda solución entera de (P), pero no por x ∗ . Volver al paso 1. Nota: La forma en que se eligen estas restricciones determina la eficiencia del algoritmo. Nelson Devia C. Programación Entera Introducción Relajación Lineal Métodos de Plano Cortante Cortes de Gomory Algoritmo Branch & Bounds Métodos de Plano Cortante (P) máx z = 3x1 − x2 Ejemplo: x1 + x2 ≤ 4 x1 − x2 ≤ 3 x1 , x2 ∈ (PR) máx z = 3x1 − x2 x1 + x2 ≤ 4 x1 − x2 ≤ 3 x1 , x2 ≥ 0 Z+ (PR1 ) máx z = 3x1 − x2 ⇒ Plano Cortante Nelson Devia C. Programación Entera x1 + x2 ≤ 4 x1 − x2 ≤ 3 7x1 − x2 ≤ 21 x1 , x2 ≥ 0 Introducción Relajación Lineal Métodos de Plano Cortante Cortes de Gomory Algoritmo Branch & Bounds Cortes de Gomory Uno de los primeros algoritmos para problemas enteros lo propuso Gomory (1958), usando información que entrega Simplex: Sea (PR) un problema lineal en forma estándar que representa la relajación de un problema entero: (PR) mı́n z = c 0 x Ax = b x ≥ 0 De Simplex sabemos que, dada una base AB , se tiene que: xB + A−1 B AN xN xB + AN xN = = A−1 B b b Sea aij = (Aj )i y supongamos que b i ∈ / Z. Se tiene que: X xi + aij xj = b i j ∈B / Nelson Devia C. Programación Entera Introducción Relajación Lineal Métodos de Plano Cortante Cortes de Gomory Algoritmo Branch & Bounds Cortes de Gomory Denotamos bpc a la parte entera inferior de p. Como se tiene que xj ≥ 0 ∀j, se tiene: X X xi + baij cxj ≤ xi + aij xj j ∈B / = bi j ∈B / Como los xj deben ser también enteros, el lado izquierdo de la desigualdad es entero, por lo que: X baij cxj ≤ bbi c xi + j∈B / Notar que esta desigualdad la satisfacen todas las soluciones enteras factibles en (PR), pero no por el óptimo x ∗ , ya que xi∗ = b i ∈ /Zy xj∗ = 0 ∀j ∈ / B. Nelson Devia C. Programación Entera Introducción Relajación Lineal Métodos de Plano Cortante Cortes de Gomory Algoritmo Branch & Bounds Cortes de Gomory Ejemplo: mı́n z = x1 − 2x2 (P) mı́n z = x1 − 2x2 −4x1 + 6x2 ≤ 9 x1 + x2 ≤ 4 x1 , x2 ∈ Z+ ⇒ Forma Estándar Nelson Devia C. −4x1 + 6x2 + x3 = 9 + x4 = 4 x1 , x2 , x3 , x4 ∈ Z+ x1 + x2 Programación Entera Introducción Relajación Lineal Métodos de Plano Cortante Cortes de Gomory Algoritmo Branch & Bounds Cortes de Gomory Ejemplo: El problema relajado es el siguiente: (PR) mı́n z = x1 − 2x2 −4x1 + 6x2 + x3 = 9 + x4 = 4 x1 , x2 , x3 , x4 ≥ 0 x1 + x2 El óptimo de este problema está dado por la base: xB = {x1 , x2 } y xN = {x3 , x4 }, donde: −4 6 1 0 9 AB = AN = b= 1 1 0 1 4 −1 −1 15 6 6 10 10 10 A−1 AN = 10 b = 10 1 4 1 4 25 B = 10 10 Nelson Devia C. 10 10 Programación Entera 10 Introducción Relajación Lineal Métodos de Plano Cortante Cortes de Gomory Algoritmo Branch & Bounds Cortes de Gomory Ejemplo: (PR) mı́n z = x1 − 2x2 −4x1 + 6x2 + x3 = 9 + x4 = 4 x1 , x2 , x3 , x4 ≥ 0 x1 + x2 Luego, xB∗ + AN xN∗ = b implica que: ∗ 15 ∗ −1 6 x x1 10 10 + · 3∗ = 10 1 4 25 x4 x2∗ 10 10 10 Con esto se tiene que: −1 ∗ x3 + 10 1 ∗ x2∗ + x3 + 10 x1∗ + Nelson Devia C. 6 ∗ 15 x4 = 10 10 4 ∗ 25 x4 = 10 10 Programación Entera Introducción Relajación Lineal Métodos de Plano Cortante Cortes de Gomory Algoritmo Branch & Bounds Cortes de Gomory Ejemplo: (PR) mı́n z = x1 − 2x2 −4x1 + 6x2 + x3 = 9 + x4 = 4 x1 , x2 , x3 , x4 ≥ 0 x1 + x2 Notar que se trata de las restricciones activas en el óptimo de (PR) Eligiendo cualquiera de las ecuaciones con lado derecho no entero, se tiene un corte de Gomory: −1 ∗ 6 15 x3 + x4∗ ≤ 10 10 10 1 4 25 x2∗ + x3∗ + x4∗ ≤ 10 10 10 x1∗ + Nelson Devia C. ⇒ x1∗ + (−1) · x3∗ + 0 · x4∗ ≤ 1 ⇒ x2∗ + 0 · x3∗ + 0 · x4∗ ≤ 2 Programación Entera ⇒ x∗1 − x∗3 ≤ 1 ⇒ x∗2 ≤ 2 Introducción Relajación Lineal Métodos de Plano Cortante Cortes de Gomory Algoritmo Branch & Bounds Cortes de Gomory Si se elige la primera en el ejemplo, se tiene: (PR1 ) mı́n z = x1 − 2x2 −4x1 + 6x2 + x3 x1 + x2 x1 + x4 = 9 = 4 + x5 = 1 x1 , x2 , x3 , x4 , x5 ≥ 0 − x3 Notar que en la región factible de (PR1 ) se “cortó” la solución óptima de (PR) sin eliminar ninguna de sus soluciones enteras factibles. ∗ 25 0 0 0 no satisface la nueva restricción. xPR = 15 10 10 Nelson Devia C. Programación Entera Introducción Relajación Lineal Métodos de Plano Cortante Cortes de Gomory Algoritmo Branch & Bounds Cortes de Gomory Si se elige la segunda en el ejemplo, se tiene: (P1 ) mı́n z = x1 − 2x2 −4x1 + 6x2 + x3 x1 + x2 x2 = 9 = 4 + x5 = 2 x1 , x2 , x3 , x4 , x5 ≥ 0 + x4 Notar que en la región factible de (PR1 ) se “cortó” la solución óptima de (PR) sin eliminar ninguna de sus soluciones enteras factibles. ∗ 25 0 0 0 no satisface la nueva restricción. xPR = 15 10 10 ∗ El óptimo de este nuevo problema es xPR = 34 2 0 54 0 1 Nelson Devia C. Programación Entera Introducción Relajación Lineal Métodos de Plano Cortante Cortes de Gomory Algoritmo Branch & Bounds Cortes de Gomory (PR1 ) mı́n z = x1 − 2x2 −4x1 + 6x2 + x3 x1 + x2 x2 + x4 = 9 = 4 + x5 = 2 x1 , x2 , x3 , x4 , x5 ≥ 0 Del mismo modo que en el caso anterior, se tiene que una de las restricciones activas en el óptimo de (PR1 ) es: 1 6 3 x1∗ − · x3∗ + · x5∗ = 4 4 4 Luego: x1∗ − 1 6 3 x3∗ + x5∗ ≤ 4 4 4 ⇒ x1∗ + (−1)x3∗ + 1x5∗ ≤ 0 ⇒ x∗1 − x∗3 + x∗5 ≤ 0 Reemplazando x3∗ y x5∗ con las demás restricciones, se tiene que: −3x∗1 + 5x∗2 ≤ 7 Nelson Devia C. Programación Entera Introducción Relajación Lineal Métodos de Plano Cortante Cortes de Gomory Algoritmo Branch & Bounds Cortes de Gomory Agregando esta nueva restricción a (PR1 ) se tiene el problema (PR2 ): (PR2 ) mı́n z = x1 − 2x2 −4x1 + 6x2 + x3 x1 + x2 + x4 x2 + x5 = 9 = 4 = 2 + x6 = 7 x1 , x2 , x3 , x4 , x5 , x6 ≥ 0 −3x1 + 5x2 El óptimo de este problema se alcanza para: ∗ xPR = 1 2 2 1 1 0 0 ∈ Z6 Como la solución de este problema es entera, tenemos una solución óptima del problema original (P). Nelson Devia C. Programación Entera Introducción Relajación Lineal Métodos de Plano Cortante Cortes de Gomory Algoritmo Branch & Bounds Algoritmo Branch & Bounds (B&B) El algoritmo Branch & Bounds (Ramificación y Acotamiento) se basa en la división o ramificación de la relajación lineal del problema entero, con el objetivo de encontrar cotas al valor óptimo. Consideremos el problema (P) y su relajación (PR): (P) mı́n zP = c 0 x Ax (PR) mı́n zPR = c 0 x = b Ax = b x ∈ Z+ x ≥ 0 Una cota inferior al óptimo del problema entero (zP∗ ) es el óptimo de su ∗ relajación lineal (zPR ). (Cota superior si (P) fuera de maximización) ∗ zP∗ ≥ zPR Una cota superior al óptimo del problema entero (zP∗ ) es el valor z de cualquier solución factible en (P). (Cota inferior si (P) fuera de maximización) zP∗ ≤ z La mejor solución factible Z encontrada hasta el momento se conoce como incumbente. Nelson Devia C. Programación Entera Introducción Relajación Lineal Métodos de Plano Cortante Cortes de Gomory Algoritmo Branch & Bounds Algoritmo Branch & Bounds (B&B) Un algoritmo de ramificación y acotamiento genérico es el siguiente: Inicialización: Incumbente: Z = +∞ Problema activo: Pi = PR 1. Elegir problema activo Pi aún sin resolver. Si no hay, terminar: el óptimo del problema entero es el incumbente Z . 2. Resolver el problema activo (Pi ). 3. Si Pi es infactible, volver a 1. 4. Sea x ∗ la solución óptima de (Pi ) y cx ∗ su valor óptimo. Si cx ∗ > Z , volver a 1. 5. Si x ∗ ∈ Z+ actualizar el incumbente Z = cx ∗ y volver a 1. 6. Si no, elegir xi∗ ∈ / Z+ . Activar 2 nuevos problemas, agregando una de las siguientes restricciones a cada uno: a. (PR1 ) = (PR) ∪ {xi ≤ bxi∗ c} b. (PR2 ) = (PR) ∪ {xi ≥ dxi∗ e} Volver a 1. Nelson Devia C. Programación Entera Introducción Relajación Lineal Métodos de Plano Cortante Cortes de Gomory Algoritmo Branch & Bounds Algoritmo Branch & Bounds (B&B) En otras palabras, en cada iteración en la que se llega a una solución no entera, se generan 2 cortes que eliminan el intervalo no entero en el que se encontraba alguna de las variables. Notar que la ramificación de B&B tiene 3 criterios de detención: 1. Se llega a un problema infactible. 2. Se llega a una solución entera. 3. El valor óptimo encontrado es peor que el incumbente. Ejemplo: (P) mı́n z = x1 − 2x2 −4x1 + 6x2 ≤ x1 + x2 ≤ 4 x1 , x2 ∈ Z+ Nelson Devia C. 9 Programación Entera Introducción Relajación Lineal Métodos de Plano Cortante Cortes de Gomory Algoritmo Branch & Bounds Algoritmo Branch & Bounds (B&B) Resolvemos la relajación lineal de (P): (P0 ) mı́n z = x1 − 2x2 −4x1 + 6x2 ≤ 9 x1 + x2 ≤ 4 x1 , x2 ≥ 0 Se obtiene que: xP∗0 = 1,5 2,5 zP0 = −3,5 Elegimos una variable no entera para ramificar: x1 Nelson Devia C. Programación Entera Introducción Relajación Lineal Métodos de Plano Cortante Cortes de Gomory Algoritmo Branch & Bounds Algoritmo Branch & Bounds (B&B) Resolvemos la relajación lineal de (P): (P0 ) mı́n z = x1 − 2x2 −4x1 + 6x2 ≤ 9 x1 + x2 ≤ 4 x1 , x2 ≥ 0 Se obtiene que: xP∗0 = 1,5 2,5 zP0 = −3,5 Elegimos una variable no entera para ramificar: x1 Nelson Devia C. Programación Entera Introducción Relajación Lineal Métodos de Plano Cortante Cortes de Gomory Algoritmo Branch & Bounds Algoritmo Branch & Bounds (B&B) Resolvemos (P1 ): (P1 ) mı́n z = x1 − 2x2 −4x1 + 6x2 ≤ 9 x1 + x2 ≤ 4 x1 ≤ 1 ≥ 0 x1 , x2 Se obtiene que: xP∗1 = 1 2,16 zP1 = −3.3 Elegimos una variable no entera para ramificar: x2 Nelson Devia C. Programación Entera Introducción Relajación Lineal Métodos de Plano Cortante Cortes de Gomory Algoritmo Branch & Bounds Algoritmo Branch & Bounds (B&B) Resolvemos (P1 ): (P1 ) mı́n z = x1 − 2x2 −4x1 + 6x2 ≤ 9 x1 + x2 ≤ 4 x1 ≤ 1 ≥ 0 x1 , x2 Se obtiene que: xP∗1 = 1 2,16 zP1 = −3.3 Elegimos una variable no entera para ramificar: x2 Nelson Devia C. Programación Entera Introducción Relajación Lineal Métodos de Plano Cortante Cortes de Gomory Algoritmo Branch & Bounds Algoritmo Branch & Bounds (B&B) Resolvemos (P3 ): (P3 ) mı́n z = x1 − 2x2 −4x1 + 6x2 ≤ 9 x1 + x2 ≤ 4 x1 ≤ 1 x2 ≤ 2 x1 , x2 ≥ 0 Se obtiene que: xP∗3 = 0,75 2 zP3 = −3,25 Elegimos una variable no entera para ramificar: x1 Nelson Devia C. Programación Entera Introducción Relajación Lineal Métodos de Plano Cortante Cortes de Gomory Algoritmo Branch & Bounds Algoritmo Branch & Bounds (B&B) Resolvemos (P3 ): (P3 ) mı́n z = x1 − 2x2 −4x1 + 6x2 ≤ 9 x1 + x2 ≤ 4 x1 ≤ 1 x2 ≤ 2 x1 , x2 ≥ 0 Se obtiene que: xP∗3 = 0,75 2 zP3 = −3,25 Elegimos una variable no entera para ramificar: x1 Nelson Devia C. Programación Entera Introducción Relajación Lineal Métodos de Plano Cortante Cortes de Gomory Algoritmo Branch & Bounds Algoritmo Branch & Bounds (B&B) Resolvemos (P5 ): (P5 ) mı́n z = x1 − 2x2 −4x1 + 6x2 ≤ 9 x1 + x2 ≤ 4 x1 ≤ 1 ≤ 2 ≤ 0 ≥ 0 x2 x1 x1 , x2 Se obtiene que: xP∗5 = 0 1,5 zP5 = −3 Elegimos una variable no entera para ramificar: x2 Nelson Devia C. Programación Entera Introducción Relajación Lineal Métodos de Plano Cortante Cortes de Gomory Algoritmo Branch & Bounds Algoritmo Branch & Bounds (B&B) Resolvemos (P5 ): (P5 ) mı́n z = x1 − 2x2 −4x1 + 6x2 ≤ 9 x1 + x2 ≤ 4 x1 ≤ 1 ≤ 2 ≤ 0 ≥ 0 x2 x1 x1 , x2 Se obtiene que: xP∗5 = 0 1,5 zP5 = −3 Elegimos una variable no entera para ramificar: x2 Nelson Devia C. Programación Entera Introducción Relajación Lineal Métodos de Plano Cortante Cortes de Gomory Algoritmo Branch & Bounds Algoritmo Branch & Bounds (B&B) Resolvemos (P7 ): (P7 ) mı́n z = x1 − 2x2 −4x1 + 6x2 ≤ 9 x1 + x2 ≤ 4 x1 ≤ 1 ≤ 2 ≤ 0 x2 ≤ 1 x1 , x2 ≥ 0 x2 x1 Se obtiene que: xP∗7 = 0 1 zP7 = −2 Como se tiene que xP∗7 ∈ Z2+ se detiene la ramificación y se actualiza el incumbente Z = −2. Nelson Devia C. Programación Entera Introducción Relajación Lineal Métodos de Plano Cortante Cortes de Gomory Algoritmo Branch & Bounds Algoritmo Branch & Bounds (B&B) Resolvemos (P7 ): (P7 ) mı́n z = x1 − 2x2 −4x1 + 6x2 ≤ 9 x1 + x2 ≤ 4 x1 ≤ 1 ≤ 2 ≤ 0 x2 ≤ 1 x1 , x2 ≥ 0 x2 x1 Se obtiene que: xP∗7 = 0 1 zP7 = −2 Como se tiene que xP∗7 ∈ Z2+ se detiene la ramificación y se actualiza el incumbente Z = −2. Nelson Devia C. Programación Entera Introducción Relajación Lineal Métodos de Plano Cortante Cortes de Gomory Algoritmo Branch & Bounds Algoritmo Branch & Bounds (B&B) Resolvemos (P8 ): (P8 ) mı́n z = x1 − 2x2 −4x1 + 6x2 ≤ 9 x1 + x2 ≤ 4 x1 ≤ 1 ≤ 2 ≤ 0 x2 ≥ 2 x1 , x2 ≥ 0 x2 x1 Se obtiene un problema infactible, por lo que se detiene la ramificación. Nelson Devia C. Programación Entera Introducción Relajación Lineal Métodos de Plano Cortante Cortes de Gomory Algoritmo Branch & Bounds Algoritmo Branch & Bounds (B&B) Resolvemos (P8 ): (P8 ) mı́n z = x1 − 2x2 −4x1 + 6x2 ≤ 9 x1 + x2 ≤ 4 x1 ≤ 1 ≤ 2 ≤ 0 x2 ≥ 2 x1 , x2 ≥ 0 x2 x1 Se obtiene un problema infactible, por lo que se detiene la ramificación. Nelson Devia C. Programación Entera Introducción Relajación Lineal Métodos de Plano Cortante Cortes de Gomory Algoritmo Branch & Bounds Algoritmo Branch & Bounds (B&B) Resolvemos (P6 ): (P6 ) mı́n z = x1 − 2x2 −4x1 + 6x2 ≤ 9 x1 + x2 ≤ 4 x1 ≤ 1 ≤ 2 ≥ 1 ≥ 0 x2 x1 x1 , x2 Se obtiene que: xP∗6 = 1 2 zP6 = −3 Como se tiene que xP∗6 ∈ Z2+ se detiene la ramificación y se actualiza el incumbente Z = −3. Nelson Devia C. Programación Entera Introducción Relajación Lineal Métodos de Plano Cortante Cortes de Gomory Algoritmo Branch & Bounds Algoritmo Branch & Bounds (B&B) Resolvemos (P6 ): (P6 ) mı́n z = x1 − 2x2 −4x1 + 6x2 ≤ 9 x1 + x2 ≤ 4 x1 ≤ 1 ≤ 2 ≥ 1 ≥ 0 x2 x1 x1 , x2 Se obtiene que: xP∗6 = 1 2 zP6 = −3 Como se tiene que xP∗6 ∈ Z2+ se detiene la ramificación y se actualiza el incumbente Z = −3. Nelson Devia C. Programación Entera Introducción Relajación Lineal Métodos de Plano Cortante Cortes de Gomory Algoritmo Branch & Bounds Algoritmo Branch & Bounds (B&B) Resolvemos (P4 ): (P4 ) mı́n z = x1 − 2x2 −4x1 + 6x2 ≤ 9 x1 + x2 ≤ 4 x1 ≤ 1 x2 ≥ 3 x1 , x2 ≥ 0 Se obtiene un problema infactible, por lo que se detiene la ramificación. Nelson Devia C. Programación Entera Introducción Relajación Lineal Métodos de Plano Cortante Cortes de Gomory Algoritmo Branch & Bounds Algoritmo Branch & Bounds (B&B) Resolvemos (P4 ): (P4 ) mı́n z = x1 − 2x2 −4x1 + 6x2 ≤ 9 x1 + x2 ≤ 4 x1 ≤ 1 x2 ≥ 3 x1 , x2 ≥ 0 Se obtiene un problema infactible, por lo que se detiene la ramificación. Nelson Devia C. Programación Entera Introducción Relajación Lineal Métodos de Plano Cortante Cortes de Gomory Algoritmo Branch & Bounds Algoritmo Branch & Bounds (B&B) Resolvemos (P2 ): (P2 ) mı́n z = x1 − 2x2 −4x1 + 6x2 ≤ 9 x1 + x2 ≤ 4 x1 ≥ 2 ≥ 0 x1 , x2 Se obtiene que: xP∗2 = 2 2 zP2 = −2 Como se tiene que zP∗2 > Z = −3 se detiene la ramificación, ya que cualquier subproblema de (P2 ) tendrá una solución mayor o igual a zP∗2 . Nelson Devia C. Programación Entera Introducción Relajación Lineal Métodos de Plano Cortante Cortes de Gomory Algoritmo Branch & Bounds Algoritmo Branch & Bounds (B&B) Resolvemos (P2 ): (P2 ) mı́n z = x1 − 2x2 −4x1 + 6x2 ≤ 9 x1 + x2 ≤ 4 x1 ≥ 2 ≥ 0 x1 , x2 Se obtiene que: xP∗2 = 2 2 zP2 = −2 Como se tiene que zP∗2 > Z = −3 se detiene la ramificación, ya que cualquier subproblema de (P2 ) tendrá una solución mayor o igual a zP∗2 . Nelson Devia C. Programación Entera Introducción Relajación Lineal Métodos de Plano Cortante Cortes de Gomory Algoritmo Branch & Bounds Algoritmo Branch & Bounds (B&B) Como no quedan problemas por resolver se tiene que el óptimo de (P) es el incumbente Z = −3, generado por el nodo P6 : x∗ = 1 2 z ∗ = −3 Nelson Devia C. Programación Entera Introducción Relajación Lineal Métodos de Plano Cortante Cortes de Gomory Algoritmo Branch & Bounds Algoritmo Branch & Bounds (B&B) Como no quedan problemas por resolver se tiene que el óptimo de (P) es el incumbente Z = −3, generado por el nodo P6 : x∗ = 1 2 z ∗ = −3 Nelson Devia C. Programación Entera Introducción Relajación Lineal Métodos de Plano Cortante Cortes de Gomory Algoritmo Branch & Bounds Dudas y/o Comentarios a: ndevia@ing.uchile.cl Nelson Devia C. Programación Entera Introducción Relajación Lineal Métodos de Plano Cortante Cortes de Gomory Algoritmo Branch & Bounds Nelson Devia C. Programación Entera