Você está na página 1de 24

Branch and Bound

Jorge Junio Moreira Antunes


Programao Linear
Professor: Joo Paixo
O que ?

Mtodo para resolver PI

Regio vivel dividida em subregies


O que ?
Dividir pode no melhorar sua vida

Limite superior para cortar certas subregies


O que ?
3 Pontos a considerar:

1. Como achar o limite superior?

2. Como achar uma soluo vivel?

3. Como dividir o domnio?


Achando o limite superior
Considerar uma relaxao do problema

A soluo do problema relaxado vai ser melhor que a soluo do problema


inteiro

Uma das relaxaes possveis resolver o problema linear em vez de inteiro

Problema linear pode ser resolvido eficientemente com o SIMPLEX


Como dividir o domnio?
Fazer essa decomposio pode ser complicada

Reduzir o problema em passos

Considere o seguinte Problema Inteiro:


Como dividir o domnio?
Soluo do Problema Linear: x=4.75, y=5.75, Z* = 78.25

Valor timo do problema inteiro est entre x <= 4 e x >= 5

Considerar somente o domnio com x<=4 e x>=5


Como dividir o domnio?
Definindo e dando nomes:

Branching: Decomposio do domnio em variveis inteiras


Arvore de Branch and Bound: rvore binria gerada a partir do
Branching. Cada n corresponde a um subproblema e cada aresta mostra
como o subproblema foi criado
Como dividir o domnio?
Fazendo o branching do n acima: -> y<=5 e y>= 6

Quando a regio invivel podemos no considerar o n a partir de ento


Como achar uma soluo vivel?

Fazendo Branching at que todas as variveis sejam inteiras: candidate


solution

Incumbent Solution: Melhor soluo at o momento


Como achar uma soluo vivel?
3 regras para nao considerar um n:

1. N com uma soluo inteira j pronta


2. N fora da regio vivel
3. N que a soluo com relaxao pior que a incumbent solution

No considerar o n: Fathom ou Prune


Como achar uma soluo vivel?
Eliminar ns poupa muito o trabalho computacional

No pior caso ser resolvido 2^n SIMPLEX de dimenso n

O tempo pode ser exponencial


Como caminhar no Branch?
Aps o Branching de um n, passamos a ter 2 ns. Qual n seguir?

Temos 2 Alternativas:

1. Best-First Search
2. Depht-First Search
Como caminhar no Branch?
Best-First Search:

Segue sempre pelo n com melhor valor de Zk


Acredita-se que o Z* seja mais prximo do maior Zk
Guarda muitos ns de uma vez. Pode ter problemas com memria
Normalmente demora mais para encontrar a 1 incumbent solution
Normalmente mais rpido no geral
Como caminhar no Branch?
Depht-First Search:

Examina uma regio inteira (xk <= vk ou xk >= vk)


Normalmente encontra a 1 incumbent solution rapidamente
Normalmente mais lento no geral

Normalmente feita uma mistura dos dois modos de caminhar. Primeiro


usando Depht-First e depois Best-First
Algoritmo
Algoritmo
Algoritmo
Exemplo
Considerando o exemplo j dado:

Vamos aplicar o algoritmo


Exemplo
Resolvendo o PL no problema e realizando o Branching:

Resolvendo um problema com relaxao para x<=4 e x>=5 temos:


Exemplo
A arvore fica:

Podemos escolher ou o P3 ou o P2. Vamos escolher o P3 e realizar o


Branching: y<=5 e y>=6
Exemplo
Podemos cortar o n do problema 5 e realizar o Branching com o n 4
gerando o P6 e o P7:

Podemos ver que o P6 e uma soluo candidata. Na verdade no h uma


incumbent solution e ela nossa incumbent solution.

O algoritmo continua at:


Exemplo
Esta a rvore ao final do problema.

O valor timo Z* = 77

O ponto timo X* = (7,3)


Branch and Bound

Jorge Junio Moreira Antunes


Programao Linear
Professor: Joo Paixo

Você também pode gostar