Você está na página 1de 81

IA 810 Otimização de Sistemas de Grande Porte

2-Programação Linear

ProfFernandoGomide DCA-FEEC-Unicamp
Conteúdo
1. Algoritmo simplex
2. Algoritmo simplex revisado
3. Dualidade em programação linear
4. Algoritmo dual simplex
5. Algoritmo branch-and-bound

ProfFernandoGomide DCA-FEEC-Unicamp
1-Algoritmo simplex

 Geometria da programação linear

max z = x1 + 3 x2
sa − x1 + x2 ≤ 1
x1 + x2 ≤ 2
x1 , x2 ≥ 0

ProfFernandoGomide DCA-FEEC-Unicamp
 Solução ótima finita

x2
– x1+ x2 = 1

4 (1/2, 3/2)

3 c=5

c=3

2 1 x1
c=0
x1+ x2 = 2

x1+ 3x2 = constante = c


ProfFernandoGomide DCA-FEEC-Unicamp
 Solução ilimitada

x2
– x1+ x2 = 1

x1

x1+ x2 = 2
 Modelo infactível (sem solução)

x2
– x1+ x2 = 1

x1

x1+ x2 = – 1
 Problema de programação linear
– não tem solução
– solução ilimitada
– solução ótima única
– número infinito de soluções ótimas

 Propriedade
– solução ótima é um ponto extremo
 Forma canônica

min cx
sa Ax ≤ b
x ≥0

x ∈ R n , x = ( x1 , x2 ,K , xn )

A ( m × n ), b ∈ R m , c ∈ R n

rank( A) = m
 Forma padrão

min cx
sa Ax = b
x ≥0

 Variáveis não negativas

xk = xk′ − xk′′ , xk′ , xk′′ ≥ 0


 Variáveis de folga
n n
∑ aij x j ≤ bi → ∑ aij x j + xn + i = b, xn + i ≥ 0
j =1 j =1

 Variáveis de excesso
n n
∑ aij x j ≥ bi → ∑ aij x j − xn + i = b, xn + i ≥ 0
j =1 j =1
 Teoremas básicos da programação linear

Definição 1: uma solução factível para um problema de programação linear


é um vetor x∈Rn que satisfaz as restrições principais e não negatividades.

Definição 2: matriz básica é uma matriz m×m formada por m colunas de A.

Definição 3: solução básica é o único vetor determinado pela escolha de


uma matriz básica, fazendo as n – m variáveis associadas às colunas que
não estão na matriz básica iguais à zero, e resolvendo o sistema (não
singular) de equações para as m variáveis restantes.
Definição 4: uma solução básica factível é uma solução básica não negativa.

Definição 5: uma solução básica factível não degenerada é uma solução


básica factível com exatamente m componentes xi > 0.

Definição 6: uma solução ótima é uma solução básica factível que minimiza z.
 Exemplos

- x1 + x2 + x3 =1
x1 + x2 + + x4 = 2
xi ≥ 0 , i = 1,K ,4

1 0 
B=  ⇒ x1 = 0, x2 = 0, x3 = 1, x4 = 2
 0 1 

− 1 0
B=  ⇒ x1 = –1, x2 = 0, x3 = 0, x4 = 3
 0 1 
Teorema 1: a função objetivo z tem o seu mínimo em um ponto extremo do
conjunto de restrições. Se a função objetivo tem seu mínimo em mais de um
ponto extremo, então ela possui o mesmo valor para todo ponto do segmento
que conecta estes pontos extremos.

Teorema 2: um vetor x∈Rn é um ponto extremo do conjunto de restrições se


e somente se x é uma solução básica factível (sbf).

n n!
nsbf ≤   =
 m  ( n − m )! m!
 Sistema de equações

a11 x1 + a12 x2 + K + a1n xn = b1


a21 x1 + a22 x2 + K + a2 n xn = b2
M
am1x1 + am 2 x2 + K + amn xn = bm

S = { x ∈ R n | Ax = b} conjunto solução
 Sistemas equivalentes

S1 = { x ∈ R n | A1x = b1}

S 2 = { x ∈ R n | A2 x = b2 }

S1 = S 2

conjuntos solução iguais


 Transformação de um sistema em outro equivalente

Operação elementares com linhas

1 – multiplicar qualquer equação Ei por uma constante k ≠ 0.

