You are on page 1of 45

Branch and Bound

Alexandre Salles da Cunha

Julho 2007

Alexandre Salles da Cunha

Branch and Bound

Dividir e conquistar

Dado o problema
z = max{cx : x S}
como podemos fazer para dividi-lo em um conjunto de problemas
menores, possivelmente mais f
aceis de serem resolvidos e reunir a
informacao obtida com a soluc
ao de cada um dos subproblemas de
forma a resolver o problema original ?

Alexandre Salles da Cunha

Branch and Bound

A ideia central 1 do Branch and Bound: decomposicao do


espaco
Proposicao
Seja S = S1 SK a decomposic
ao de S em K subconjuntos
menores e seja z k = max{cx : x Sk }, k = 1, . . . , K . Entao
z = maxk=1,...,K {z k }.
S
S1

S3

S2

Observe que esta ideia e geral, n


ao restrita `
a Programacao Linear
Inteira (ou inteira mista).
Alexandre Salles da Cunha

Branch and Bound

Um modo trivial de decompor o problema


Uma maneira de representar a abordagem de Dividir e Conquistar e
atraves de uma arvore de enumerac
ao. No caso onde, por exemplo,
S = B3 podemos subdividir atraves de uma
arvore de enumeracao
binaria.
S
x1 = 1

x1 = 0

S0

S1

x2 = 0

x2 = 1

S00
x3 = 0

S000

S10

S01
x3 = 1

S001

x3 = 1
x3 = 0

S010

x2 = 1

x2 = 0

S011

Alexandre Salles da Cunha

x3 = 0

S100

S11
x3 = 1

S101

Branch and Bound

x3 = 0

S110

x3 = 1

S111

Alguns fatos

Na arvore de enumerac
ao bin
aria mostrada existem 3 nveis,
cada qual associado a uma decis
ao de fixar uma variavel em 0
ou em 1.
A cada folha da arvore de enumerac
ao corresponde uma
solucao que deveria ser avaliada, caso se deseje resolver um
problema de otimizac
ao definido em S, atraves de
enumeracao completa.
Nesta arvore existem 2n (n = 3) folhas.

Alexandre Salles da Cunha

Branch and Bound

Decompondo o espaco de solucoes do TSP em 4 cidades


Considere que S denota o conjunto de tours em 4 cidades. Uma
maneira de decompor S e dado pela
arvore abaixo.

(1, 4)

(1, 2)
(1, 3)

(2, 3)

1234

(2, 4)

1243

(3, 4)

1342

(3, 2)

1324

(4, 3)

1432

(42)

1423

Sij denota o conjunto de tours que selecionam a aresta (i , j).


Existem (n 1)! (n = 3) folhas na
arvore de enumeracao.
Alexandre Salles da Cunha

Branch and Bound

A ideia central 2 do Branch-and-bound: Enumeracao


Implcita
A enumeracao total do espaco de soluc
oes (desenvolvendo a
arvore de enumerac
ao ate que totas as suas folhas sejam
avaliadas) e impratic
avel para problemas de dimensoes de
interesse.
Entao, precisamos fazer algo melhor que enumerar o espaco
de solucoes exaustivamente.
Uso de limites para podar a
arvore
A ideia central consiste em empregar limitantes inferiores e
superiores para o valor
otimo z k do problema Sk , de modo que nao
seja necessario desenvolver a
arvore de enumerac
ao abaixo do n
o
que representa Sk .
Alexandre Salles da Cunha

Branch and Bound

Limites globais obtidos a partir de limites locais

Proposicao
Seja S = S1 SK a decomposic
ao de S em subconjuntos
k
menores e seja z = max{cx : x Sk } para k = 1, . . . , K . Seja z k
um limite superior para z k e z k um limite inferior para z k . Entao,
z = maxk {z k } e um limite superior para z e z = maxk {z k } e um
limite inferior para z.

Alexandre Salles da Cunha

Branch and Bound

Exemplo 1

O que pode ser dito sobre z considerando os limites superiores e


inferiores indicados em cada n
o?
25

27
13

20

20

25

20

15

25

S2

S1

Alexandre Salles da Cunha

Branch and Bound

S1

Poda por otimalidade !

15
S2

Exemplo 2

O que pode ser dito sobre z considerando os limites superiores e


inferiores indicados em cada n
o?
26

27
13

21

20

26

18

21

S1

S2

26
S1

Poda por limites duais !

Alexandre Salles da Cunha

Branch and Bound

21
S2

Exemplo 3

O que pode ser dito sobre z considerando os limites superiores e


inferiores indicados em cada n
o?
37

40

13

24

37

24

37

13

13
S1

S2

S1

S2

necess
Nao e possvel podar. E
ario continuar decompondo os
problemas S1 e S2 em subproblemas menores.

Alexandre Salles da Cunha

Branch and Bound

Formalmente: a poda por limites duais

Desejamos resolver max{cx : x S}.


Suponha que disponhamos de uma soluc
ao viavel que produz
um limite inferior (primal) z v
alido para o valor otimo z, isto
e, z z.
Suponha agora ao inves de resolver o problema k da arvore de
enumeracao, encontramos um limite superior (dual) z k para o
valor de z k = max{cx : x Sk }, isto e, z k z k .
O que podemos afirmar se z k z ?

Alexandre Salles da Cunha

Branch and Bound

Poda da arvore por limites duais


Vamos analisar o espaco de soluc
oes de um descendente de
Sk , digamos Sp .
Claramente temos que Sp Sk , isto e, Sp e mais restrito que
Sk . Assim sendo z p z k . Ent
ao z p z k z k < z.
Ou seja, neste caso, n
ao precisamos desenvolver a arvore de
enumeracao completamente a partir de Sk .
z z = 10
Sk

Alexandre Salles da Cunha

zk zk = 9 < z

Branch and Bound

Observacoes
Os limites inferiores s
ao dados por soluc
oes viaveis (primal
viavel) enquanto que os limites superiores s
ao dados por
dualidade ou por relaxac
oes dos subproblemas.
Nao restringimos como estes limites s
ao obtidos !
Tambem nao restringimos como particionar o domnio.

O metodo de Branch-and-bound consiste ent


ao na enumeracao
inteligente do espaco de soluc
oes de um Problema de Otimizacao
Inteira. O termo Branch diz respeito `
a partic
ao do domnio
enquanto que o termo Bound diz respeito ao uso de limites duais
para construcao de uma prova de otimalidade de forma a evitar a
busca exaustiva.

