Chapter 7 A inversa, simplex e dualidade
(Para uma explicação completa do material deste capítulo, vejas a apresentações Simplex e Dualidade I e Simplex e Dualidade II)
A partir da inversa da base (B) de um PL podemos escrever todos os dados da tabela simplex na iteração referente a esta base. Ainda, podemos determinar como calcular a solução dual (\(\pi\)). O quadro genérico fica:
\(x_B\) | \(x_N\) | \[-z\] |
---|---|---|
\(0\) | \(c_N^T - c_B^TB^{-1}N\) | \(-c_B^TB^{-1}b\) |
\(I\) | \(B^{-1}N\) | \(B^{-1}b\) |
7.1 Encontrando os elementos da tabela pelas fórmulas genéricas
EXERCICIO 1: Considere o modelo do sapateiro:
\[\begin{alignat*}{4} & \text{max z = } & 5x_1 & + 2x_2 \\ & \text{Sujeito à} & 10x_1 & + 12x_2 &\leq 60\\ & & 2x_1 & + x_2 & \leq 6\\ & & x_1 \geq 0 & \quad x_2 \geq 0& \end{alignat*}\]Sabendo que a solução ótima tem as variáveis básicas \(x_B^T = (x_3,x_1)\), encontre o quadro Simplex ótimo:
Na forma padrão, temos que:
\[\begin{alignat*}{4} & \text{min z = } & -5x_1 & - 2x_2 \\ & \text{Sujeito à} & 10x_1 & + 12x_2 & + x_3 & & = 60\\ & & 2x_1 & + x_2 & & & + x_4& = 6\\ & & x_1 \geq 0 & \quad x_2 \geq 0& \end{alignat*}\]Portanto, com \(x_B^T = (x_3,x_1)\):
\[\begin{equation*} B = \left[ \begin{array}{cc} 1 & 10 \\ 0 & 2 \end{array} \right], c_B^T = \left[ \begin{array}{cc} 0 & -5 \\ \end{array} \right] \end{equation*}\]
\[\begin{equation*} N = \left[ \begin{array}{cc} 12 & 0 \\ 1 & 1 \end{array} \right], c_N^T = \left[ \begin{array}{cc} -2 & 0 \\ \end{array} \right] \end{equation*}\]
\[\begin{equation*} b^T = \left[ \begin{array}{cc} 60 & 6 \\ \end{array} \right] \end{equation*}\]
Encontrando a inversa \(B^{-1}\):
\[\begin{equation*} B|I = \left[ \begin{array}{cccc} 1 & 10 & 1& 0\\ 0 & 2 & 0 & 1 \end{array} \right] \end{equation*}\]
Realizando as operações:
\(L_2 \leftarrow L_2/2\)
\(L_1 \leftarrow L_1 - 10 L_2\)
Temos:
\[\begin{equation*} B^{-1} = \left[ \begin{array}{cc} 1 & -5\\ 0 & 1/2 \end{array} \right] \end{equation*}\]
Calculando \(N\) atualizado:
\[\begin{equation*} B^{-1}N = \left[ \begin{array}{cc} 1 & -5\\ 0 & 1/2 \end{array} \right] \left[ \begin{array}{cc} 12 & 0 \\ 1 & 1 \end{array} \right] = \left[ \begin{array}{cc} 7 & -5 \\ 1/2 & 1/2 \end{array} \right] \end{equation*}\]
Calculando \(c_N^T\) atualizado:
\[\begin{equation*} c_N^T - c_B^TB^{-1}N = \left[ \begin{array}{cc} -2 & 0 \\ \end{array} \right] - \left[ \begin{array}{cc} 0 & -5 \\ \end{array} \right] \left[ \begin{array}{cc} 1 & -5\\ 0 & 1/2 \end{array} \right] \left[ \begin{array}{cc} 12 & 0 \\ 1 & 1 \end{array} \right] \end{equation*}\]
\[\begin{equation*} = \left[ \begin{array}{cc} -2 & 0 \\ \end{array} \right] - \left[ \begin{array}{cc} 0 & -5 \\ \end{array} \right] \left[ \begin{array}{cc} 7 & -5 \\ 1/2 & 1/2 \end{array} \right] \end{equation*}\]
\[\begin{equation*} = \left[ \begin{array}{cc} -2 & 0 \\ \end{array} \right] - \left[ \begin{array}{cc} -5/2 & -5/2 \\ \end{array} \right] = \left[ \begin{array}{cc} 1/2 & 5/2 \\ \end{array} \right] \end{equation*}\]
Calculando \(b\) atualizado:
\[\begin{equation*} B^{-1}b = \left[ \begin{array}{cc} 1 & -5\\ 0 & 1/2 \end{array} \right] \left[ \begin{array}{c} 60 \\ 6 \end{array} \right] = \left[ \begin{array}{c} 30 \\ 3 \end{array} \right] \end{equation*}\]
Calculando \(-z\) atualizado:
\[\begin{equation*} -c_BB^{-1}b = - \left[ \begin{array}{cc} 0 & -5\\ \end{array} \right] \left[ \begin{array}{c} 30 \\ 3 \end{array} \right] = 15 \end{equation*}\]
Portanto o quadro Simplex considerando as variáveis básica \(x_B^T = (x_3,x_1)\) fica:
VB | X1 | X2 | X3 | X4 | b |
---|---|---|---|---|---|
0 | 1/2 | 0 | 5/2 | 15 | |
\(x_3\) | 0 | 7 | 1 | -5 | 30 |
\(x_1\) | 1 | 1/2 | 0 | 1/2 | 3 |
EXERCICIO 2: Considerando o seguinte modelo de PL:
\[\begin{alignat*}{4} & \text{max z = } & 100x_1 & + 150x_2 \\ & \text{Sujeito à} & 2x_1 & + 3x_2 & \leq 120\\ & & x_1 & & \leq 40\\ & & & \quad x_2 & \leq 30\\ & & x_1 \geq 0 & \quad \quad x_2 \geq 0& \end{alignat*}\]A: A solução básica com variáveis \(x_B^T = (x_3,x_4,x_2)\) é ótima?
B: Se a solução não for ótima, calcule qual deve ser a variável que sai da base.
C: Com a definição da variável que sai e da que entra na base, qual seria o próximo passo considerando o algoritmo Simplex e a tabela genérica?
SOLUÇÃO A
Sabemos que o critério de parada do algoritmo Simplex é quando todos os \(c_i\) na função objetivo são \(\geq 0\). Portanto, podemos determinar quais são os \(c_N\) atualizados na tabela (dado que os \(c_B\) são sempre 0), considerando as variávieis básicas \(x_B^T = (x_3,x_4,x_2)\), e então verificar se algum é negativo.
O valores atualizados são dados por:
\[\begin{equation*} c_N^T - c_B^TB^{-1}N \end{equation*}\]
Temos que:
\[\begin{equation*} B = \left[ \begin{array}{ccc} 1 & 0 & 3 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{array} \right], N = \left[ \begin{array}{ccc} 2 & 0 \\ 1 & 0 \\ 0 & 1 \end{array} \right] \end{equation*}\]
\[\begin{equation*} c_B^T = \left[ \begin{array}{ccc} 0 & 0 & -150 \end{array} \right], c_N^T = \left[ \begin{array}{ccc} -100 & 0 \\ \end{array} \right] \end{equation*}\]
Para encontrar a inversa \(B^{-1}\)
\[\begin{equation*} B|I = \left[ \begin{array}{cccccc} 1 & 0 & 3 & 1 & 0 & 0 \\ 0 & 1 & 0 & 0 & 1 & 0 \\ 0 & 0 & 1 & 0 & 0 & 1 \end{array} \right] \end{equation*}\]
Com a operação: \(L_1 \leftarrow L_1 - 3L_3\)
Temos a inversa:
\[\begin{equation*} B^{-1} = \left[ \begin{array}{ccc} 1 & 0 & -3 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{array} \right] \end{equation*}\]
Portanto os valores atualizados ficam:
\[\begin{equation*} c_N^T - c_B^TB^{-1}N = \left[ \begin{array}{ccc} -100 & 0 \\ \end{array} \right] - \left[ \begin{array}{ccc} 0 & 0 & -150 \end{array} \right] \left[ \begin{array}{ccc} 1 & 0 & -3 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{array} \right] \left[ \begin{array}{ccc} 2 & 0 \\ 1 & 0 \\ 0 & 1 \end{array} \right] \end{equation*}\]
\[\begin{equation*} = \left[ \begin{array}{ccc} -100 & 0 \\ \end{array} \right] - \left[ \begin{array}{ccc} 0 & -150 \\ \end{array} \right] \end{equation*}\]
\[\begin{equation*} c_N^T = \left[ \begin{array}{ccc} -100 & 150 \\ \end{array} \right] \end{equation*}\]
Temos que o custo atualizado de \(x_1\) é -100, portanto a solução não é ótima.
SOLUÇÃO B
Sabemos que para determinar a variável que deixa a base, é necessário encontrar:
\[\begin{equation*} \underset{\{ \forall a_{is} > 0, i=1,...,m \} }{min} \dfrac{b_i}{a_{is}} \end{equation*}\]
Ou seja, precisamos dos valores de \(b\) e da coluna \(A_i\) atualizados.
Calculando \(b\) atualizado:
\[\begin{equation*} B^{-1}b = \left[ \begin{array}{ccc} 1 & 0 & -3 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{array} \right] \left[ \begin{array}{ccc} 120 \\ 40 \\ 30 \end{array} \right] = \left[ \begin{array}{ccc} 30 \\ 40 \\ 30 \end{array} \right] \end{equation*}\]
Para calcular \(A_1\) atualizado (pois \(x_1\) é a variável que entra na base), podemos usar a fórmula \(B^{-1}N\), porém usamos a \(A_1\) antiga no lugar de toda a matriz \(N\):
\[\begin{equation*} B^{-1}A_1 = \left[ \begin{array}{ccc} 1 & 0 & -3 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{array} \right] \left[ \begin{array}{ccc} 2 \\ 1 \\ 0 \end{array} \right] = \left[ \begin{array}{ccc} 2 \\ 1 \\ 0 \end{array} \right] \end{equation*}\]
Portanto, temos que o mínimo entre
\[\begin{equation*} \dfrac{30}{2}, \dfrac{40}{1} = 15 \end{equation*}\]
Com \(x_3\) deixando a base e \(x_1\) entrando em seu lugar.SOLUÇÃO C
Sabemos então que na próxima iteração a solução terá as variáveis \(x_B^T = (x_1,x_4,x_2)\). O próximo passo seria calcular a matriz inversa dessa nova base e verificar os valores atualizados de \(c_i\) (como na letra A). Note que fizemos toda uma iteração do algoritmo Simplex sem usar o quadro-Simplex, somente com as fórmulas genéricas. Em modelos maiores, isso evita que muitos cálculos. Essa é a base do algoritmo Simplex-revisado (ver apresentação no site).
7.2 Encontrando a solução dual na tabela primal
Sabemos que o negativo dos valores duais estão presentes na própria tabela primal. São os \(c_i\) atualizados acima da matriz identidade inicial.
EXEMPLO 1: Considere o modelo do sapateiro:
\[\begin{alignat*}{4} & \text{max z = } & 5x_1 & + 2x_2 \\ & \text{Sujeito à} & 10x_1 & + 12x_2 &\leq 60\\ & & 2x_1 & + x_2 & \leq 6\\ & & x_1 \geq 0 & \quad x_2 \geq 0& \end{alignat*}\]Com quadro ótimo:
VB | X1 | X2 | X3 | X4 | b |
---|---|---|---|---|---|
?? | ?? | ?? | ?? | ?? | |
\(x_3\) | ?? | ?? | 1 | -5 | 30 |
\(x_1\) | ?? | ?? | 0 | 1/2 | 3 |
Determine a solução ótima do modelo dual e verique se a solução é ótima.
Para determinar a solução ótima, basta encontrarmos os valores de \(c_i\) atualizados. Pela tabela ótima, sabemos que \(x_B^T = (x_3,x_1)\), com matriz inversa:
\[\begin{equation*} B^{-1} = \left[ \begin{array}{c} 1 & -5 \\ 0 & 1/2 \end{array} \right] \end{equation*}\]
Para encontrar os valores de \(c_N\) atualizados:
\[\begin{equation*} c_N^T - c_B^TB^{-1}N = \\ \left[ \begin{array}{c} -2 & 0 \\ \end{array} \right] - \left[ \begin{array}{c} 0 & -5 \\ \end{array} \right] \left[ \begin{array}{c} 1 & -5 \\ 0 & 1/2 \end{array} \right] \left[ \begin{array}{c} 12 & 1 \\ 1 & 1 \end{array} \right] = \\ \left[ \begin{array}{c} -2 & 0 \\ \end{array} \right] - \left[ \begin{array}{c} 0 & -5 \\ \end{array} \right] \left[ \begin{array}{c} 7 & -4 \\ 1/2 & 1/2 \end{array} \right] = \\ \left[ \begin{array}{c} -2 & 0 \\ \end{array} \right] - \left[ \begin{array}{c} -5/2 & -5/2 \\ \end{array} \right] = \\ \left[ \begin{array}{c} 1/2 & 5/2 \\ \end{array} \right] \end{equation*}\]
Portanto, os valores de \(c_i\) atualizados ficam:
\[\begin{equation*} c^T = \left[ \begin{array}{ccc} c_1 & c_2 & c_3 & c_4 \\ \end{array} \right] = \\ \left[ \begin{array}{ccc} 0 & 1/2 & 0 & 5/2 \\ \end{array} \right] \end{equation*}\]
Temos então que:
\[\begin{equation*} -\pi^T = \left[ \begin{array}{ccc} 0 & 5/2 \\ \end{array} \right] \\ \pi^T = \left[ \begin{array}{ccc} 0 & -5/2 \\ \end{array} \right] \end{equation*}\]
Como, para transformar o problema na forma padrão fizemos max z = - min z, temos que:
\[\begin{equation*} \pi^T = \left[ \begin{array}{ccc} 0 & 5/2 \\ \end{array} \right] \end{equation*}\]
O modelo dual do problema do sapapeiro fica:
\[\begin{alignat*}{4} & \text{min v = } & 60\pi_1 & + 6\pi_2 \\ & \text{Sujeito à} & 10\pi_1 & + 2\pi_2 &\geq 5\\ & & 12\pi_1 & + \pi_2 & \geq 2\\ & & \pi_1 \geq 0 & \quad \pi_2 \geq 0& \end{alignat*}\]Substituindo os valores de \(\pi\) no modelo, temos:
\[\begin{alignat*}{4} & \text{min v = } & 60(0) & + 6(5/2) \\ & \text{Sujeito à} & 10(0) & + 2(5/2) &\geq 5\\ & & 12(0) & + 5/2 & \geq 2\\ & & \pi_1 \geq 0 & \quad \pi_2 \geq 0& \end{alignat*}\]Portanto a solução é dual-factível. Seu custo fica \(v = 15\). Substituindo a solução primal em \(z\) temos que \(z = 15\). Como \(v = z\) temos que a solução é ótima.