Programación Entera - U

Anuncio
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
Descargar