Alexandre Salles da Cunha

Branch and Bound

O metodo Branch-and-bound e geral

Qualquer problema de otimizac


ao em que possamos
particionar o domnio e avaliar limites duais e um problema
que pode ser resolvido atraves de um algoritmo do tipo
Branch-and-bound, n
ao importanto se as restricoes ou funcao
objetivo sao lineares ou n
ao.
Assim sendo, o Branch-and-bound n
ao e um algoritmo
especfico, mas sim uma classe geral de algoritmos.

Alexandre Salles da Cunha

Branch and Bound

Algumas questoes em aberto

Como escolher relaxac


oes ? Devemos nos contentar com
limites duais mais fracos (e mais r
apidos de serem avaliados)
ou devemos nos concentrar em limites mais fortes e mais
caros ? Como equilibrar estes aspectos ?
Como devemos estabelecer a decomposic
ao S = S 1 . . . S K ?
Idealmente estes conjuntos devem ser disjuntos. Este princpio
e no entanto pouco restritivo. O criterio de decomposicao
deve ser fixado a priori ou deve mudar na medida em que
novos limites e soluc
oes vi
aveis s
ao encontrados ao longo da
enumeracao ?
Em qual ordem os subproblemas ainda n
ao resolvidos devem
ser escolhidos ?