2 – trocar qualquer equação Et pela equação Et + k Ei onde Ei é


qualquer outra equação e k ≠ 0.
 Exemplo

- x1 + x2 + x3 =1
x1 + x2 + + x4 = 2

E2 ← E2 – 1 E1

- x1 + x2 + x3 =1
2 x1 − x3 + x4 = 1
 Pivoteamento

Definição 7: uma sequência particular de operações elementares com linhas


que substitui um sistema linear por outro equivalente no qual uma variável
especificada tem o coeficiente unitário em uma equação e nulo nas restantes.

1 – selecionar um termo arsxs na linha (equação) r, coluna s, com ars ≠ 0.

2 – substituir a r-ésima equação pela r-ésima equação multiplicada por


1/ ars.

3 – para cada i = 1,...,m exceto para i = r, substituir a i-ésima equação Ei


por Ei – ais/ars Er.
 Exemplo

2 x1 + 3 x2 − 4 x3 + x4 = 1 E1
x1 − x2 + + 5 x4 = 6 E2
3 x1 + x2 + x3 =2 E3

3 1 1
x1 + x2 − 2 x3 + x4 =
2 2 2
x1 − x2 + + 5 x4 = 6
3 x1 + x2 + x3 =2
3 1 1
x1 + x2 − 2 x3 + x4 =
2 2 2
5 9 11
− x2 + 2 x3 + x4 =
2 2 2
3 x1 + x2 + x3 =2

3 1 1
x1 + x2 − 2 x3 + x4 =
2 2 2
5 9 11
− x2 + 2 x3 + x4 =
2 2 2
7 3 1
− x2 + 7 x3 − x4 =
2 2 2
 Sistemas canônicos

a11 x1 + a12 x2 + K + a1m xm + a1m +1xm +1 + KK + a1n xn = b1


a21 x1 + a22 x2 + K + a2 m xm + a2 m +1 xm +1 + KK + a2 n xn = b2
M
am1x1 + am 2 x2 + K + amm xm + am ,m +1 xm +1 + K + amn xn = bm

B → B–1 → xB = (x1, x2,....,xm)


 Sistema canônico

x1 + a1m +1 xm +1 + KK + a1n xn = b1
x2 + a2 m +1 xm +1 + KK + a2 n xn = b2
O
xm + am , m +1 xm +1 + K + amn xn = bm

x1 = b1 , x2 = b2 ,K , xm = bm variáveis básicas
xm +1 = xm + 2 = K = xn = 0 variáveis não básicas
bi ≥ 0 , i = 1,K ,m ⇒ solução básica factível
∃i | bi = 0 ⇒ solução degenerada
 Algoritmo simplex

– Método simplex
• fase I: solução básica factível inicial
modelo infactível
• fase II: solução ótima
solução ilimitada
– Fase I e II
• usam o algoritmo simplex
 Sistema canônico aumentado (tableau simplex)

– Reescrever a função objetivo

z = c1x1 + c2 x2 + K + cn xn
− z + c1 x1 + c2 x2 + K + cn xn = 0

– Incluir no sistema canônico

x1 + a1m +1 xm +1 + KK + a1n xn = b1
x2 + a2 m +1 xm +1 + KK + a2 n xn = b2
O
xm + am, m +1 xm +1 + K + amn xn = bm
− z + cm +1, m +1 xm +1 + K + cn xn = − z
 Teste de otimalidade

Teorema 3: uma solução básica factível é uma solução ótima (min) se os


custos relativos (custo reduzido) são todos não negativos.

c j ≥ 0 j = m + 1,K , n
z : valor ótimo da função objetivo

Prova:

z = z + cm +1 xm +1 + K + cn xn
xm +1 , xm + 2 ,K , xn = 0
x1 , x2 ,K , xn ≥ 0
c j ≥ 0 , j = m + 1,K , n ⇒ c j x j ≥ 0
AlgoritmoSimplexBásico( ) retorna uma solução ótima
entrada: um modelo linear de otimização
x ← GerarSoluçãoFactívelInicial( )
c ← CalcularCustoReduzido(c, A, B)
se cj ≥ 0 ∀j ∈ {1,…,n} então retornar x
senão
repetir
determinar a variável não básica que entra na base (coluna pivô s)
determinar a variável básica que sai da base (linha pivô r)
fazer o pivoteamento
até que cj ≥ 0 ∀j ∈ {1,…,n}
retornar x
 Variável não básica que entra na base

