Algoritmos de “Branch and Bound”

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