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 x1 , x 2 0 x1 , x 2 inteiros

PPL
timo = 39
(X1=1.897)

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 * Z * , ou PPL PPI 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 * Z * para PPL PPI * um problema de mximo, logo,Z PPL Z PPI , ou seja, Z * maior ou PPL igual a uma soluo qualquer do PPI (Z PPI). Suponha que Z * seja inteira, logo temos que, Z * = Z INT Z PPI, PPL PPL 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:


Valor timo da soluo: 39 Valores das variveis x1=1.86 e x2=0
Z=39 x1=1.86 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 max 21x1 + 11x 2 s.a. 7 x1 + 4 x 2 13 x1 2 x1 , x 2 0 Subproblema B max 21x1 + 11x 2 s.a. 7 x1 + 4 x 2 13 x1 1 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

x12

A
TS1

Z=37.5 x1=1 x2=1.5

x11

Exemplo: Branch-and-Bound
Suproblema C max 21x1 + 11x 2 s.a. 7 x1 + 4 x 2 13 x1 1 x2 1 x1 , x 2 0 Subproblema D max 21x1 + 11x 2 s.a. 7 x1 + 4 x 2 13 x1 1 x2 2 x1 , x 2 0

timo = 32 C

timo = 37 D

Exemplo: Branch-and-Bound
(TS2 - otimalidade) A soluo tima do problema relaxado inteira.
Z=39 x1=1.86 x2=0

x12

A
TS1 x21

Z=37.5 x1=1 x2=1.5 Z=32 x1=1 TS2 x2=1

x11

Z=37 x1=0.71 x2=2

x22

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 max 21x1 + 11x 2 s.a. 7 x1 + 4 x 2 13 x1 1 x2 2 x1 0 x1 , x 2 0 Subproblema F max 21x1 + 11x 2 s.a. 7 x1 + 4 x 2 13 x1 1 x2 2 x1 1 x1 , x 2 0

F Infactvel

E timo = 35,75

Exemplo: Branch-and-Bound
Z=39 x1=1.86 x2=0

x12

A
TS1 x21

Z=37.5 x1=1 x2=1.5 Z=32 x1=1 TS2 x2=1

x11

Z=37 x1=0.71 x2=2

x22

x10

Z=35.75 x1=0 x2=3.25

F
TS1

x11

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 max 21x1 + 11x 2 s.a. 7 x1 + 4 x 2 13 x1 1 x2 2 x1 0 x2 3 x1 , x 2 0

Subproblema H max 21x1 + 11x 2 s.a. 7 x1 + 4 x 2 13 x1 1 x2 2 x1 0 x2 4 x1 , x 2 0

Exemplo: Branch-and-Bound
Z=39 x1=1.86 x2=0

x12

A
TS1 x21

Z=37.5 x1=1 x2=1.5 Z=32 x1=1 TS2 x2=1

x11

Z=37 x1=0.71 x2=2

x22

x10

Z=35.75 x1=0 x2=3.25

F
TS1

x11

x23

Z=33 x =0 TS2 1 x2=3

soluo tima

H
TS1

x24

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.
M Z = x1 + 2x2 ax Sujeito a:

2x1 + 2x2 6 x1 + 2x2 5 4x1 + 2x2 8


x10, x20 e inteiras.

Você também pode gostar