cs = min{c j | c j < 0}
j

 Variável básica que sai da base

* br  bi 
xs = = min  
ars ais > 0  ais 

 Pivô
ars
Corolário 1: uma solução básica factível ótima é unica se os custos
reduzidos de todas as variáveis não básicas são positivos.

c j > 0 j = m + 1,K , n

Teorema 5: se, para alguma coluna s do sistema canônico, todos os


elementos são não positivos e o custo reduzido correspondente é
negativo, então o modelo é ilimitado.

Prova:

x1 = b1 − a1s xs
M
ais ≤ 0 i = 1,2 ,K m ⇒ xs → ∞
xm = bm − ams xs
z = z + cs xs cs < 0
 Exemplo

– Forma canônica

min − 10 x1 −12 x2 − 12 x3
sa x1 + 2 x2 + 2 x3 ≤ 20
2 x1 + x2 + 2 x3 ≤ 20
2 x1 + 2 x2 + x3 ≤ 20
x1 , x2 , x3 , x4 ≥ 0
– Forma padrão

min − 10 x1 −12 x2 − 12 x3
sa x1 + 2 x2 + 2 x3 + x4 = 20
2 x1 + x2 + 2 x3 + x5 = 20
2 x1 + 2 x2 + x3 + x6 = 20
x1,x2 ,x3,x4 ,x5 ,x6 ≥ 0

x = (0, 0, 0, 20, 20, 20) solução básica factível inicial


x1 x2 x3 x4 x5 x6
0 −10 −12 −12 0 0 0
x6 = 20 1 2 2 1 0 0
x5 = 20 2* 1 2 0 1 0
x6 = 20 2 2 1 0 0 1

x1 x2 x3 x4 x5 x6
100 0 −7 −2 0 5 0
x4 = 10 0 1.5 1* 1 −0.5 0
x1 = 10 1 0.5 1 0 0.5 0
x6 = 0 0 1 −1 0 −1 1
x1 x2 x3 x4 x5 x6
120 0 −4 0 0 0 0
x3 = 10 0 1.5 1 1 −0.5 0
x1 = 0 1 −1 0 −1 1 0
x6 = 10 0 2.5* 0 1 −1.5 1

x1 x2 x3 x4 x5 x6
136 0 0 0 3.6 1.6 1.6
x3 = 4 0 0 1 0.4 0.4 −0.6
x1 = 4 1 0 0 −0.6 0.4 0.4
x2 = 4 0 1 0 0.4 −0.6 0.4
 Solução básica factível inicial (Fase I)

min cx
sa Ax = b
x≥0

– Assumir, sem perda de generalidade, b ≥ 0


– Introduzir variáveis artificiais y ∈ Rm
– Criar problema auxiliar (modelo artificial)
 Modelo artificial

min y1 + y2 + L + ym
sa Ax + y = b
x≥0
y≥0

Inicialização: x = 0, y = b, B = I
 Exemplo

min x1 + x2 + x3
sa x1 + 2 x2 + 3x3 =3
− x1 + 2 x2 + 6 x3 =2
4 x2 + 9 x3 =5
3 x3 + x4 = 1
x1,x2 ,x3,x4 ≥ 0
 Modelo artificial

min y1 + y2 + y3 + y4
sa x1 + 2 x2 + 3x3 + y1 =3
− x1 + 2 x2 + 6 x3 + y2 =2
4 x2 + 9 x3 + y3 =5
3x3 + x4 + y4 = 1
x1,K ,x4 , y1 ,K , y4 ≥ 0
x1 x2 x3 x4 y1 y2 y3 y4
−11 0 −8 −21 −1 0 0 0 0
y1 = 3 1 2 3 0 1 0 0 0
y2 = 2 −1 2 6 0 0 1 0 0
y3 = 5 0 4 9 0 0 0 1 0
y4 = 1 0 0 3 1* 0 0 0 1

x1 x2 x3 x4 y1 y2 y3 y4
−10 0 −8 −18 0 0 0 0 1
y1 = 3 1 2 3 0 1 0 0 0
y2 = 2 −1 2 6 0 0 1 0 0
y3 = 5 0 4 9 0 0 0 1 0
x4 = 1 0 0 3* 1 0 0 0 1
x1 x2 x3 x4 y1 y2 y3 y4
−4 0 −8 0 6 0 0 0 7
y1 = 2 1 2 0 −1 1 0 0 −1
y2 = 0 −1 2* 0 −2 0 1 0 −2
y3 = 2 0 4 0 −3 0 0 1 −3
x3 = 1/3 0 0 1 1/3 0 0 0 1/3

