Fundamentação do Método SIMPLEX
x1
x2
x2 ≤ 2
x1 ≤ 2
x1 + x
2 ≤ 3
AB
C
DE
F
G
(0,0) (2,0)
(2,1)
(1,2)(0,2)
(0,3)
(3,0)H
max z=x1 + 2x
2
z = 4
x* = (1,2), z* = 5
0,322
2max
21
21
2
1
21
≥≤+≤≤
+
xxxxx
xxx
Teorema Fundamental da Programação Linear
A solução ótima de um PPL, se existir, ocorre em pelo menos um vértice do conjunto de soluções viáveis.
Casos especiais:1) Múltiplas soluções ótimas2) Z ilimitada3) Não existe solução ótima4) Solução ótima degenerada
Forma-padrão de um PPL Um PPL está na forma padrão quando é posto na forma:
∑=
=n
jjjxcz
1(max)ou(min)
mibxan
jijij ,...,1
1=∀=∑
=
njx j ,...,10 =∀≥
mibi ,...,10 =∀≥sendo
0,322
2max
21
21
2
1
21
≥≤+≤≤
+
xxxxx
xxx
0,,,,322
0002max
54321
521
42
31
54321
≥=++=+=+
++++
xxxxxxxx
xxxx
xxxxx
=
322
100110101000101
5
4
3
2
1
xxxxx
Ax b
Forma Padrão
Z=Z=
Redução de um PPL qualquer à forma padrão
Restrições do tipo ≤
532 21 ≤+ xx
Restrições do tipo ≥
532 321 =++ xxx
76 421 =−+ xxx76 21 ≥+ xxx4 ≥ 0
x3 ≥ 0
Variável de folga
Variável de excesso
Princípio de funcionamento do Algoritmo SIMPLEX
SBF inicial
Determine VB que deve deixar a base
Determine VNB que deve entrar na base
Pare: Esta SBFé ótima
Encontre nova SBF
Esta SBF podeser melhorada?
Não
SimDescrição Geral do AlgoritmoInício: o problema deve estar na forma padrãoPasso 1: encontrar uma SBF inicial para o problema de PLSBF = SBF atualPasso 2: verificar se a SBF atual é a solução ótima do problema de PL enquanto a SBF atual não é a solução ótima do problema de PL faça Encontrar uma SBF adjacente com melhor valor na função objetivo SBF adjacente = SBF atual fim-enquanto
Princípio de funcionamento do Algoritmo SIMPLEX
PPL na forma canônica: Base é a identidade e coeficientes das VB’s na função objetivo são todos nulos.
=
322
100110101000101
5
4
3
2
1
xxxxx
Z – x1 -x
2 +x
3+x
4+x
5 = 0
VB Z x1 x2 x3 x4 x5 const1 -1 -2 0 0 0 0
x3 0 1 0 1 0 0 2x4 0 0 1 0 0 0 2x5 0 1 1 0 1 1 3
Passo 1: encontrar uma Solução Básica Factível - SBF inicial
Solução inicial:
x(0) = (0 0 2 2 3)t ; z = 0
VB = {x3 = 2, x4 = 2, x5 = 2}
VNB = {x1 = 0, x2 = 0}
VB Z x1 x2 x3 x4 x5 const1 -1 -2 0 0 0 0
x3 0 1 0 1 0 0 2x4 0 0 1 0 0 0 2x5 0 1 1 0 1 1 3
Passo 2: Teste de otimalidade
Solução inicial:
x(0) = (0 0 2 2 3)t ;
z = 0
Como x1 e x2 são negativos, a SBF não é ótima, pois quaquer incremento em uma das duas variáveis resultará em SBF adjacente melhor do que a SBF atual.
Iteração 1: Determinar uma SBF adjacente melhor
determinar a variável não básica que entrará na base (maior coeficiente)
Determinar a variável básica que sairá da base
Princípio de funcionamento do Algoritmo SIMPLEX
L2 ← L1
L1 ← L1 + 2L3
Transformações elementares:
VB Z x1 x2 x3 x4 x5 const1 -1 -2 0 0 0 0
x3 0 1 0 1 0 0 2x4 0 0 1 0 0 0 2x5 0 1 1 0 1 1 3
L3=L
3/1
L4 ← L4 -1L3
Princípio de funcionamento do Algoritmo SIMPLEX
VB = {x3 = 2, x2 = 2, x5 = 1}
VNB = {x1 = 0, x4 = 0}
Final da Iteração 1:
x(1) = (0 2 2 0 1)t ; z = 4
Z x1 x2 x3 x4 x5 const1 -1 0 0 0 0 4
x3 0 1 0 1 0 0 2x2 0 0 1 0 0 0 2
x5 0 1 0 0 1 1 1
Princípio de funcionamento do Algoritmo SIMPLEX
L2 ← L2 + (-1)L4
L1 ← L1 + (1)L4
Z x1 x2 x3 x4 x5 const1 -1 0 0 0 0 4
x3 0 1 0 1 0 0 2x2 0 0 1 0 0 0 2
x5 0 1 0 0 1 1 1
Z x1 x2 x3 x4 x5 const1 0 0 0 1 1 5
x3 0 0 0 1 -1 -1 1x2 0 0 1 0 0 0 2x1 0 1 0 0 1 1 1
L3 ← L3
L4 ← L4 /1
Princípio de funcionamento do Algoritmo SIMPLEX
Z x1 x2 x3 x4 x5 const1 0 0 0 1 1 5
x3 0 0 0 1 -1 -1 1x2 0 0 1 0 0 0 2x1 0 1 0 0 1 1 1
VB = {x1 = 1, x2 = 2, x3 = 1}
VNB = {x4 = 0, x5 = 0}Final da Iteração 2:
x(2) = (1 2 1 0 0)t ; z = 5
Situação em que a origem não pode ser solução inicial:
Exemplo 2
0,322
2max
21
21
2
1
21
≥≥+≤≤=+
xxxxx
xzxx
0,,,,322
0002max
54321
521
42
31
54321
≥=−+=+=+=++++
xxxxxxxx
xxxx
zxxxxx
=
− 322
100110101000101
5
4
3
2
1
xxxxx
Ax b