Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
I 2 1 4
II 2 2 2
O lucro obtido por cada produto I é $1,00 e por cada produto II é $1,50.
Quanto fabricar de cada produto de modo que seja obedecida a
capacidade operativa das máquinas com o maior lucro possível ?
2 x + 2x ≤ 160 Máquina A x 2
1 2
Restrições
x + 2 x ≤ 120
1 2
Máquina B
2 2 160
4 x + 2x ≤ 280 Máquina C
x
A x ≤ b ⇒ 1 2. ≤ 120
1 2
x , x ≥ 0
1
Solução do Problema 2
Anular n variáveis. Uma vez que (n + m) é sempre maior que m,
sempre tem-se mais incógnitas de que equações, assim o sistema é sub-
determinado ⇒ infinitas soluções. No entanto, anulando n variáveis, o
sistema fica: m A m m x1 = m b1
Quais n variáveis deve-se anular para obter solução ótima ???
Fernando Nogueira Programação Linear 6
O Método
Reescrevendo a função-objetivo e as inequações como equações:
Z − x1 − 1.5x 2 − 0u1 − 0u 2 − 0u 3 = 0
2 x1 + 2x 2 + u1 + 0u 2 + 0u 3 = 160
x1 + 2x 2 + 0u1 + u 2 + 0u 3 = 120
4 x1 + 2x 2 + 0u1 + 0u 2 + u3 = 280
Deve-se achar uma solução inicial viável qualquer. A maneira mais
simples para isto é “zerar” as variáveis de controle (x1 = x2 = 0). Com
isso, as variáveis de folga assumem valores máximos (u1 = 160, u2 = 120
e u3 = 280). Esta é uma solução viável (nenhuma restrição foi violada),
porém é a pior possível, pois Z = 0.
Pode-se classificar as variáveis do problema como:
Variáveis Básicas: variáveis que compõem a solução em cada iteração.
Variáveis Não-Básicas: variáveis que foram anuladas.
Fernando Nogueira Programação Linear 7
Partindo de uma solução inicial qualquer, o Método Simplex verifica se
existe uma outra solução que seja melhor que a solução atual. Isto se dá
através da análise da função-objetivo: Z − x1 − 1.5x 2 − 0u1 − 0u 2 − 0u 3 = 0
Fazendo Z = x1 + 1.5x 2 + 0u1 + 0u 2 + 0u 3 , as derivadas parciais de Z em
relação as variáveis (de controle e de folga) fornecem a taxa de
crescimento de Z nas direções destas variáveis.
∂Z ∂Z ∂Z ∂Z ∂Z
=1 = 1.5 =0 =0 =0
∂x1 ∂x 2 ∂u1 ∂u 2 ∂u 3
O fato acima permite deduzir que enquanto houver variáveis não-básicas
com coeficientes negativos em Z − x1 − 1.5x 2 − 0u1 − 0u 2 − 0u 3 = 0 a solução
poderá ser melhorada. Uma vez que o objetivo é maximizar Z, deve-se
escolher dentre as variáveis não-básicas, aquela que possuir maior taxa
de variação (coeficiente mais negativo) para compor as variáveis básicas,
no caso x2. Para isso, alguma variável básica terá que deixar a base para
compor as variáveis não-básicas. Qual variável deve deixar a base, ou
seja, mudar do grupo das variáveis básicas para o grupo das variáveis
não-básicas ?
Fernando Nogueira Programação Linear 8
A medida que x2 (a variável que era não-básica e agora é variável básica)
aumenta, deve-se diminuir cada variável básica corrente correspondente
a uma linha na qual x2 tenha coeficiente positivo. Assim, quanto x2 pode
crescer antes que uma das variáveis básicas corrente atinja seu limite
inferior 0 (não viole nenhum restrição) ?
Z − x1 − 1.5x2 − 0u1 − 0u2 − 0u3 = 0
2x1 + + + 0u2 + 0u3 = 160 Para u1 = 0 ⇒ x2 = 80
2x2 u1
x1 + 2x2 + 0u1 + u2 + 0u3 = 120 Para u2 = 0 ⇒ x2 = 60
4x1 + 2x2 + 0u1 + 0u2 + u3 = 280 Para u3 = 0 ⇒ x2 = 140
obs: x1 = 0, pois é variável não− básica
}
2 2 1 0 0 160
1 2 0 1 0 120 Restrições
4 2 0 0 1 280
− 1 − 1 .5 0 0 0 0 } função-objetivo
Se o vetor [2 2 2 –1.5]t (correspondente a coluna de x2) transformar-se no
vetor [0 1 0 0]t (correspondente a coluna de u2), x2 estará pertencendo a
base e u2 sairá da base. Para realizar o Método de Gauss-Jordan é
necessário escolher o elemento pivô, o qual é obtido pela interseção da
coluna pivô com a linha pivô.
Fernando Nogueira Programação Linear 10
A coluna pivô é a coluna correspondente à variável que vai entrar na base
(x2 no caso) e a linha pivô é a linha na qual a interseção com a coluna
correspondente à variável que vai sair da base é igual a 1 (no caso a
interseção da 2 linha com a coluna correspondente a u2).
Realizando o Método de Gauss-Jordan a Tabela Simplex fica:
x 1 x 2 u 1 u 2 u 3 b
}
1 0 1 − 1 0 40
1 2 1 0 1 2 0 60 Restrições
3 0 0 − 1 1 160
− 1 4 0 0 3 4 0 90 } função-objetivo
Esta tabela refere-se ao seguinte sistema:
Z − 1 4 x1 − 0x2 − 0u1 + 3 4 u2 − 0u3 = 90 } função-objetivo
+ + − u2 + =
}
x1 0x2 u1 0u3 40
1 2 x1 + x2 + 0u1 + 1 2 u2 + 0u3 = 60 Restrições
3x1 + 0x2 + 0u1 − u2 + u3 = 160
Fernando Nogueira Programação Linear 11
A Tabela Simplex anterior fornece a seguinte solução:
x1 = 0, x2 = 60, u1 = 40, u2 = 0, u3 = 160 e Z = 90.
Uma vez que x1 é uma variável não-básica e possui coeficiente negativo,
esta deverá entrar base e conseqüentemente u1 deverá sair da base. Com
esta alteração, a Tabela Simplex após o Método de Gauss-Jordan fica:
x 1 x 2 u 1 u 2 u 3 b
}
1 0 1 − 1 0 40
0 1 − 1 2 1 0 40 Restrições
0 0 − 3 2 1 40
0 0 1 4 1 2 0 100 } função-objetivo
que corresponde ao seguinte sistema:
Z − 0x1 − 0x2 + 1 4 u1 + 1 2 u2 − 0u3 = 100} função-objetivo
+ + − u2 + =
}
x1 0x2 u1 0u3 40
0x1 + x2 + −1 2 u1 + u2 + 0u3 = 40 Restrições
0x1 + 0x2 + − 3u1 + 2u2 + u3 = 40
Fernando Nogueira Programação Linear 12
A Tabela Simplex anterior fornece a seguinte solução:
x1 = 40, x2 = 40, u1 = 0, u2 = 0, u3 = 40 e Z = 100.
Uma vez que não existe variáveis não-básicas com coeficiente negativo a
solução não poderá mais ser melhorada, portanto, está solução é ótima.
Conclusão
(n + m )
Em P.L. existe maneiras de combinar n variáveis iguais a zero.
m
No exemplo, n = 2 e m = 3, que resulta em 10 soluções possíveis, o que
implica que seria necessário resolver 10 sistemas de equações (força-
bruta). No entanto, o Método Simplex resolveu apenas 2 sistemas de
equações (neste caso) e alcançou a solução ótima.
x x!
obs: = ⇒ combinação
y y!(x − y )!
}
Função-Objetivo deve ser maximizada
Variáveis de controle não negativa Simplex exige essas
3 características
Apresentam uma solução básica inicial
Quando uma ou mais dessas características não são satisfeitas, faz-se
necessário determinar uma forma equivalente ⇒ mudar o modelo e não o
algoritmo.
1.Minimização
Se a função-objetivo é de minimização deve-se multiplica-lá por –1.
Min Z = 3x1 − 4 x 2 + x 3 ⇒ Max − Z = −3x1 + 4 x 2 − x 3
obs: restrições não são alteradas.
− 1 − 1 − 1 0 0 0 } função-objetivo
Nota-se na Tabela Simplex que não existe uma sub-matriz identidade. Neste caso,
acrescenta-se Variáveis Artificiais (Auxiliares) nas linhas cujas as restrições são do tipo
≥ ou = . O sistema fica:
60
}
20 Restrições
− 1 − 1 − 1 0 0 0 0 }
0 função-objetivo
Agora tem-se uma sub-matriz identidade, porém a2= 20 e a3 = 60.
O retorno ao modelo original deve ser feito com a eliminação das Variáveis Artificiais.
Isto é realizado através do Método do M Grande ou do Método da Função-Objetivo
Auxiliar.
Fernando Nogueira Programação Linear 17
Método da Função-Objetivo Auxiliar
Este método consiste em utilizar uma função-objetivo auxiliar W(a1,a2,...,ar) formada
pela soma das r Variáveis Artificiais ⇒ W(a1,a2,...,ar) = a1 + a2 + ... + ar .
Uma vez que as Variáveis Artificiais podem ser escritas em função das Variáveis de
Controle e de Folga, pode-se sempre minimizar W(a1,a2,...,ar) até W(a1,a2,...,ar) = 0, o
que corresponde a a1= a2 = ... = ar = 0, fazendo então as Variáveis Artificiais
pertencerem ao grupo das Variáveis Não-Básicas. Com isso, obtém-se uma solução
viável para o problema podendo-se então abandonar a Função-Objetivo Auxiliar e as
Variáveis Artificiais. Exemplo:
Max Z = x1 + x 2 + x 3 Z − x1 − x2 − x3 − 0u 1 − 0u 2 − 0a 2 − 0a 3 = 0
1
2 x + x − x ≤ 10 2 x1 + x2 − x3 + u1 + 0u 2 + 0a 2 + 0a 3 = 10
2 3
x + x + 2 x ≥ 20
x1 + x2 + 2x 3 + 0u 1 − u2 + a2 + 0a 3 = 20
1 2 3
⇒ 2 x1 + x2 + 3x 3 + 0u 1 + 0u 2 + 0a 2 + a3 = 60
2
1 x + x 2 + 3x 3 = 60
com
x 1 , x 2 , x 3 ≥ 0
x1 , x 2 , x 3 , u1 , u 2 , u 3 , a 2 , a 3 ≥ 0
Função-Objetivo Auxiliar
W(a2,a3) = a2 + a3 Dá 2o restrição Dá 3o restrição
a2 = – x1 – x2 – 2x3 + u2 + 20 a3 = – 2x1 – x2 – 3x3 + 60
Fernando Nogueira Programação Linear 18
Substituindo a2 e a3 em W(a2,a3), fica:
Min W(a2,a3) = Max – W(a2,a3) = 3x1 + 2x2 + 5x3 – u2 – 80 = 0
que na forma de equação é – W(a2,a3) – 3x1 – 2x2 – 5x3 + u2 = – 80
A Tabela Simplex fica:
x 1 x 2 x 3 u 1 u 2 a 2 a 3 b
2
1
2
− 1
1
1
1
− 1
− 1
2
3
− 1
1
0
0
0
0
0
0
− 1
0
1
0
0
0
0
1
0
10
20
60
0
} Restrições
} função-objetivo
− 3 − 2 − 5 0 1 0 0 − 80 } função-objetivo
auxiliar
Após 2 iterações (neste exemplo) do Método Simplex, a Tabela Simplex fica:
x 1 x 2 x 3 u 1 u 2 a 2 a 3 b
}
16 4 0 1 0 0 1 30
6 3 3
2 1 1 0 0 0 1 20 Restrições
3 3 3
1 − 1 0 0 1 − 1 2 20
3 3 3
− 1
3
− 2
3
0 0 0 0 1
3
20 } função-objetivo
0 0 0 0 0 1 1 0} função-objetivo
Fernando Nogueira Programação Linear 19
auxiliar
A Tabela Simplex agora apresenta uma solução cuja as Variáveis Artificiais são
Variáveis Não-Básicas (portanto, iguais a zero) e podem então ser desprezadas e o
Método Simplex pode continuar sendo utilizado a fim de encontrar a solução ótima.
Considerações Finais
1.Problema de Degeneração
A saída de uma V.B. com valor nulo provoca o aparecimento de uma outra V.B. nula
na próxima solução sem alteração do valor da Função-Objetivo. Neste caso a solução
é denominada degenerada, indicando que existe, no mínimo, uma restrição
redundante. Se os coeficientes da Função-Objetivo retornam não negativos em alguma
iteração, o caso não apresenta dificuldade. O problema surge quando as iterações
levam a circuitos, sem caracterizar a solução ótima. Neste caso faz-se necessário
utilizar regras mais complexas, as quais não serão abordadas neste curso. Tal problema
é bastante raro em aplicações práticas.
Exemplo em que a degeneração não acarretou em circuito:
Max Z = 3x1 + 9x 2
2 iteração
x1 + 4x 2 ≤ 8 1 iteração
x1 x2 u1 u2 b x1 x2 u1 u2 b x1 x2 u1 u2 b
x1 + 2x 2 ≤ 4 1 1 1 −1
1 4 1 0 8 1 0 2 0 1 2
x , x ≥ 0 4 4 2 2
1 2 1 2 0 1 4 1 0 −1 1 0 1 0 −1 2 0
2 2
−3 −9 0 0 0 −3 9 0 0 3 3 18
0 0 18 2 2
4 4
Fernando Nogueira Programação Linear 20
Exemplo em que a degeneração ocorreu temporariamente:
1 iteração
Max Z = 3x1 + 2x 2 x1 x 2 u1 u 2 u 3 b x1 x2 u1 u2 u3 b
4 x 1 − x 2 ≤ 8 4 −1 1 0 0 8 1 −1
4
1
4
0 0 2
4x + 3x ≤ 12 4 3 0 1 0 12 0 4 −1 1 0 4
1 2
4 1 0 0 1 8 0 2 −1 0 1 0
4 x 1 + x 2 ≤ 8 −3 −2 0 0 0 0 0 − 11 3 0 0 6
x1 , x 2 ≥ 0 4 4
2 iteração 3 iteração
x1 x2 u1 u2 u3 b x1 x2 u1 u2 u3 b
1 0 1 0 1 2 1 0 0 −1 3 3
8 8 8 8 2
0 0 1 1 −2 4 0 0 1 1 −2 4
0 1 −1 0 1 0 0 1 0 1 −1 2
2 2 2 2
0 0 −5 0 11 6 0 0 0 5 1 17
8 8 8 8 2
2.Solução Ilimitada
Ocorre quando a variável que entra na base não possui em sua coluna nenhum
coeficiente positivo, não sendo portanto possível determinar a linha pivô. Exemplo:
Max Z = x1 + 0x 2
x1 + x 2 ≥ 40
− x 1 + x 2 ≤ 0
x , x ≥ 0
1 2
Fernando Nogueira Programação Linear 21
3.Soluções Múltiplas
Se na solução ótima o coeficiente de um V.N.B. é zero, esta variável poderá entrar na
base sem alterar o valor da função objetivo, gerando outra solução ótima. Neste caso
qualquer combinação linear dessas 2 soluções também será ótima. Exemplo:
Max Z = 4x1 + 10x 2
4x1 + 3x 2 ≤ 12
2x1 + 5x 2 ≤ 10
x , x ≥ 0
1 2
4.Soluções Inviável
Se o problema de P.L. não possuir nenhuma solução viável, então o Método da Função-
Objetivo Auxiliar (ou do M Grande) irá fornecer na solução final no mínimo uma
variável artificial com valor diferente de zero, caso contrário, todas variáveis artificiais
serão nulas. Exemplo: Max Z = x + x
1 2
x1 − x 2 ≥ 1
− x 1 + x 2 ≥ 1
x , x ≥ 0
1 2