x1 x2 x3 x4 y1 y2 y3 y4
−4 −4 0 0 −2 0 4 0 −1
y1 = 2 2* 0 0 1 1 −1 0 1
x2 = 0 −1/2 1 0 −1 0 1/2 0 −1
y3 = 2 2 0 0 1 0 −2 1 1
x3 = 1/3 0 0 1 1/3 0 0 0 1/3
x1 x2 x3 x4 y1 y2 y3 y4
0 0 0 0 0 2 2 0 1
x1 = 1 1 0 0 1/2 1/2 −1/2 0 1/2
x2 = 1/2 0 1 0 −3/4 1/4 1/4 0 −3/4
y3 = 0 0 0 0 0 −1 −1 1 0
x3 = 1/3 0 0 1 1/3 0 0 0 1/3

x1 x2 x3 x4
∗ ∗ ∗ ∗ ∗

x1 = 1 1 0 0 1/2

x2 = 1/2 0 1 0 −3/4
x3 = 1/3 0 0 1 1/3
2-Algoritmo simplex revisado
– Cada iteração simplex computa o sequinte:

1. custos reduzidos para calcular coluna s


cs = min{c j | c j < 0}
j
2. Supondo s-ésimo custo reduzido negativo, os elementos da coluna s e
das variáveis básicas para determinar o pivô

Ps = ( a1s ,K , ams )' x B = (b1 ,K ,bm )

br  bi 
= min   → ars
ars ais > 0  ais 
ProfFernandoGomide DCA-FEEC-Unicamp
 Modelo de programação linear na forma coluna

min c1x1 + K + cn xn
sa P1x1 + K + Pn xn = b
xi ≥ 0, i = 1,K , n

Pj = ( a1 j ,K , amj )'

A = [ P1 ,K , Pj ,K Pn ]

rank( A) = m

 Assumir modelo factível

ProfFernandoGomide DCA-FEEC-Unicamp
 Definindo

B = [ Pj1 ,K , Pj2 ,K Pjm ]


x B = ( x j1 ,K , x j2 ,K x jm ) x B = B −1b = b
c B = (c j1 ,K , c j2 ,K c jm ) xB ≥ 0

 Sistema canônico aumentado (tableau)

P̂j = ( a1 j ,K , amj , c j )' , j = 1, K ,n


P̂n +1 = (0 ,K ,0 ,1)'
b̂ = (b1 ,K ,bm ,0)'
P1x1 + K + Pn xn = b n
≡ ∑ P̂i xi + P̂n +1 (− z ) = b̂
c1x1 + K + cn xn = z i =1

B 0
B̂ = [ P̂j1 ,K , P̂j2 ,K , P̂jm ,P̂n +1 ] =  (m+1)×(m+1)
c B 1 

Modelo factível ⇒ B̂ matriz básica factível

−1  B −1 0
B̂ = −1 
 − c B B 1 
Definição 8: π é o vetor de multiplicadores simplex associado à base B.
π = (π1,K ,π m ) = c B B −1

Nota: multiplicando a primeira equação por da restrição principal por π1, a


segunda por π2, e a m-ésima por πm , somar e subtrair da função objetivo:

c j − πP j = 0 j básica ⇒ π = c B B −1

 −1  B −1 0
−1 B 0 −1
B̂ =  −1  ⇒ B̂ = 
 − c B B 1   − π 1 
n
B [ ∑ P̂i xi + P̂n +1 (− z )] = B −1b̂
−1
i =1

 a11 L a1n 0  x1   b1 
a L a2 n  x  b 
 21  2   2
B̂ −1  O   M  = B̂ −1  M 
    
am1 L amn 0   xn  bm 
 c1 L cn 1 − z   0 
n
−1
B [ ∑ P̂i xi + P̂n +1 (− z )] = B −1b̂
i =1

x j1 b1
O + ∑ Pj x j = M
j = nb
x jm bm
− z + ∑ c j x j = − zo
j = nb
 Pj   B −1 0  Pj 
 =  
 j   − π 1   c j 