Alexandre Salles da Cunha

Branch and Bound

Um exemplo: Branch-and-bound baseado em PL

PI
z

max

4x1
7x1

2x1
x1 ,

x2
2x2
x2
2x2
x2

14
3
3

Z+

Introduzimos variaveis de folga e resolvemos a Relaxacao Linear.

Alexandre Salles da Cunha

Branch and Bound

Solucao da Relaxacao Linear

Base otima B = {1, 2, 5}


z

max

59
7

74 x3
+ 17 x3

x1
x2
x1 ,

x2 ,

- 27 x3
x3 ,

- 71 x4
+ 27 x4
+ x4
+ 10
7 x4
x4 ,

A Relaxacao Linear nos fornece z =

+ x5
x5

=
=
=

20
7

23
7
+

59
7 .

Assumindo que n
ao dispomos de nenhuma solucao viavel para
o problema, fazemos z = .
Uma vez que z < z, devemos particionar o problema.

Alexandre Salles da Cunha

Branch and Bound

Branching
Uma opcao: Branching em Vari
aveis
Dado xj Z que na relaxac
ao linear e vari
avel b
asica e valor
assume x j 6 Z, particionamos S da seguinte forma:
S1 = S {x : xj x j }
S2 = S {x : xj x j }
Observe que:
S = S1 S2 (condic
ao necess
aria para garantia de
otimalidade);
Neste caso, S1 S2 = (economia);
A solucao otima da relaxac
ao linear x viola as restricoes que
determinam o particionamento do domnio. Limites duais
mais fortes devem ser encontrados na soluc
ao das Relaxacoes
Lineares associadas aos subproblemas S1 e S2 .
Alexandre Salles da Cunha

Branch and Bound

Branching em variaveis

Mais um grau de liberdade


Quando a solucao da Relaxac
ao Linear possui mais de uma
componente fracionaria que deveria ser inteira, em qual variavel
devemos implementar o Branching ?

Alexandre Salles da Cunha

Branch and Bound

Exemplo - Implementando o Branching


Uma vez que x 1 =

20
7

6 Z, fazemos
S1 = S {x : x1 2}
S2 = S {x : x1 3}
59
7

x1 2

S1

S2

x1 3

Qual n
o em aberto devemos escolher para resolver primeiro ?

Alexandre Salles da Cunha

Branch and Bound

Criterio de Selecao: escolha do no em aberto para explorar

Via de regra, podemos adotar estrategias que d


ao prioridade a:
Obtencao de soluc
oes vi
aveis mais rapidamente (busca em
profunidade - escolhemos o n
o mais distante da raiz)
Prova de Otimalidade: escolhemos o n
o com a pior estimativa
k
de limite dual, maior z (caso obtenhamos uma solucao viavel
atraves deste n
o, melhoramos muito o limite primal)
Um equilbrio das duas alterantivas (primeiro em
profundidade, depois em limite);
Diversas outras.

Alexandre Salles da Cunha

Branch and Bound

Apos escolhido o no, reotimizamos

Isto feito, vamos reotimizar a partir do n


o pai. Como
podemos poupar tempo para resolver a relaxacao linear
associada a S2 , uma vez que j
a dispomos de x, solucao para a
relaxacao linear de S ?
natural efetuar esta reotimizac
E
ao atraves do Metodo Dual
Simplex, uma vez que a inserc
ao da restric
ao x1 2 nao
altera a viabilidade do dual. Isto implica em fazer um n
umero
significativamente inferior de operac
oes de pivoteamento
(invers
oes de matrizes) durante o Metodo Simplex.

Alexandre Salles da Cunha

Branch and Bound

Exemplo - reotimizando
Vamos escolher abritrariamente o n
o S1 para explorarmos.
Inserimos entao no modelo a restric
ao x1 2 ou x1 + s = 2 que
pode ser escrita como:
20 1
2
x3 x4 + s = 2 ou
7
7
7
2
6
1
x3 x4 + s =
7
7
7
Entao temos o programa linear a resolver:
Calculando LP(S1 )
z1

