Programação Linear Inteira
O Algoritmo Simplex Haroldo Gambini Santos
Universidade Federal de Ouro Preto - UFOP
30 de agosto de 2011
1 / 32
Programação Linear Inteira,O Algoritmo Simplex
Denições Forma Padrão Soluções Básicas Simplex
Denições Preliminares
Conjunto Convexo
Um conjunto de pontos S é um Conjunto Convexo se o segmento de linha juntando qualquer par de pontos em S é completamente contido em S. Convexo ou Não ? a b c d A A A B B E B C D 2 / 32
Programação Linear Inteira,O Algoritmo Simplex
Denições Forma Padrão Soluções Básicas Simplex
Denições Preliminares
Ponto Extremo
Em um conjunto convexo S um ponto P é um Ponto Extremo se cada segmento de linha que ca completamente em S e contém P tem Pcomo nal da linha.
Um Poliedro - Quais são PEs ?
E F D B C A x 1 60 50 10 20 30 40 50 60 40 30 20 10
S
HProgramação Linear Inteira,O Algoritmo Simplex
Notas
Notas
Forma Padrão
Dizemos que um PL (Programa Linear) está na forma padrão se:
todas as restrições são de igualdade todas as variáveis são não negativas (≥ 0)
A conversão de um PL qualquer para a forma padrão é feita com os seguintes passos:
para restrições de ≤ e ≥ transformamos em igualdade através da introdução de variáveis de folga
signicado: falta ou excesso na igualdade
variáveis que podem ser negativas são substituídas por duas variáveis, representando a parte positiva e negativa da mesma
4 / 32
Programação Linear Inteira,O Algoritmo Simplex
Denições Forma Padrão Soluções Básicas Simplex
Exemplo
3x1+ 2x2≥ 6 ⇓ 3x1+ 2x2− s1= 6 ... 50x1+ 35x3≤ 80 ⇓ 50x1+ 35x3+ s3= 80 5 / 32Programação Linear Inteira,O Algoritmo Simplex
Denições Forma Padrão Soluções Básicas Simplex
Forma Padrão
Exercício
Coloque na forma padrão: min : 3x1+ x2 s.a. : x1 ≥ 3 x1 + x2 ≤ 4 2x1 − x2 = 3 x1, x2≥ 0
Programação Linear Inteira,O Algoritmo Simplex
Notas
Notas
Forma Padrão
max(ou min) :
z = c1x1+ c2x2+ . . . + cnxn s.a. a11x11 a12x12 . . . a1nx1n = b1 a21x21 a22x22 . . . a2nx2n = b2 ... ... ... ... ... am1xm1 am2xm2 . . . amnxmn = bm xi≥ 0 ∀i ∈ 1, . . . , n 7 / 32
Programação Linear Inteira,O Algoritmo Simplex
Denições Forma Padrão Soluções Básicas Simplex
Forma Padrão
Considere: A = a11 a12 . . . a1n a21 a22 . . . a2n ... ... ... am1 am2 . . . amn x = x1 x2 ... xn , b = b1 b2 ... bm Então o sistema de equações de qualquer PL pode ser escrito como:
Ax = b
8 / 32
Programação Linear Inteira,O Algoritmo Simplex
Denições Forma Padrão Soluções Básicas Simplex
Variáveis Básicas
Denição
Em um sistema de equações com n variáveis e m restrições denimos como solução básica uma solução onde temos:
m variáveis para as quais o sistema é resolvido, essas são chamadas Variáveis Básicas, as quais denotaremos por V B
m − n o restante das variáveis permanece xada em zero - as Variáveis Não-Básicas - V NB Exemplo x1 + x2 − x2 = 3 + x3 = −1
Verique as soluções paraV B = {x1, x2}eV B = {x2, x3}
Programação Linear Inteira,O Algoritmo Simplex
Notas
Notas
Variáveis Básicas
Todo conjunto de V B permite a obtenção de uma solução básica ?
x1 +2x2 +x3 = 1
2x1 +4x2 +x3 = 3
Tente BV = {x1, x2}
10 / 32
Programação Linear Inteira,O Algoritmo Simplex
Denições Forma Padrão Soluções Básicas Simplex
Pontos Extremos e Soluções Básicas
Factíveis
Denição
Qualquer solução básica onde todas as variáveis são não negativas é uma Solução Básica Factível - SBF. Teorema
Um ponto na região factível de um PL é um Ponto Extremo se e somente se é uma Solução Básica Factível para o PL.
11 / 32
Programação Linear Inteira,O Algoritmo Simplex
Denições Forma Padrão Soluções Básicas Simplex
Pontos Extremos
max : 4x1 +3x2 s.a. : x1 +x2 ≤ 40 2x1 +x2 ≤ 60 x1, x2 ≥ 0 ⇓ max : 4x1 +3x2 s.a. : x1 +x2 +x3 = 40 2x1 +x2 +x4 = 60 x1, x2, x3, x4 ≥ 0 E F D B C A x2 x1 60 50 10 20 30 40 50 60 40 30 20 10Ex.: V B = {x1, x3}corresponde a qual ponto ? Qual o valor de x3, x2 e x4na SBF desse ponto ?
Programação Linear Inteira,O Algoritmo Simplex
Notas
Notas
Pontos Extremos
E F D B C A x2 x1 60 50 10 20 30 40 50 60 40 30 20 10 x1 +x2 +x3 = 40 2x1 +x2 +x4 = 60 x1, x2, x3, x4 ≥ 0 BV SBF Ponto Extremo x1, x2 x3= x4= 0, x1= x2= 20 E x1, x3 x2= x4= 0, x1= 30, x3= 10 C x1, x4 x2= x3= 0, x1= 40, x3= −20 − x2, x3 x1= x4= 0, x3= −20, x2= 60 − x2, x4 x1= x3= 0, x2= 40, x4= 20 B x3, x4 x1= x2= 0, x3= 40, x4= 60 F 13 / 32Programação Linear Inteira,O Algoritmo Simplex
Denições Forma Padrão Soluções Básicas Simplex
PLs Degenerados
Degeneração
Eventualmente, mais de um Conjunto de Variáveis Básicas pode corresponder a um mesmo Ponto Extremo. Nesse caso dizemos que o Programa Linear é Degenerado.
O impacto de soluções degeneradas na resolução dos PLs será discutido posteriormente.
14 / 32
Programação Linear Inteira,O Algoritmo Simplex
Denições Forma Padrão Soluções Básicas Simplex
Direção Ilimitada
Denição
Em um PL com região factível S e restrições Ax = b, x ≥ 0 dizemos que d é uma Direção Ilimitada se para qualquer solução x ∈ Se qualquer c ≥ 0:
x + cd ∈ S
Programação Linear Inteira,O Algoritmo Simplex
Notas
Notas
Direção Ilimitada
min : 50x1 +100x2 s.a. : 7x1 +2x2 −x3 = 28 2x1 +12x2 −x4 = 24 d = 1 1 9 14 z= 600 z= 320 (10) (4, 4) B E C x2 x1 4 2 (11) 6 8 10 12 14 2 4 6 8 10 12 14 d A 16 / 32Programação Linear Inteira,O Algoritmo Simplex
Denições Forma Padrão Soluções Básicas Simplex
Pontos Extremos e Soluções Factíveis
Teorema
Considere um PL na forma padrão com Soluções Básicas Factíveis
b1, b2, . . . , bk
Qualquer ponto x na região factível do PL pode ser escrito no formato: x = d + k X i=1 σibi
sendo que d = 0 ou é a direção ilimitada e Pk i=1σi= 1.
17 / 32
Programação Linear Inteira,O Algoritmo Simplex
Denições Forma Padrão Soluções Básicas Simplex
Combinações Convexas de SBFs
Exemplo PL Limitado
max : 4x1 +3x2 s.a. : x1 +x2 ≤ 40 2x1 +x2 ≤ 60 x1, x2 ≥ 0 Ponto H (24,12) não é SBF. Pode ser escrito como a combinação convexa de E e C:H= 0,6 E + 0,4 C Ponto G também não é BFS. Pode ser escrito como :
G=1 6F+ 5 6H ⇓ G=1 6F+ 5 6(0, 6E + 0, 4C) E F D B C A x 1 60 50 10 20 30 40 50 60 40 30 20 10 H G
Programação Linear Inteira,O Algoritmo Simplex
Notas
Notas
Combinações Convexas de SBFs
Exemplo PL Ilimitado
7x1 +2x2 −x3 = 28 2x1 +12x2 −x4 = 24 Descrevendo F em termos de SBFs. Direção Ilimitada: Inclinação para ir de C a F : 4−0 14−12 d = 2 4 22 52 b1= 12 0 56 0 x = 14 4 78 52 Desse modo obtemos: x = d + b1 z= 600 z= 320 (10) (4, 4) B E C F A D x2 x1 4 2 (11) 6 8 10 12 14 2 4 6 8 10 12 14 19 / 32
Programação Linear Inteira,O Algoritmo Simplex
Denições Forma Padrão Soluções Básicas Simplex
O Algoritmo Simplex
Passo 1 Converta o PL para a Forma Padrão. Passo 2 Obtenha uma Solução Básica Factível (se
possível) da Forma Padrão.
Passo 3 Teste de Otimalidade: Determine se a Solução Básica é Ótima. Se Ótima Pare.
Passo 4 Caso não seja ótima - Mudança de Base: determine:
qual variável não básica irá entrar na base, com o intuito de melhorar a função objetivo;
qual variável básica irá sair da base.
Passo 5 Utilize as operações elementares para computar a Nova Solução Básica e volte para o Passo 3.
20 / 32
Programação Linear Inteira,O Algoritmo Simplex
Denições Forma Padrão Soluções Básicas Simplex
Exemplo - Móveis Dakota
A empresa Dakota fabrica Mesas, Armários e Cadeiras. A manufatura de cada um desses móveis utiliza madeira e dois tipos de trabalho: acabamento e carpintaria. A necessidade de cada recurso é dada abaixo:
Recurso Mesa Armário Cadeira
Madeira (m2) 8 6 1
Acabamento (horas) 4 2 1,5
Carpintaria (horas) 2 1,5 0,5
Tem-se disponível 48 m2de madeira, 20 horas de acabamento e
8 horas de carpintaria. As mesas são vendidas por $ 60, armários por $ 30 e cadeira por $ 20. A empresa acredita que a demanda por mesas e cadeiras é ilimitada, enquanto que no máximo 5 armários serão vendidos.
Programação Linear Inteira,O Algoritmo Simplex
Notas
Notas
Móveis Dakota
max z = 60x1 + 30x2 + 20x3 s.t. : 8x1 + 6x2 + x3 ≤ 48 4x + 2x2 + 1, 5x3 ≤ 20 2x1 + 1, 5x2 + 0, 5x3 ≤ 8 x2 ≤ 5 x1, x2, x3≥ 0 22 / 32Programação Linear Inteira,O Algoritmo Simplex
Denições Forma Padrão Soluções Básicas Simplex
Forma Padrão
Linha 0 z 60x1 30x2 20x3 = 0 1 8x1 +6x2 +1x3 +x4 = 48 2 4x1 +2x2 +1,5x3 +x5 = 20 3 2x1 +1,5x2 +0,5x3 +x6 = 8 4 x2 +x7 = 5 23 / 32Programação Linear Inteira,O Algoritmo Simplex
Denições Forma Padrão Soluções Básicas Simplex
Primeira Solução Básica Factível
Linha VariáveisBásicas
0 z 60x1 30x2 20x3 = 0 z=0 1 8x1 +6x2 +1x3 +x4 = 48 x4=48 2 4x1 +2x2 +1,5x3 +x5 = 20 x5=20 3 2x1 +1,5x2 +0,5x3 +x6 = 8 x6=8 4 x2 +x7 = 5 x7=5 VNB = x1, x2, x3 z = 60x1+ 30x2+ 20x3 Quem entra ?
x1possibilita maior ganho por unidade e será aumentado. Até qual limite ?
Programação Linear Inteira,O Algoritmo Simplex
Notas
Notas
Limite para Aumento de x1
Linha Variáveis Básicas 0 z 60x1 30x2 20x3 = 0 z=0 1 8x1 +6x2 +1x3 +x4 = 48 x4=48 2 4x1 +2x2 +1,5x3 +x5 = 20 x5=20 3 2x1 +1,5x2 +0,5x3 +x6 = 8 x6=8 4 x2 +x7 = 5 x7=5 Limites Linha Restrição Máx x1 1 x4= 48 − 8x1 x4≥ 0 48/8 2 x5= 20 − 4x1 x5≥ 0 20/4 ∗3 x6= 8 − 2x1 x6≥ 0 8/2 4 x1não aparece x7≥ 0 ∞∗limite mais apertado
25 / 32
Programação Linear Inteira,O Algoritmo Simplex
Denições Forma Padrão Soluções Básicas Simplex
Calculando a Nova Base
Linha VariáveisBásicas
0 z 60x1 30x2 20x3 = 0 z=0
1 8x1 +6x2 +1x3 +x4 = 48 x4=48
2 4x1 +2x2 +1,5x3 +x5 = 20 x5=20
3 2x1 +1,5x2 +0,5x3 +x6 = 8 x6 ↑ x1
4 x2 +x7 = 5 x7=5
Na linha 3 a variável x6sairá da base e entrará a variável x1. Pivoteamento:
Executam-se as operações elementares para que x1apareça com
coeciente 1 nessa linha e com coeciente 0 em todas as outras. A linha 3 é dita linha pivô.
26 / 32
Programação Linear Inteira,O Algoritmo Simplex
Denições Forma Padrão Soluções Básicas Simplex
Nova SBF
Linha VariáveisBásicas
0 z +15x2 5x3 +30x6 = 240 z=240 1 x3 +x4 4x6 = 16 x4=16 2 x2 +0,5x3 +x5 2x6 = 4 x5=4 3 x1 +0,75x2+0,25x3 +0,5x6 = 4 x1=4 4 x2 +x7 = 5 x7=5 É ótima ?
Se não, quem entra e quem sai da base ?
Programação Linear Inteira,O Algoritmo Simplex
Notas
Notas
Pivoteamento
Linha VariáveisBásicas
0 z +15x2 5x3 +30x6 = 240 z=240 1 x3 +x4 4x6 = 16 x4=16 2 x2 +0,5x3 +x5 2x6 = 4 x5 ↑ x3 3 x1 +0,75x2 +0,25x3 +0,5x6 = 4 x1=4 4 x2 +x7 = 5 x7=5 28 / 32
Programação Linear Inteira,O Algoritmo Simplex
Denições Forma Padrão Soluções Básicas Simplex
Nova SBF
Linha Variáveis Básicas 0 z +5x2 +10x5 +10x6 = 280 z=280 1 2x2 +x4 +2x5 8x6 = 24 x4=24 2 2x2 +x3 +2x5 4x6 = 8 x3=8 3 x1 +1,25x2 0,5x5 +1,5x6 = 2 x1=2 4 x2 +x7 = 5 x7=5função objetivo:max z = −5x2− 10x5− 10x6 sem variáveis atrativas
Solução Ótima (x1, . . . , x3): (2 , 0 , 8) Base Ótima (x1, . . . , x7): (2 , 0 , 8 , 24 , 0 , 0 , 5)
29 / 32
Programação Linear Inteira,O Algoritmo Simplex
Denições Forma Padrão Soluções Básicas Simplex
Base Ótima - Informações
Linha VariáveisBásicas
0 z +5x2 +10x5 +10x6 = 280 z=280 1 2x2 +x4 +2x5 8x6 = 24 x4=24 2 2x2 +x3 +2x5 4x6 = 8 x3=8 3 x1 +1,25x2 0,5x5 +1,5x6 = 2 x1=2 4 x2 +x7= 5 x7=5 Custo Reduzido (CR)
Indicado na linha 0 signica: quanto o aumento de uma unidade em cada variável pode reduzir a f.o. z
VB tem CR 0 na base ótima
VNB (ex. x2) na base ótima com 5 indica que aumentar x2em 1 pode
diminuir em 5 unidades a f.o.
Programação Linear Inteira,O Algoritmo Simplex
Notas
Notas
Base Ótima - Informações
Restrições Ativas - Binding ConstraintsRestrições com variável de folga igual a zero.
Linha
Variáveis
Básicas FolgaVar. Restrição Original 1 2x2 +x4 +2x5 8x6 = 24 x4=24 x4=24 +8x1+6x2+x3≤48
2 2x2+x3 +2x5 4x6 = 8 x3=8 x5=0 +4x1+2x2+1,5x3≤20
3 x1 +1,25x2 0,5x5 +1,5x6 = 2 x1=2 x6=0 +2x1+1,5x2+0,5x3≤8
4 x2 +x7= 5 x7=5 x7=5 x2≤5
As restrições 2 e 3, (horas de acabamento e carpintaria) são as únicas que estão limitando o aumento do lucro.
31 / 32
Programação Linear Inteira,O Algoritmo Simplex
Denições Forma Padrão Soluções Básicas Simplex
Base Ótima - Informações
Restrições Inativas - Non-binding Constraints
Restrições com variável de folga > 0.
Linha
Variáveis
Básicas FolgaVar. Restrição Original 1 2x2 +x4 +2x5 8x6 = 24 x4=24 x4=24 +8x1+6x2+x3≤48
2 2x2 +x3 +2x5 4x6 = 8 x3=8 x5=0 +4x1+2x2+1,5x3≤20
3 x1 +1,25x2 0,5x5+1,5x6 = 2 x1=2 x6=0 +2x1+1,5x2+0,5x3≤8
4 x2 +x7 = 5 x7=5 x7=5 x2≤5
As restrições 1 e 4, (qtd. de madeira e demanda de armários) são restrições com folga. Ter mais madeira, por exemplo, não vai permitir uma produção maior.
32 / 32
Programação Linear Inteira,O Algoritmo Simplex
Notas
Notas