c

P j = B −1 P j atualiza coluna

c j = c j − πP j atualiza custo reduzido

Nota: dada B–1 e π, as quantidades c j e Pj necessárias para uma


iteração simplex são obtidas a partir dos dados originais cj e Pj
cs = min{c j | c j < 0}
j

Ps = B −1Ps

br  bi 
= min   ⇒ pivô ars
ars ais > 0  ais 

• xs entra na base e xr sai da base


• Ps entra na base e Pjr sai da base
• Gerar inversa da nova matriz básica
 Inversa da nova base

 M M a1s 
 M M M 

 P̂j L P̂jm P̂n +1 M u1 L u m +1 M ars 
B̂ −1 ×  1
M M M 


 M M ams 
 
 M M cs 

−1  B −1 0
B̂ = 
 − π 1 
 M M a1s 
 M M M 

u1 L u r L u m +1 M B̂ −1 M ars  pivô
 
 M M M 
 M M ams 
 
 M M cs 

[u
1 L u r −1 α u r +1 L u m +1 M B̂ −1
new M u r ]
 Simplex revisado: resumo

−1
1– B̂m +1 = ( −π1, − π 2 ,K , − π m ,1)

m
c j = c j − ∑ π i aij = c j − πP j
i =1

2– cs = min c j
j

3– cs ≥ 0 , solução ótima

 Ps  −1  Ps 
4– cs < 0 , calcular   = B̂  
 cs   cs 
5– Ps = ( a1s ,K ,ams )'

ais ≤ 0 ,i = 1,K , m modelo ilimitado

br bi
6– = min =θ
ars ais > 0 ais

 −1 M Ps 
7–  B  pivô ars , colunas 1L m + 1 nova inversa
 M cs 

( x B )i ← ( x B ) i − θais , i ≠ r

( x B )i ← θ
 Simplex revisado: forma produto da inversa

1 η1 
 1 η 
 2 
 O M   − ais
   a i = 1,K ,m + 1,i ≠ r
E= ηr  ηi =  rs
 M 1  
1
i=r
   ars
 O 
 1 
 ηm +1 

coluna r
Bn−1 = EBo−1

Bk−1 = Ek Ek −1 K E1

π = (K ((c B Ek ) Ek −1 ) K) E1

Ps = B −1Ps = Ek (K ( E2 ( E1Ps )) K)
3-Dualidade em programação linear

Primal Dual

min cx max πb
sa Ax ≥ b sa A′π′ ≤ c
x≥0 π≥0

ProfFernandoGomide DCA-FEEC-Unicamp
Teorema 6: se x e π são soluções primal e dual factíveis, então

z = cx ≥ π b = v

Prova:

x ≥ 0, Ax = b, A′π ′ ≤ c
Logo
cx ≥ π A x = π b

ProfFernandoGomide DCA-FEEC-Unicamp
Teorema 7: se o dual e o primal possuem soluções factíveis, então ambos
tem solução ótima e min z = max v.

Prova:

Teorema 6: z*≥ v* ⇒ primal e dual tem solução ótima

x o solução primal
x o básica (primal tem solução ótima)
B o xB
o o
= b xB ≥0
πo = c B ( B o ) −1
c j = c j − π o P j ≥ 0 ; ∀j

A′( πo )′ ≤ c
v o = πob = c B ( B o ) −1 b = c B x B
o
= zo
ProfFernandoGomide DCA-FEEC-Unicamp
 Interpretação teoremas 6 e 7

z
min z = max v
v

v
 Pontos importantes
– restrições duais = condições otimalidade primal
• custos relativos aparecem como variáveis de folga
– multiplicador πo associado com base ótima primal é solução dual
– algoritmo simplex automaticamente fornece solução dual
– resolver problemas lineares: primal ou dual, o que for mais simplex
– multiplicadores simplex (variáveis duais): preços / custos marginais

ProfFernandoGomide DCA-FEEC-Unicamp
Corolário 2: se ou o primal ou o dual tem solução ótima, então o outro
também tem e o valores ótimos das funções objetivos são iguais.

Teorema 8: se ou o primal ou o dual tem solução ilimitada, então o outro


é infactível.

Prova:

Assumindo o primal ilimitado, pelo T2


πb ≤ – ∝ para π dual factível
existência solução dual factível ⇒ contradição

