Escolar Documentos
Profissional Documentos
Cultura Documentos
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
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
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 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 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.
n n!
nsbf ≤ =
m ( n − m )! m!
Sistema de equações
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
- x1 + x2 + x3 =1
x1 + x2 + + x4 = 2
E2 ← E2 – 1 E1
- x1 + x2 + x3 =1
2 x1 − x3 + x4 = 1
Pivoteamento
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
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)
z = c1x1 + c2 x2 + K + cn xn
− z + c1 x1 + c2 x2 + K + cn xn = 0
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
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
* 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
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
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
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:
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
ProfFernandoGomide DCA-FEEC-Unicamp
Definindo
B 0
B̂ = [ P̂j1 ,K , P̂j2 ,K , P̂jm ,P̂n +1 ] = (m+1)×(m+1)
c B 1
−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
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
Ps = B −1Ps
br bi
= min ⇒ pivô ars
ars ais > 0 ais
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 )'
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:
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.
Prova:
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:
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
cio = 0 ∀i (cio = ci − πo Pi )
ProfFernandoGomide DCA-FEEC-Unicamp
Classes de algoritmos de programação linear
c j = 0 folga complement ar
cs cj
2– = min coluna pivô s
− ars a rj <0 − arj
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
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
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.
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
DCA-FEEC-Unicamp