algoritmo branch-and-bound

17
Algoritmo Branch-and- Bound Professora Adria Lyra

Upload: xantha-beck

Post on 30-Dec-2015

33 views

Category:

Documents


1 download

DESCRIPTION

Algoritmo Branch-and-Bound. Professora Adria Lyra. O algoritmo “branch-and-bound” (B&B). É uma estratégia de divisão e conquista para problemas de natureza inteira mista - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Algoritmo Branch-and-Bound

Algoritmo Branch-and-Bound

Professora Adria Lyra

Page 2: Algoritmo Branch-and-Bound

O algoritmo “branch-and-bound” (B&B)

• É uma estratégia de divisão e conquista para problemas de natureza inteira mista

• A idéia é dividir um problema P em um conjunto de subproblemas menores {SPk} de forma que a solução de P possa ser obtida através da solução dos subproblemas.

Page 3: Algoritmo Branch-and-Bound

Algoritmo Branch-and-Bound

• As divisões são feitas iterativamente, sempre observando que os subproblemas devem ser mais fáceis de serem resolvidos que o problema original.

• Além disso, procuramos descartar subproblemas desde que estes não contenham a solução ótima.

Page 4: Algoritmo Branch-and-Bound

Estratégia de divisão e conquista

• Considere o problema:

P : z = max {cT x : x S}∈

• Como “quebrar” P em subproblemas menores e depois os “recombinar”de maneira a se obter uma solução para o problema original?

Page 5: Algoritmo Branch-and-Bound

Estratégia de divisão e conquista

• Proposição:– Seja S = S1 . . . S∪ ∪ K uma decomposição de S

em K conjuntos menores.– Seja também zk = max{cT x : x S∈ k}

para k = 1, . . . ,K.– Então, z = max{zk : k = 1, . . . ,K}.

• Uma estratégia de divisão e conquista, obedecendo as premissas da proposição acima, pode ser ilustrada com uma árvore de enumeração.

Page 6: Algoritmo Branch-and-Bound

Estratégia de divisão e conquista

• Para S {0, 1}⊆ 3, podemos construir a árvore de enumeração abaixo.

S

S0S1

x1 = 0 x1= 1

Page 7: Algoritmo Branch-and-Bound

Estratégia de divisão e conquista

• Claramente S = S0 S∪ 1, onde – S0 = {x S : x∈ 1 = 0} e – S1 = {x S : x∈ 1 = 1}.

• Podemos subdividir cada um dos subproblemas em subproblemas ainda menores, fazendo:– S0 = S00 S∪ 01 e– S1 = S10 S∪ 11,– onde Si1i2 = {x S∈ i1 : x2 = i2}.

Page 8: Algoritmo Branch-and-Bound

Estratégia de divisão e conquista

S

S0 S1

x1 = 0 x1= 1

S00 S01S10 S11

x2 = 0 x2 = 1 x2 = 0 x2 = 1

Árvore de Enumeração

Page 9: Algoritmo Branch-and-Bound

Estratégia de divisão e conquistaS

S0

S1

x1 = 0 x1= 1

S00S01

S10 S11

x2 = 0 x2 = 1 x2 = 0x2 = 1

S000 S001 S010 S011

S100 S101 S110 S111

x3 = 0 x3 = 1

Page 10: Algoritmo Branch-and-Bound

Estratégia de divisão e conquista

• Uma folha da árvore de enumeração completa Si1i2i3 é não-vazia se, e somente se, x = (i1, i2, i3) S.∈

• Portanto, as folhas da árvore correspondem precisamente as soluções candidatas que seriam examinadas se fosse conduzida uma enumeração completa.

Page 11: Algoritmo Branch-and-Bound

Enumeração Implícita

• Enumeração completa é inviável para problemas práticos

• Uma alternativa é utilizar os limites de {zk} de forma inteligente, tanto os limites superiores quanto os inferiores.

Page 12: Algoritmo Branch-and-Bound

Enumeração Implícita

• Algoritmo Branch-and-Bound• Proposição

– Seja S = S1 ∪ . . . ∪ Sn uma decomposição de S em n subconjuntos.

– Seja zk = Max{cTx : x ∈ Sk} para k = 1, . . . ,n.

– Seja um limite superior para zk.– Seja um limite inferior para zk .

• Então:– = Max{ : k = 1, . . . ,n} define um limite superior para z– = Max{ : k = 1, . . . ,n} define um limite inferior para z

kz kz

zz

kz

kz

Page 13: Algoritmo Branch-and-Bound

O problema da Mochila 0, 1

item Peso w

Valor v

Valor/peso

1 4 $40 10

2 7 $42 6

3 5 $25 5

4 3 $12 4

A capacidade da Mochila é W = 10

ub = v + (W – w)(vi+1 / wi+1)

Page 14: Algoritmo Branch-and-Bound

Branch-and-BoundW=0, v=0

Ub = 100

W=4, v=40

Ub = 76

W=0, v=0

Ub = 60

Com 1 Sem 1

Expansão da árvore em largura para todos os nós

Page 15: Algoritmo Branch-and-Bound

Branch-and-BoundW=0, v=0

Ub = 119

W=4, v=40

Ub = 76

W=0, v=0

Ub = 60

Com 1 Sem 1

Com 2 Sem 2

W=11, W=4, v=40

Ub = 70

Page 16: Algoritmo Branch-and-Bound

Branch-and-BoundW=0, v=0

ub = 119

W=4, v=40

ub = 76

W=0, v=0

ub = 60

Com 1 Sem 1

Com 2Sem 2

W=11, W=4, v=40

ub = 70

Com 3 Sem 3

W=9, v=65

ub = 69

W=4, v=40

ub = 64

Page 17: Algoritmo Branch-and-Bound

Branch-and-BoundW=0, v=0

ub = 119

W=4, v=10

ub = 76

W=0, v=0

ub = 60

Com 1 Sem 1

Com 2Sem 2

W=11, W=4, v=10

ub = 70

Com 3 Sem 3

W=9, v=65

ub = 69

W=4, v=10

ub = 64

W=12, W=9, v=65

ub = 65

Com 4 Sem 4