max

59
7

x1
x2

x1 ,

x2 ,

47 x3
+ 17 x3
- 72 x3
- 71 x3
x3 ,

Alexandre Salles da Cunha

71 x4
+ 27 x4
+ x4
+ 10
x
7 4
72 x4
x4 ,

+ x5
x5

Branch and Bound

+s
s

=
=
=
=

20
7

23
7
- 67
+

Resolvendo LP(S1 )

59
7

LP(S1 ) :

x1 2

z 1 = 15
2
x 1 = (2, 21 )

S1

x1 3

S2

Os limites inferior e superior globais n


ao podem ser
atualizados;
S1 nao pode ser podado, ent
ao criamos dois novos n
os:
S11 = S1 {x : x2 0}
S12 = S1 {x : x2 1}

Alexandre Salles da Cunha

Branch and Bound

Escolhendo o proximo no e reotimizando

59
7

x1 2

LP(S1 ) :
z 1 = 15
2
x 1 = (2, 21 )

x1 3

S1

x2 = 0

S11

S2
x2 1

S12

Dentre os n
os ativos {S2 , S11 , S12 }, arbitrariamente escolhemos S2
para explorar.

Alexandre Salles da Cunha

Branch and Bound

Resolvendo LP(S2 )
Observando a u
ltima restric
ao do modelo 2x1 2x2 3,
o e
verificamos que LP(Ss ) e invi
avel. Ent
ao z 2 = e o n
podado por inviabilidade. Os melhores limites inferior e superior
globais nao podem ser atualizados.
59
7

x1 2

LP(S1 ) :

x1 3
LP(S2 ) :

z 1 = 15
2

S1

x 1 = (2, 21 )

S2

z 2 =
inviavel

x2 = 0

S11

Alexandre Salles da Cunha

x2 1

S12

Branch and Bound

Escolhendo o proximo no

Dentre os n
os ativos {S11 , S12 }, arbitrariamente escolhemos S12
para explorar.
59
7

x1 2

LP(S1 ) :

x1 3
LP(S2 ) :

z 1 = 15
2
x 1 = (2, 21 )

S1

S2

z 2 =
inviavel

x2 = 0

S11

Alexandre Salles da Cunha

x2 1

S12

Branch and Bound

Avaliando LP(S12)
A solucao x 12 de LP(S12 ) e inteira.
Neste caso z 12 fornece um limite inferior (primal) global,
atualizamos z de para z 12 = 7.
O n
o S12 pode ser podado por otimalidade.
59
7

x1 2

LP(S1 ) :

x1 3
LP(S2 ) :

z 1 = 15
2
x 1 = (2, 21 )

S1

S2

z 2 =
inviavel

x2 = 0

S11

x2 1

S12

LP(S12 ) :
z 12 = 7
x 12 = (2, 1)

Alexandre Salles da Cunha

Branch and Bound

Escolhemos o no S11 para explorar

59
7

x1 2

LP(S1 ) :

x1 3
LP(S2 ) :

z 1 = 15
2
x 1 = (2, 21 )

S1

S2

z 2 =
inviavel

x2 = 0

S11

x2 1

S12

LP(S12 ) :
z 12 = 7
x 12 = (2, 1)

Alexandre Salles da Cunha

Branch and Bound

Resolvendo LP(S1 )
A solucao x 11 de LP(S11 ) e fracion
aria e vale z 11 = 6 < z e o
n
o pode ser podado por limites duais.
59
7

x1 2

LP(S1 ) :

LP(S2 ) :

z 1 = 15
2
x 1 = (2, 12 )

S1

S2

z 2 =
inviavel

x2 = 0
LP(S11 ) :

x1 3

S11

z 11 = 6
x 11 = ( 32 , 0)

Alexandre Salles da Cunha

x2 1

