Você está na página 1de 30

Programao Inteira

 Referncias:
 Notas de aulas do Prof. Silvio Alexandre de Araujo
http://www.dcce.ibilce.unesp.br/~saraujo/

Material da Professora Gladys Castillo do Departamento de Matemtica da


Universidade de Aveiro (http://www.mat.ua.pt/io/)
Mtodos de Soluo: Branch-and-Bound

O mtodo Branch-and-Bound (B&B) baseia-se na idia de desenvolver uma


enumerao inteligente das solues candidatas soluo tima inteira de um
problema.
Apenas uma frao das solues factveis realmente examinada.
O termo branch refere-se ao fato de que o mtodo efetua parties no espao das
solues e o termo bound ressalta que a prova da otimalidade da soluo utiliza-se de
limites calculados ao longo da enumerao.
Mtodos de Soluo: Branch-and-Bound

Exemplo max 21x1 + 11x 2


s.a. 7 x1 + 4 x 2 13
x1 , x 2 0
x1 , x 2 inteiros
Mtodos de Soluo: Branch-and-Bound

O exemplo anterior um problema de programao linear inteira, pois as variveis


devem ser inteiras.
Na Figura (a) tm-se os pontos que representam as solues factveis do problema
(todos os pontos inteiros que satisfazem as restries).
O problema de programao linear (PPL) obtido ao desconsiderarmos as restries
de integralidade das variveis inteiras conhecido como a relaxao linear do PPI
(ver Figura (b)).
Existem outros tipos de relaxao, como por exemplo a Relaxao Lagrangiana:
relaxa-se algumas restries, consideradas complicadas, incorporando uma
penalidade na funo objetivo;
Mtodos de Soluo: Branch-and-Bound

max 21x1 + 11x 2


PPI s.a. 7 x1 + 4 x 2 13 PPL
x1 , x 2 0 timo = 39 (X1=1.897)

x1 , x 2 inteiros

x2

timo = 33 (x2=3, x1=0)


(a) (b)
Mtodos de Soluo: Branch-and-Bound

Como podemos observar a soluo do PPL sempre maior ou igual a


soluo do PPI, pois o problema relaxado composto por todas as
solues inteiras e tambm as solues reais do problema, logo
formado por um conjunto de solues factveis mais abrangente.
Assim temos que, para um problema de maximizao Z *PPL Z *PPI , ou
seja, a soluo tima da relaxao linear de um problema inteiro ( Z *PPL)
sempre maior ou igual a soluo tima do problema inteiro (Z *PPI ).
Mtodos de Soluo: Branch-and-Bound

timo = 39

timo = 33
(a) (b)
Mtodos de Soluo: Branch-and-Bound

Princpio bsico: se a soluo do PPL relaxado corresponde a uma


soluo do PPI, pois possui todas as variveis inteiras, ento esta
soluo a soluo tima do PPI.
Prova: fcil provar tal princpio, pois sabemos que Z *PPL Z *PPI para
um problema de mximo, logo,Z *PPL Z PPI , ou seja, Z *PPL maior ou
igual a uma soluo qualquer do PPI (Z PPI).
Suponha que Z *PPL seja inteira, logo temos que, Z *PPL = Z INT Z PPI,
portanto o valor mximo para o PPI ser exatamente igual a Z *PPL .
Mtodos de Soluo: Branch-and-Bound

Idia Geral: relaxar o problema de programao inteira e dividir o


problema relaxado em vrios problemas at encontrar solues
inteiras ou no factveis, o timo a melhor soluo encontrada.
O algoritmo B&B baseado na idia de dividir para conquistar, ou
seja, trabalhamos em problemas menores e mais fceis de resolver
em busca da soluo tima.
Mtodos de Soluo: Branch-and-Bound

A diviso do problema interrompida quando uma das condies a seguir


satisfeita. Essas condies so chamadas de testes de sondagem ou Poda do n (TS).
(TS1 ou poda por infactibilidade) O problema relaxado infactvel.
(TS2 ou poda por otimalidade) A soluo tima do problema relaxado inteira .
(TS3 ou poda por qualidade) O valor de qualquer soluo factvel do problema
relaxado pior que o valor da melhor soluo factvel atual (soluo incumbente).
Quando uma dessas trs condies ocorre, o subproblema pode ser descartado
(sondado ou podado), pois todas as suas solues factveis esto implicitamente
enumeradas.
Exemplo: Branch-and-Bound

max 21x1 + 11x 2


s.a. 7 x1 + 4 x 2 13
x1 , x 2 0
x1 , x 2 inteiros
timo = 39

timo = 33
(a) (b)
Exemplo: Branch-and-Bound

Resolvendo o problema relaxado tem-se que: Z=39


x1=1.86
Valor timo da soluo: 39 x2=0
Valores das variveis x1=1.86 e x2=0

Logo o valor de x1 no inteiro, ento dividimos o problema em dois


subproblemas:
um onde consideramos o valor de x1 2 , que vamos chamar de subproblema
A
outro consideramos x1 1, chamado de subproblema B.
Exemplo: Branch-and-Bound

Suproblema A Subproblema B
max 21x1 + 11x 2 max 21x1 + 11x 2
s.a. 7 x1 + 4 x 2 13 s.a. 7 x1 + 4 x 2 13
x1 2 x1 1
x1 , x 2 0 x1 , x 2 0

A
Infactvel

timo = 37.5

B
Exemplo: Branch-and-Bound

No encontramos soluo factvel ao resolver o problema A, ento aplicando o o


critrio para poda podemos elimin-lo ((TS 1) O problema relaxado infactvel).
Resolvendo o subproblema B temos Z = 37.5, x1 =1 e x2 =1.5
Agora x2 no inteiro, logo particionamos o problema em dois considerando o
subproblema C com a varivel x2 1 e o subproblema D com x2 2.

Z=39
x1=1.86
x2=0

Z=37.5
x12 A x1=1 B x11
TS1 x2=1.5
Exemplo: Branch-and-Bound
Suproblema C Subproblema D
max 21x1 + 11x 2 max 21x1 + 11x 2
s.a. 7 x1 + 4 x 2 13 s.a. 7 x1 + 4 x 2 13
x1 1 x1 1
x2 1 x2 2
x1 , x 2 0 x1 , x 2 0

timo = 32
timo = 37

C
D
Exemplo: Branch-and-Bound

(TS2 - otimalidade) A soluo tima do problema relaxado inteira.

Z=39
x1=1.86
x2=0

Z=37.5
x12 A x1=1 B x11
TS1 x2=1.5

Z=32 Z=37
x21 C x1=1 x1=0.71 D x22
TS2 x2=1 x2=2
Exemplo: Branch-and-Bound

A soluo do subproblema C igual a 32, x1=1 e x2=1, as duas


variveis so inteiras, logo considerando o teste de sondagem (TS2)
este problema pode ser sondado por otimalidade.
Resolvendo o subproblema D temos Z = 37, x1=0.71 e x2=2
note que a varivel x1 novamente no inteira, ento
particionamos o subproblema gerando dois novos subproblemas
como mostramos a seguir
Exemplo: Branch-and-Bound
Suproblema E Subproblema F
max 21x1 + 11x 2 max 21x1 + 11x 2
s.a. 7 x1 + 4 x 2 13 s.a. 7 x1 + 4 x 2 13
x1 1 x1 1
x2 2 x2 2
x1 0 x1 1
x1 , x 2 0 x1 , x 2 0

F Infactvel

E
timo = 35,75
Exemplo: Branch-and-Bound
Z=39
x1=1.86
x2=0

Z=37.5
x12 A x1=1 B x11
TS1 x2=1.5

Z=32 Z=37
x21 C x1=1 x1=0.71 D x22
TS2 x2=1 x2=2

Z=35.75
x10 E x1=0 F x11
x2=3.25
TS1
Exemplo: Branch-and-Bound

O problema F infactvel, logo podemos usar TS1 e elimin-lo


O subproblema E tem soluo igual a 35.75 e x1=0 e x2=3.25

Suproblema G Subproblema H
max 21x1 + 11x 2 max 21x1 + 11x 2
s.a. 7 x1 + 4 x 2 13 s.a. 7 x1 + 4 x 2 13
x1 1 x1 1
x2 2 x2 2
x1 0 x1 0
x2 3 x2 4
x1 , x 2 0 x1 , x 2 0
Exemplo: Branch-and-Bound
Z=39
x1=1.86
x2=0

Z=37.5
x12 A x1=1 B x11
TS1 x2=1.5

Z=32 Z=37
x21 C x1=1 x1=0.71 D x22
TS2 x2=1 x2=2

Z=35.75
x10 E x1=0
x2=3.25 F x11
TS1
soluo tima
x23 G Z=33
H x24
x =0
TS2 1
x2=3 TS1
Exemplo: Branch-and-Bound

Resolvendo o subproblema G obtemos Z = 33, x1=0 e x2=3 , logo a soluo


inteira, portanto aplicando o TS2 este problema pode ser sondado.
O subproblema H no tem soluo factvel e tambm pode ser sondado por TS1.
Temos que nenhum n pode ser ramificado, logo, a melhor soluo inteira
encontrada dada pelo problema G e a soluo tima do problema.
Na resoluo do Exemplo atravs do mtodo B&B podemos observar que muitas
solues no precisaram ser avaliadas explicitamente. Isso fica mais claro quando se
resolve problemas maiores.
Seleo de ns na rvore Branch-and-Bound (livro
Pesquisa Operacional pagina 249-251)

 Considere uma lista de ns ativos de uma rvore. Como


escolher o prximo n a ser examinado?

Existem duas regras alternativas:

 Regras a priori (determinam previamente a ordem de


escolha dos ns)
 Regras adaptativas (determinam o n a partir de
informao dos ns ativos).
Seleo de ns na rvore Branch-and-Bound (livro
Pesquisa Operacional pagina 249-251)

 A regra a priori mais utilizada: busca em profundidade com


backtracking (last-in, first-out o ltimo n includo na lista o
primeiro a ser examinado).

 Na busca em profundidade, se o n corrente no eliminado, o


prximo n a ser examinado um de seus filhos.

 Backtracking - quando um n eliminado, retorna-se ao longo


do caminho em direo ao n raiz at encontrar o primeiro n
que tem filho a ser examinado.
Seleo de ns na rvore Branch-and-Bound (livro
Pesquisa Operacional pagina 249-251)

 A busca em profundidade tem duas vantagens:


 1. a experincia mostra que mais provvel encontrar
solues factveis em nveis mais profundo em relao a raiz
 2. a reotimizao do n filho, dada a soluo tima do n pai,
pode ser feita utilizando um algoritmo chamado dual simplex. O
tamanho Maximo dos ns ativos no muito grande.
 Desvantagem: no usa informao, tende a gerar uma arvore
com muitos ns.
Seleo de ns na rvore Branch-and-Bound (livro
Pesquisa Operacional pagina 249-251)

 Regra adaptativa: escolher o n que tem o maior limitante


superior (maximizao).
 Vantagem: produz uma rvore com um nmero menor de ns
(em relao a busca em profundidade) porm guarda muitos
ns ativos o que pode inviabilizar a soluo de um problema
pelo limite de memria computacional.
Seleo de ns na rvore Branch-and-Bound Problema
da Mochila
Seleo de ns na rvore Branch-and-Bound Problema da Mochila
EVOLUO DA BUSCA PELO MAIOR LIMITE SUPERIOR PARA O PROBLEMA DA
MOCHILA ( Podas -> Q-Qualidade, O-Otimalidade e I Infactibilidade).

Soluo tima x1=x2=x3=1, x4=x5=0, x6=x7=x8=1, x9=x10=0,


Valor z=763
Seleo de ns na rvore Branch-and-Bound Problema da Mochila
EVOLUO DA BUSCA EM PROFUNDIDADE PARA O
PROBLEMA DA MOCHILA .
Exerccio .

 Encontre a soluo tima para o problema de


programao inteira abaixo. Especifique qual o motivo de
cada poda dos ns. A primeira relaxao linear deve ser
resolvida utilizando o algoritmo simplex (algoritmo). O
primeiro filho que ser acrescentado com xi<= dever
ser resolvido pelo simplex tabelas.
Max Z = x1 + 2x2
Sujeito a:
2x1 + 2x2 6
x1 + 2x2 5
4x1 + 2x2 8
x10, x20 e inteiras.