Está en la página 1de 45

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
Ax = b
x ∈ Zn+
1
Integer Programming
2
Linear Programming
3
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 0,5 es infactible en
el problema (P), pues no es entera.

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 (PR) mı́n c 0 x


Ax = b Ax = b
x ∈ Z+ x ≥ 0
Un algoritmo de plano cortante genérico es el siguiente:
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


Ejemplo: (P) máx z = 3x1 − x2
x1 + x2 ≤ 4
x1 − x2 ≤ 3
x1 , x2 ∈ Z+
(PR1 ) máx z = 3x1 − x2
(PR) máx z = 3x1 − x2
x1 + x2 ≤ 4
x1 + x2 ≤ 4
x1 − x2 ≤ 3
x1 − x2 ≤ 3
7x1 − x2 ≤ 21
x1 , x2 ≥ 0
x1 , x2 ≥ 0

⇒Plano
Cortante

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
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 = A−1
B b
xB + AN xN = 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 = bi
j ∈B
/ j ∈B
/

Como los xj deben ser también enteros, el lado izquierdo de la


desigualdad es entero, por lo que:
X
xi + baij cxj ≤ bbi c
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
x1 + x2


9
4 ⇒ Forma
−4x1 + 6x2 + x3
x1 + x2 + x4
=
=
9
4
Estándar
x1 , x2 ∈ Z+ x1 , x2 , x3 , x4 ∈ Z+

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: El problema relajado es el siguiente:

(PR) mı́n z = x1 − 2x2


−4x1 + 6x2 + x3 = 9
x1 + x2 + x4 = 4
x1 , x2 , x3 , x4 ≥ 0

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 6
  −1 6
  15 
A−1
B =
10
1
10
4 AN = 10 1
10
4 b = 10 25
10 10 10 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
Ejemplo:

(PR) mı́n z = x1 − 2x2


−4x1 + 6x2 + x3 = 9
x1 + x2 + x4 = 4
x1 , x2 , x3 , x4 ≥ 0

Luego, xB∗ + AN xN∗ = b implica que:


 ∗   −1 6
  ∗   15 
x1 x
+ 10 10 · 3∗ = 10
x2∗ 1
10
4
10
x4 25
10
Con esto se tiene que:
−1 ∗ 6 ∗ 15
x1∗ + x3 + x4 =
10 10 10
1 ∗ 4 ∗ 25
x2∗ + x3 + x4 =
10 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
Ejemplo:

(PR) mı́n z = x1 − 2x2


−4x1 + 6x2 + x3 = 9
x1 + x2 + x4 = 4
x1 , x2 , x3 , x4 ≥ 0

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
x1∗ + x3 + x4∗ ≤ ⇒ x1∗ + (−1) · x3∗ + 0 · x4∗ ≤ 1 ⇒ x∗1 − x∗3 ≤ 1
10 10 10
     
1 4 25
x2∗ + x3∗ + x4∗ ≤ ⇒ x2∗ + 0 · x3∗ + 0 · x4∗ ≤ 2 ⇒ x∗2 ≤ 2
10 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 primera en el ejemplo, se tiene:

(PR1 ) mı́n z = x1 − 2x2


−4x1 + 6x2 + x3 = 9
x1 + x2 + x4 = 4
x1 − x3 + x5 = 1
x1 , x2 , x3 , x4 , x5 ≥ 0

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.

= 15 25

xPR 10 10
0 0 0 no satisface la nueva restricción.

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 = 9
x1 + x2 + x4 = 4
x2 + x5 = 2
x1 , x2 , x3 , x4 , x5 ≥ 0

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.

= 15 25

xPR 10 10
0 0 0 no satisface la nueva restricción.

= 34 2 0 54 0

El óptimo de este nuevo problema es xPR 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 = 9
x1 + x2 + x4 = 4
x2 + 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:
     
1 6 3
x1∗ − x3∗ + x5∗ ≤ ⇒ x1∗ + (−1)x3∗ + 1x5∗ ≤ 0 ⇒ x∗1 − x∗3 + x∗5 ≤ 0
4 4 4

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 = 9
x1 + x2 + x4 = 4
x2 + x5 = 2
−3x1 + 5x2 + x6 = 7
x1 , x2 , x3 , x4 , x5 , x6 ≥ 0

El óptimo de este problema se alcanza para:



0 ∈ Z6

xPR 2
= 1 2 1 1 0

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 (PR) mı́n zPR = c 0 x
Ax = 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 ≤ 9
x1 + x2 ≤ 4
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

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
x1 , x2 ≥ 0

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
x1 , x2 ≥ 0

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
x2 ≤ 2
x1 ≤ 0
x1 , x2 ≥ 0

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
x2 ≤ 2
x1 ≤ 0
x1 , x2 ≥ 0

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
x2 ≤ 2
x1 ≤ 0
x2 ≤ 1
x1 , x2 ≥ 0
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
x2 ≤ 2
x1 ≤ 0
x2 ≤ 1
x1 , x2 ≥ 0
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
x2 ≤ 2
x1 ≤ 0
x2 ≥ 2
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 (P8 ):
(P8 ) mı́n z = x1 − 2x2
−4x1 + 6x2 ≤ 9
x1 + x2 ≤ 4
x1 ≤ 1
x2 ≤ 2
x1 ≤ 0
x2 ≥ 2
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 (P6 ):
(P6 ) mı́n z = x1 − 2x2
−4x1 + 6x2 ≤ 9
x1 + x2 ≤ 4
x1 ≤ 1
x2 ≤ 2
x1 ≥ 1
x1 , x2 ≥ 0
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
x2 ≤ 2
x1 ≥ 1
x1 , x2 ≥ 0
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
x1 , x2 ≥ 0

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
x1 , x2 ≥ 0

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

También podría gustarte