ProfFernandoGomide DCA-FEEC-Unicamp
Teorema 9: o par (xo, πo) com xo primal factível e πo dual factível possui xo
e πo primal e dual ótimo, respectivamente, se e somente se (c' – πoA)xo = 0

Prova:

x solução primal factível qualquer


A x = b ; cx = z
cx − πAx = z − πb
πb = v
(c − π A) x = z − v
( x o , πo ) primal e dual ótimo ⇒ z o − v o = 0 = (c − π o A) x o

ProfFernandoGomide DCA-FEEC-Unicamp

( x o , πo ) satisfaz (c − π o A) x o = z o − v o = 0
T1⇒ z o ≤ z e v o ≥ v ⇒ ( x o , πo ) é ótimo

 condição (c' – πoA)xo = 0 folga complementar

(c' – πoA)i xio = 0 ∀ i

cio = 0 ∀i (cio = ci − πo Pi )

ProfFernandoGomide DCA-FEEC-Unicamp
Classes de algoritmos de programação linear

Algoritmo Factibilidade Factibilidade Folga


primal dual complementar
Simplex satisfeita relaxada satisfeita

Dual simplex relaxada satisfeita satisfeita

Primal dual relaxada satisfeita satisfeita


4-Algoritmo dual simplex

 Algoritmo dual simplex


– simplex aplicado ao dual
– inicialmente:
c j ≥ 0 factibilid ade dual

c j = 0 folga complement ar

bi ≥/ 0 factibilid ade primal relaxada


 Algoritmo dual simplex

1– br = min bi < 0 linha pivô r

cs cj
2– = min coluna pivô s
− ars a rj <0 − arj

3– Se arj ≥ 0 ∀j , então primal infactível

4– Pivotear sobre ars

5– Se bi ≥ 0 , ∀i então solução ótima. Senão passo 1


 Exemplo

min 2 x4 + x5
sa x1 + 3x4 + x5 = 1
x2 − x4 + 5 x5 = 2
x3 − 2 x4 − 6 x5 = −1
x1,K , x5 ≥ 0
x1 x2 x3 x4 x5
–3 0 0 0 2 1
x1 = 1 1 0 0 3 1
x2 = 2 0 1 0 –1 5
x3 = –1 0 0 1 –2 –6*

x1 x2 x3 x4 x5
–19/6 0 0 1/6 5/3 0
x1 = 5/6 1 0 1/6 8/3 0
x2 = 7/6 0 1 –1/6 8/3 0
x4 = 1/6 0 0 –1/6 1/3 1
5-Algoritmo branch-and-bound

min cx
sa Ax ≤ b
x ∈ {1,0}

 Exemplo

Gerador
1 2 3 4
custo operação 7 12 5 14
potência 300 600 500 1600
1 se gerador j é ligado
xj = 
0 caso contrário

min 7 x1 + 12 x2 + 5 x3 + 14 x4
sa 300 x1 + 600 x2 + 500 x3 + 1600 x4 ≥ 700
x1 , x2 , x3 , x4 ∈{0 ,1}
 Definições

1 – soluções parciais: algumas das variáveis fixas, outras livres (notação #)

x = ( 1, #, 0, # ) solução parcial x1 = 1, x3 = 0 fixos, x2, x4 livres

2 – completamento de solução parcial: soluções completas consistentes com


a solução parcial e todas as componentes fixas

x = ( 1, #, #, 0 ) → ( 1, 0, 0, 0 ), ( 1, 0, 1, 0 ), ( 1, 1, 0, 0 ), ( 1, 1, 1, 0 )

factíveis
3 – nós: soluções parciais

4 – arcos: variáveis fixas de soluções parciais

5 – raiz: solução parcial x(0) = ( #, ...., # )

6 – nós ativos: soluções parciais não terminadas

7 – solução incumbente: melhor solução factível encontrada até então


 Algoritmo branch-and-bound
– termina solução parcial quando identifica melhor complementamento
– termina solução parcial quando esta não produz solução ótima
– solução parcial não terminada é ramificada (branch)
– cria novas soluções parciais a partir da solução parcial atual e das
variáveis livres correspondentes
– pára quando todas soluções parciais foram ramificadas ou terminadas
• solução incumbente, se existir, é ótimo global
• caso contrário modelo é infactível
 Problema candidato associado à uma solução parcial
– versão restrita do modelo, com variáveis fixas como na solução parcial
– completamentos factíveis são soluções factíveis do problema candidato
correspondente
– valor da função objetivo do melhor completamento factível é o valor
ótimo da função objetivo do problema candidato

 Exemplo x = ( #, 1, #, 0 )

min 7 x1 + 12 x2 + 5 x3 + 14 x4
sa 300 x1 + 600 x2 + 500 x3 + 1600 x4 ≥ 700
x1 , x3 , ∈{0,1}
x2 = 1, x4 = 0
 se uma relaxação de um problema candidato é infactível, então
a solução parcial associada pode ser terminada pois não existem
completamentos factíveis.

 se uma relaxação de um problema candidato possui valor da função


objetivo pior do que o valor da solução incumbente, então a solução
parcial pode ser terminada porque nehum complementamento factível
terá valor melhor do que o da solução incumbente (bound).

 se uma solução ótima de uma relaxação do problema candidato é


factível para o modelo original, então ela é o melhor completamento
associado à solução parcial

 esta solução, após comparação com a incumbente, se existir, pode ser


terminada
AlgoritmoBranchBoundBasico( ) retorna solução
entrada: modelo otimização discreta
inicialização: x0 = (#,...,# ) ou x0 incumbente com valor v0; t ← 0
repetir
se existe solução partial então selecionar uma delas xt
senão
se existe solução incumbente então ela é ótima; retornar (xt, vt)
senão modelo infactível; retornar
ResolveRelaxaçãoProblemaCandidado(xt);
se relaxação infactível então teminar xt, t ← t + 1
senão
se solução ótima relaxação pior do que solução incumbente corrente, então terminar
t=t+1
senão
se solução ótima relaxação satisfaz restrições então solução incumbente
candidata; terminar xt ; t = t + 1
senão escolher variável livre fracionária modelo relaxado ótimo;
criar dois novos arcos; t = t + 1
 Exemplo
~
x ( 0) = (0, 0, 0, 0.44)
v̂ = ∞ 0 v~ = 6.12

x4 = 1 x4 = 0
~
x (1) = (0, 0, 0,1) ~
x ( 2) = (0, 0.33,1, 0)
vˆ = 14 1 2
v~ = 14 v~ = 9

por solução x2 = 1 x2 = 0
~
x (3) = (0,1, 0.2, 0) ~
x ( 6) = (0.67, 0,1, 0)
3 6
v~ = 13 v~ = 9.67

x3 = 1 x3 = 0 x1 = 1 x1 = 0
~
x ( 4 ) = (0,1,1, 0) ~
x (5) = (0.33,1, 0, 0) ~
x ( 7 ) = (1, 0, 0.8, 0)
4 v~ = 17 5 v~ = 14.33 7 v~ = 11 10

por limite por limite infactível


x3 = 1 x3 = 0
~
x (8) = (1, 0,1, 0)
8 9
v~ = 12
por solução infactível
 arredondamento de soluções relaxadas parciais:
– quando aplicável, ajuda a encontrar incumbentes
– arredondamento feito antes de ramificar
– pode fornecer ótimo aproximado

 arredondamento não garante obtenção de novas incumbentes

 valor ótimo relaxação associado a nó pai de soluções parciais é um limitante


– superior para problemas de maximização
– inferior para problemas de minimização

 sempre que branch-and-bound obtém nova solução incumbente


– soluções parciais ativas cujos limitantes do nó pai é pior que a nova
solução podem ser terminada
 Estratégias de busca e de desempate
– primeiro em profundidade (depth fist)
• maior número componentes solução parcial fixos

– primeiro melhor (best first)


• solução ativa com melhor limitante estabelecido pelo pai

– depth forward best back


• profundidade; primeiro melhor quando termina uma solução parcial

– desempate: regra do filho mais próximo


Observação

Este material refere-se às notas de aula do curso IA 810 Otimização de


Sistemas de Grande da Faculdade de Engenharia Elétrica e de Computação
da Unicamp. Não substitui o livro texto, as referências recomendadas e nem
as aulas expositivas. Este material não pode ser reproduzido sem autorização
prévia dos autores. Quando autorizado, seu uso é exclusivo para atividades
de ensino e pesquisa em instituições sem fins lucrativos.

DCA-FEEC-Unicamp

Você também pode gostar