S12

LP(S12 ) :
z 12 = 7
x 12 = (2, 1)

Branch and Bound

Nao existem mais nos em aberto - Encontramos a solucao


otima
59
7

x1 2

LP(S1 ) :

LP(S2 ) :

z 1 = 15
2

S1

x 1 = (2, 12 )

S2

z 2 =
inviavel

x2 = 0
LP(S11 ) :

x1 3

x2 1

S11

S12

z 11 = 6
x 11 = ( 32 , 0)

LP(S12 ) :
z 12 = 7
x 12 = (2, 1)

x = (2, 1), z = 7

Alexandre Salles da Cunha

Branch and Bound

Interpretacao geometrica

x1 2

x1 3

x2
( 20
, 3)
7

inviavel
2

2x1 x2 2
(2, 1)

x2 1

(2, 12 )
x1
1

Alexandre Salles da Cunha

Branch and Bound

Aspectos de Implementacao de algoritmos BB baseados


em LP

O que deve ser armazenado


Como reduzir o tamanho da
arvore de enumeracao
Uso dos algoritmos de Programac
ao Linear
Como realizar:
Branching
Selecao de nos

Paralelizacao

Alexandre Salles da Cunha

Branch and Bound

Armazenamento

Na pratica, nao se armazena a


arvore, mas sim uma lista de
n
os ativos (cuja investigac
ao futura ainda n
ao pode ser
descartada)
Em cada n
o ativo, necessariamente precisamos guardar:
O limite dual referente ao pai do no
Os limites inferiores e superiores associados a cada variavel
(que podem ser restringidos ao longo da arvore)

Usualmente armazena-se tambem a base


otima associada ao
n
o pai ou uma base avancada

Alexandre Salles da Cunha

Branch and Bound

Controlando o tamanho da arvore de enumeracao


O aspecto central
A reducao do gap de dualidade

zz
z .

Como fazer isto:


Aspectos ligados `
a representac
ao do problema em estudo:
Adotando formulacoes matematicas mais fortes
Empregando cortes (Branch-and-cut)
Convexificando parte do domnio (geracao de colunas,
Branch-and-price)
Pre-processamento

Obtendo solucoes vi
aveis de melhor qualidade
Uso de heursticas primais ao longo da arvore baseadas em
informacao de PL
Cutoffs

Escolhas de implementac
ao: regras de selec
ao e de branching
Alexandre Salles da Cunha

Branch and Bound

Regras de Branching

Branching em vari
aveis: f
aceis de implementar, comuns na
maioria dos pacotes comerciais. Entretanto, podem gerar
arvores desbalanceadas e via de regra e desej
avel estabelecer
prioridade de branching entre as vari
aveis.
Branching em restric
oes: mais especficas, dependentes do
problema e assim sendo, podem produzir resultados muito
melhores para alguns problemas especficos.

Alexandre Salles da Cunha

Branch and Bound

Branching em variaveis: escolhendo a variavel


Criterio simples - privilegia violac
ao da integralidade
Escolha a variavel inteira cuja parte fracion
aria na relaxacao linear
e mais pr
oxima de 12 .
Um criterio um pouco mais sofisticado e mais caro
Estimar a deterioracao do limite dual ocasionada pela fixacao de
cada variavel candidata a branching nos limites que definem o
branching. Esta deteriorac
ao pode ser feita:
De forma exata, implementando tantas quantas operacoes de
pivoteamento (dual) quanto forem necess
arias.
De forma aproximada, seja estimando a degradacao ataves do
preco (variavel dual) associado `
a restric
oes: xj uj e xj lj
ou implementando algumas poucas operac
oes de
pivoteamento.
Alexandre Salles da Cunha

Branch and Bound

Branching em variaveis: strong branching


