Programa¸c˜
ao Inteira
Resolu¸c˜
ao por Branch and Bound
Transparˆencias de apoio `a leciona¸c˜ao de aulas te´oricas
Vers˜ao 2.3 c
2012, 2010, 2009, 2001 Maria Ant´onia Carravilla Jos´e Fernando Oliveira FEUP
T´
ecnicas exactas para resolu¸
c˜
ao de problemas de
Optimiza¸
c˜
ao Combinat´
oria
• Enumera¸c˜ao expl´ıcita — por defini¸c˜ao de problema de Optimiza¸c˜ao
Combinat´oria, gerando e avaliando todas as solu¸c˜oes admiss´ıveis ´e
poss´ıvel obter a solu¸c˜ao ´optima.
• Enumera¸c˜ao impl´ıcita — n˜ao se gerando todas as solu¸c˜oes admiss´ıveis,
elas s˜ao no entanto consideradas e implicitamente avaliadas.
Exemplos: M´etodo de pesquisa em ´arvore com enumera¸c˜ao e limita¸c˜ao
(“branch and bound”); limites superiores e inferiores ao valor da solu¸c˜ao
´
optima.
• Formula¸c˜ao dos problemas em modelos de programa¸c˜ao inteira
(vari´aveis de decis˜ao assumem valores no conjunto dos n´umeros
inteiros), ou mesmo bin´aria (vari´aveis apenas com dois valores poss´ıveis:
0 ou 1), e consequente resolu¸c˜ao com algoritmos apropriados.
Nota: Estas formula¸c˜oes podem tamb´em ser usadas para obter limites
T´
ecnicas exactas e relaxa¸
c˜
oes para resolu¸
c˜
ao de
problemas de Optimiza¸
c˜
ao Combinat´
oria
Relaxa¸c˜ao — N˜ao considera¸c˜ao de uma ou mais restri¸c˜oes do problema
original P O, transformando-o num problema mais simples de resolver P R,
sabendo-se que os valores ´optimos das fun¸c˜oes objetivo obedecem `a seguinte
rela¸c˜ao (assumindo um problema de minimiza¸c˜ao):
fP R? ≤ fP O?
(tradu¸c˜ao: ao tirar restri¸c˜oes a solu¸c˜ao s´o pode melhorar, ou ficar na
mesma).
Relaxa¸c˜ao linear – transforma¸c˜ao de um problema em n´umeros inteiros num
problema com vari´aveis reais (deixa-se cair a restri¸c˜ao “e inteiros” ou “∈ N0”
−→ utiliza¸c˜ao do m´etodo simplex para a sua resolu¸c˜ao em vez dos muito
mais complexos (e extraordinariamente mais demorados) m´etodos de
M´
etodo de “branch and bound”
O m´etodo de “branch and bound” baseia-se na ideia de uma enumera¸c˜ao
inteligente das solu¸c˜oes candidatas a solu¸c˜ao ´optima inteira de um
problema, efectuando sucessivas parti¸c˜oes do espa¸co das solu¸c˜oes e cortando
a ´arvore de pesquisa atrav´es da considera¸c˜ao de limites calculados ao longo
Representa¸
c˜
ao gr´
afica do processo de resolu¸
c˜
ao de um
problema por B&B
Considere-se o seguinte problema
de Programa¸c˜ao Inteira: Maximizar: F = 3x + 7y suj. a: x ≤ 3.5 5x − 4y ≤ 10 4 7x + 2y ≤ 9 x , y ≥ 0 e inteiras
e a sua representa¸c˜ao gr´afica:
Resolu¸
c˜
ao da relaxa¸
c˜
ao linear
Problema PL0: max F = 3x + 7y suj. a: x ≤ 3.5 5x − 4y ≤ 10 4 7x + 2y ≤ 9 x , y ≥ 0Solu¸c˜ao ´optima n˜ao inteira:
Ramifica¸
c˜
ao em x: x ≤ 3
max F = 3x + 7y suj. a: x ≤ 3.5 5x − 4y ≤ 10 4 7x + 2y ≤ 9 x , y ≥ 0 x ≤ 3 Solu¸c˜ao (n˜ao inteira): x = 3 e y = 3.6; F = 34.5Ramifica¸
c˜
ao em x: x ≥ 4
max F = 3x + 7y suj. a: x ≤ 3.5 5x − 4y ≤ 10 4 7x + 2y ≤ 9 x , y ≥ 0 x ≥ 4Ramifica¸
c˜
ao em y: y ≤ 3
max F = 3x + 7y suj. a: x ≤ 3.5 5x − 4y ≤ 10 4 7x + 2y ≤ 9 x , y ≥ 0 x ≤ 3 y ≤ 3 Solu¸c˜ao (inteira): x = 3 e y = 3; F = 30Obten¸c˜ao de um limite inferior ⇒
So-lu¸c˜oes n˜ao inteiras com valor de F
in-ferior ou igual a 30 n˜ao precisam de ser
Ramifica¸
c˜
ao em y: y ≥ 4
max F = 3x + 7y suj. a: x ≤ 3.5 5x − 4y ≤ 10 4 7x + 2y ≤ 9 x , y ≥ 0 x ≤ 3 y ≥ 4 Solu¸c˜ao (n˜ao inteira): x = 1.7 e y = 4; F = 33.2Ramifica¸
c˜
ao em x: x ≤ 1
max F = 3x + 7y suj. a: x ≤ 3.5 5x − 4y ≤ 10 4 7x + 2y ≤ 9 x , y ≥ 0 x ≤ 3 y ≥ 4 x ≤ 1 Solu¸c˜ao (n˜ao inteira): x = 1 e y = 4.2; F = 32.5Ramifica¸
c˜
ao em x: x ≥ 2
max F = 3x + 7y suj. a: x ≤ 3.5 5x − 4y ≤ 10 4 7x + 2y ≤ 9 x , y ≥ 0 x ≤ 3 y ≥ 4Ramifica¸
c˜
ao em y: y ≤ 4
max F = 3x + 7y suj. a: x ≤ 3.5 5x − 4y ≤ 10 4 7x + 2y ≤ 9 x , y ≥ 0 x ≤ 3 y ≥ 4 x ≤ 1 y ≤ 4 Solu¸c˜ao (inteira): x = 1 e y = 4; F = 31Melhor solu¸c˜ao inteira at´e ao
Ramifica¸
c˜
ao em y: y ≥ 5
max F = 3x + 7y suj. a: x ≤ 3.5 5x − 4y ≤ 10 4 7x + 2y ≤ 9 x , y ≥ 0 x ≤ 3 y ≥ 4 x ≤ 1 y ≥ 5,
,
•
--
-
I
h; 4y- IO,
,-,
/ /,
-
,
,
/
,
-- ; 4Ih-2y- 9,
/ /,
', , ,
,
•
,
•
,´
Arvore de pesquisa do “Branch-and-Bound”
LP_0(solução não inteira) x = 3.5
y = 3.5 F = 35
LP_01
(solução não inteira) x = 3 y = 3.6 F = 34.5 LP_02 (sem solução) LP_011 (solução inteira) x = 3 y = 3 F = 30 LP_012
(solução não inteira) x = 1.7
y = 4 F = 33.2
LP_0121
(solução não inteira) x = 1
y = 4.2 F = 32.5
LP_0122 (sem solução)
LP_01211
(solução inteira óBma) x = 1 y = 4 F = 31 LP_01212 (sem solução) x <= 3 x >= 4 y <= 3 y >= 4 x <= 1 x >= 2 y <= 4 y >= 5
Limites
Limites (inferiores e superiores):
• tornam o algoritmo de “branch & bound” mais eficiente ao permitir
descartar n´os da ´arvore de pesquisa ainda n˜ao completamente
explorados, pela certeza de que nunca originar˜ao solu¸c˜oes melhores do
que as que j´a temos.
• permitem “medir a distˆancia” (em termos de valor da fun¸c˜ao objetivo) a
Limites num problema de maximiza¸
c˜
ao
• um limite inferior LI ´e dadopor uma solu¸c˜ao inteira que se
tenha j´a obtido – a solu¸c˜ao ´
op-tima F? nunca poder´a ser pior
(inferior) que a solu¸c˜ao inteira
que j´a temos;
• um limite superior LS ser´a
dado pelo maior valor da fun-¸
c˜ao objetivo de entre todos os
n´os ainda n˜ao completamente
explorados (a maior esperan¸ca que ainda temos de encontrar
uma solu¸c˜ao inteira melhor do
que aquela que j´a temos).
Problema de Maximização
F*- LI ≤ LS - LI F
Limite Superior – LS
Valor da função objetivo no nó mais promissor ainda não explorado Solução ótima inteira F* (desconhecida)
Limite Inferior– LI Melhor solução inteira encontrada (com o valor mais alto da função objetivo)
Limites – exemplo
Considere um problema de maximiza¸c˜ao exclusivamente com vari´aveis
inteiras. Resolvendo o problema atrav´es de “Branch-and-Bound”, obt´em-se,
num determinado passo, a ´arvore representada na figura 1.
PL1
(solução não inteira) Z = 100
PL2
(solução não inteira) Z = 85
PL3
(solução não inteira) Z = 91
PL6
(solução inteira) Z = 70
PL7
(solução não inteira) Z = 79
PL8
(sem soluções)
PL9
(solução não inteira) Z = 65
PL4
(solução inteira) Z = 60
PL5
(solução não inteira) Z = 75
Figura 1: ´Arvore de “Branch-and-Bound”.
´
optima?
2. Qual ´e, nesta altura, o melhor limite inferior sobre a solu¸c˜ao inteira
´
optima?
3. Indique que n´os j´a foram explorados e explique porquˆe.
4. Indique os n´os que ainda n˜ao foram explorados e explique porquˆe.
5. J´a foi atingida a solu¸c˜ao ´optima do problema inteiro? Porquˆe?
6. Qual o valor m´aximo do erro absoluto sobre a solu¸c˜ao ´optima inteira, se
Quest˜
oes em aberto – Estrat´
egias de ramifica¸
c˜
ao
Dado um conjunto de n´os ainda n˜ao explorados, como escolher o n´o seguinte
a explorar?
Pesquisa em profundidade
Sele¸c˜ao do n´o que est´a mais fundo
na ´arvore (´ultimo n´o a ser gerado).
Pesquisa em largura
Sele¸c˜ao do n´o que est´a mais
acima na ´arvore (o n´o mais
an-tigo ainda n˜ao explorado).
O n´o mais promissor:
Sele¸c˜ao do n´o que tem melhor valor de fun¸c˜ao objetivo (aquele que
Quest˜
oes em aberto
• Selec¸c˜ao da vari´avel a ramificar – Seleccionado o n´o a explorar, que
vari´avel escolher para ramifica¸c˜ao, de entre todas as vari´aveis que n˜ao
tomam valores inteiros?
Algumas estrat´egias foram apresentadas na literatura, mas o seu
desempenho revelou-se extremamente dependente do problema concreto
a que s˜ao aplicadas.
⇓
Bibliografia
• Alves, Jos´e Carlos (1989). Provas de Aptid˜ao Cient´ıfica e Capacidade
Pedag´ogica. FEUP.
• Goldbarg, Marco Cesar e Luna, Henrique Pacca (2000). Otimiza¸c˜ao