Definicao
Consiste em efetuar a avaliac
ao da degradac
ao de forma exata,
realizando tantas quantas operac
oes de pivoteamento no dual
Simplex quanto forem necess
arias, para um conjunto restrito C de
variaveis candidatas a branching.
Implementando
Se C denota o conjunto restrito de vari
aveis b
asicas candidatas,
fazemos o branching na vari
avel
U
j arg minjC {max{z D
j , z j }},
U
os impor xj xj
onde z D
j (z j ) denota o limite dual obtido ap
(xj xj )

Alexandre Salles da Cunha

Branch and Bound

Branching em variaveis: outras consideracoes


Uncapacitated facility location
min

XX
i M jN

n
X

cij xij +

f j yj

jN

xij = 1, i = 1, . . . , m

j=1

xij yj , i = 1, . . . , m, j = 1, . . . , n
x Bnm , y Bn
Questao
Todas as variaveis bin
arias possuem a mesma relevancia para o
branching ?
Alexandre Salles da Cunha

Branch and Bound

A resposta e nao

Variaveis com papeis muito diferentes


Observe que fixar uma facilidade j N (ou yj ) em 0 ou em 1
altera muito mais a natureza da soluc
ao que, dado j : yj 6= 0, fixar
xij = 0 ou xij = 1 para algum i M.
Alternativa
Assim sendo, muitos pacotes de Programac
ao Inteira permitem
estabelecer prioridades de Branching para as vari
aveis inteiras. No
caso do UFL, as variaveis bin
arias y possuem maior prioridade de
branching que as variaveis x.

Alexandre Salles da Cunha

Branch and Bound

Branching em restricoes - Problema especficos

Considere o problema do caixeiro viajante e as desigualdades


x((U)) = 2k, U V , para algum k Z+ .
Suponha que z = (delta(u)) = 2.5.
Podemos entao particionar o domnio criando dois n
os:
x((U)) = 2
x((U)) 4

Alexandre Salles da Cunha

Branch and Bound

Branching em restricoes - Special ordered sets


Uma motivacao pratica
Considere o problema de atribuic
ao de frota de avioes a rotas
aereas. Vamos definir a vari
avel bin
aria xij se o aviao do tipo i I
e selecionado para fazer a rota do tipo j J (0, caso contrario).
Vamos assumir que |I | = n.
Devemos satisfazer a restric
ao que atribui um tipo de avi
ao a cada
rota:
X
xij = 1, j I .
i I

Normalmente, os ndices associados aos tipos de aeronaves nao sao


arbitrarios, ndices menores associados a aeronaves com menor
n
umero de assentos (ou o inverso).
Alexandre Salles da Cunha

Branch and Bound

Special Ordered sets - continua

Vamos supor que x kj = 21 para algum k I . Uma regra de


branching em vari
aveis para este caso cria dois subproblemas
que diferem bastante um do outro, mas que geram arvores
desbalanceadas.
Uma alternativa consiste em estabelecer (atraves de
informacoes da relaxac
ao de Programac
ao Linear do modelo)
um tamanho de aeronave associado a um ndice t que
implique no seguinte particionamento:
X

xij = 1 com xij = 0 para j t + 1

jt

xij = 1 com xij = 0 para j t

jt+1

Alexandre Salles da Cunha

Branch and Bound

Selecao de nos
Solucoes viaveis mais r
apido vs melhorar o limite dual.
Por um lado, o n
umero de n
os ativos cresce mais rapidamente
se o n
o a ser explorado e sempre escolhido dentre aqueles
mais pr
oximos da raiz da
arvore. Tipicamente, os limites duais
melhoram mais rapidamente neste caso.
Por outro lado, ao escolher n
os mais distantes da raiz, os
limites duais globais melhoram muito pouco. Esta estrategia
permite encontrar soluc
oes vi
aveis mais rapidamente.
Uma solucao de compromisso
Primeiro implementar uma busca em produndidade, procurando
uma solucao viavel inicial. Em seguida, alternar busca em largura
com busca em profundidade.
Alexandre Salles da Cunha

Branch and Bound

You might also like