You are on page 1of 4

D:\BkpSeguranca\Java_AlgoritmosUteis\L2EX01.

PRN

quinta-feira, 27 de dezembro de 2012 18:14

Pesquisa Operacional - Programação Linear
Solução de Problema de Programação Linear Pelo Método Simplex - Programa Simplex_OS
Otávio Souza, MSc
Caso: Lista 2 Exercicio 01 - 10/07/2010
Definição do Problema
=====================
Função Objetivo: MAX Z =

7 X 1 + 8.5 X 2

Restrições:
.6 X 1 + .8 X 2 <= 16
24 X 1 + 20 X 2 <= 1800
Transformação da F.O. e das Restrições
(Obs: <= +Fi e >= -Fi)
Z -7 X 1 -8.5 X 2 = 0
0 + .6 X 1 + .8 X 2 + F 1
0 + 24 X 1 + 20 X 2 + F 2

= 16
= 1800

Tableau Inicial
L |
Z |
X 1
|
X 2
|
F 1
|
F 2
|
LD
| VB
----+-----+------------+------------+------------+------------+------------+---0 |
1 |
-7.0000 |
-8.5000 |
0.0000 |
0.0000 |
0.0000 | Z
1 |
0 |
0.6000 |
0.8000 |
1.0000 |
0.0000 |
16.0000 | F 1
2 |
0 |
24.0000 |
20.0000 |
0.0000 |
1.0000 | 1800.0000 | F 2
----+-----+------------+------------+------------+------------+------------+---Início da Iteração 1
Comentários, Diretrizes, Memória dos Cálculos:
==============================================
-Coluna Pivot é X 2 porque
-8.500000 é o menor Coeficiente da Linha Zero, de X 1 a F 2
-A Variável Entrante é X 2 , variável identificadora da coluna Pivot,
Entra a VNB que colabora mais para o aumento do valor de Z (o problema é de maximização),
assim, escolhe-se a coluna da linha zero que dentre os valores negativos seja o maior em
valor absoluto.
-Calcular os quocientes entre LD e a Coluna Pivot, para as Linhas 1 a 2
Apenas interessa calcular os quocientes para coeficientes positivos
Quociente( 1 ) =
16.000000 /
0.800000 =
20.000000
Quociente( 2 ) = 1800.000000 /
20.000000 =
90.000000
-Linha Pivot é a Linha 1 porque Quociente =
16.000000 /
0.800000 =
20.000000 é o
menor
-A Variável Sainte é F 1 , variável identificadora da Linha Pivot.
Sai a VB que contribui menos para chegarmos ao máximo, por isto é feito o quociente entre
os elementos da coluna LD com os elementos positivos (>0) da coluna Pivot.
-O Coeficiente Pivot é:
0.800000
que está na interseção entre a Coluna Pivot e a
Linha Pivot
-Para Calcular a Linha Pivot Modificada:
Dividir a linha Pivot, da coluna Z até coluna LD, pelo Coeficiente Pivot.
Objetivo: Como é necessário determinar uma nova Solução Básica Viável, é preciso
transformar
em 1 o Coeficiente Pivot sem alterar a solução. Para isto, deve-se dividir a
Linha Pivot, da coluna Z até a coluna LD, pelo Coeficiente Pivot, e zerar
todos
-1-

D:\BkpSeguranca\Java_AlgoritmosUteis\L2EX01.PRN

quinta-feira, 27 de dezembro de 2012 18:14

os outros elementos da Coluna Pivot fazendo operações elementares.
Memória do cálculo dos elementos da Linha Pivot Modificada (LPM):
LPM(Z) =
0.000000 /
0.800000 =
0.000000
LPM(X 1) =
0.600000 /
0.800000 =
0.750000
LPM(X 2) =
0.800000 /
0.800000 =
1.000000
LPM(F 1) =
1.000000 /
0.800000 =
1.250000
LPM(F 2) =
0.000000 /
0.800000 =
0.000000
LPM(LD) =
16.000000 /
0.800000 =
20.000000
-Linha Pivot Modificada:
0.000000
0.750000
1.000000
1.250000
0.000000
20.000000
-Próximo passo: Zerar os outros elementos da Coluna Pivot fazendo operações elementares
-Fórmula para cálculo das novas Linhas do Tableau (Linha Zero à Linha 2 exceto Linha Pivot
Modificada):
NovaLinha = AntigaLinha - CoeficienteDaLinhaNaColunaPivot*LinhaPivotModificada
-Novas linhas do Tableau:
Memória do cálculo dos elementos da Nova Linha 0 (operações elementares):
[
1.000000
-7.000000
-8.500000
0.000000
0.000000
0.000000 ]
- (
-8.500000 ) *
[
0.000000
0.750000
1.000000
1.250000
0.000000
20.000000 ]
Nova Linha 0 :
[
1.000000
-0.625000
0.000000
10.625000
0.000000
170.000000 ]
Memória do cálculo dos elementos da Nova Linha 2 (operações elementares):
[
0.000000
24.000000
20.000000
0.000000
1.000000
1800.000000 ]
- (
20.000000 ) *
[
0.000000
0.750000
1.000000
1.250000
0.000000
20.000000 ]
Nova Linha 2 :
[
0.000000
9.000000
0.000000
-25.000000
1.000000
1400.000000 ]
Tableau da Iteração 1
L |
Z |
X 1
|
X 2
|
F 1
|
F 2
|
LD
| VB
----+-----+------------+------------+------------+------------+------------+---0 |
1 |
-0.6250 |
0.0000 |
10.6250 |
0.0000 |
170.0000 | Z
1 |
0 |
0.7500 |
1.0000 |
1.2500 |
0.0000 |
20.0000 | X 2
2 |
0 |
9.0000 |
0.0000 |
-25.0000 |
1.0000 | 1400.0000 | F 2
----+-----+------------+------------+------------+------------+------------+----Solução Básica Viável:
X 1 =
0.000000 ; X 2 =
20.000000
F 1 =
0.000000 ; F 2 =
1400.000000
Z
=
170.000000
-Regra de Parada:
Verificar se na Linha Zero existe algum Coeficiente Negativo
Se na Linha Zero existir algum Coeficiente Negativo, significa que
a Função Objetivo pode ser melhorada, sendo necessária outra iteração
-Conclusão após Teste de Parada:
Existe Coeficiente Negativo na linha Zero
Função Objetivo pode ser melhorada. Calcular outra iteração.
Início da Iteração 2
Comentários, Diretrizes, Memória dos Cálculos:
==============================================
-Coluna Pivot é X 1 porque
-0.625000 é o menor Coeficiente da Linha Zero, de X 1 a F 2
-A Variável Entrante é X 1 , variável identificadora da coluna Pivot,
Entra a VNB que colabora mais para o aumento do valor de Z (o problema é de maximização),
assim, escolhe-se a coluna da linha zero que dentre os valores negativos seja o maior em
valor absoluto.
-2-

D:\BkpSeguranca\Java_AlgoritmosUteis\L2EX01.PRN

quinta-feira, 27 de dezembro de 2012 18:14

-Calcular os quocientes entre LD e a Coluna Pivot, para as Linhas 1 a 2
Apenas interessa calcular os quocientes para coeficientes positivos
Quociente( 1 ) =
20.000000 /
0.750000 =
26.666667
Quociente( 2 ) = 1400.000000 /
9.000000 =
155.555556
-Linha Pivot é a Linha 1 porque Quociente =
20.000000 /
0.750000 =
26.666667 é o
menor
-A Variável Sainte é X 2 , variável identificadora da Linha Pivot.
Sai a VB que contribui menos para chegarmos ao máximo, por isto é feito o quociente entre
os elementos da coluna LD com os elementos positivos (>0) da coluna Pivot.
-O Coeficiente Pivot é:
0.750000
que está na interseção entre a Coluna Pivot e a
Linha Pivot
-Para Calcular a Linha Pivot Modificada:
Dividir a linha Pivot, da coluna Z até coluna LD, pelo Coeficiente Pivot.
Objetivo: Como é necessário determinar uma nova Solução Básica Viável, é preciso
transformar
em 1 o Coeficiente Pivot sem alterar a solução. Para isto, deve-se dividir a
Linha Pivot, da coluna Z até a coluna LD, pelo Coeficiente Pivot, e zerar
todos
os outros elementos da Coluna Pivot fazendo operações elementares.
Memória do cálculo dos elementos da Linha Pivot Modificada (LPM):
LPM(Z)
=
0.000000 /
0.750000 =
0.000000
LPM(X 1) =
0.750000 /
0.750000 =
1.000000
LPM(X 2) =
1.000000 /
0.750000 =
1.333333
LPM(F 1) =
1.250000 /
0.750000 =
1.666667
LPM(F 2) =
0.000000 /
0.750000 =
0.000000
LPM(LD) =
20.000000 /
0.750000 =
26.666667
-Linha Pivot Modificada:
0.000000
1.000000
1.333333
1.666667
0.000000
26.666667
-Próximo passo: Zerar os outros elementos da Coluna Pivot fazendo operações elementares
-Fórmula para cálculo das novas Linhas do Tableau (Linha Zero à Linha 2 exceto Linha Pivot
Modificada):
NovaLinha = AntigaLinha - CoeficienteDaLinhaNaColunaPivot*LinhaPivotModificada
-Novas linhas do Tableau:
Memória do cálculo dos elementos da Nova Linha 0 (operações elementares):
[
1.000000
-0.625000
0.000000
10.625000
0.000000
170.000000 ]
- (
-0.625000 ) *
[
0.000000
1.000000
1.333333
1.666667
0.000000
26.666667 ]
Nova Linha 0 :
[
1.000000
0.000000
0.833333
11.666667
0.000000
186.666667 ]
Memória do cálculo dos elementos da Nova Linha 2 (operações elementares):
[
0.000000
9.000000
0.000000
-25.000000
1.000000
1400.000000 ]
- (
9.000000 ) *
[
0.000000
1.000000
1.333333
1.666667
0.000000
26.666667 ]
Nova Linha 2 :
[
0.000000
0.000000
-12.000000
-40.000000
1.000000
1160.000000 ]
Tableau da Iteração 2
L |
Z |
X 1
|
X 2
|
F 1
|
F 2
|
LD
| VB
----+-----+------------+------------+------------+------------+------------+---0 |
1 |
0.0000 |
0.8333 |
11.6667 |
0.0000 |
186.6667 | Z
1 |
0 |
1.0000 |
1.3333 |
1.6667 |
0.0000 |
26.6667 | X 1
2 |
0 |
0.0000 |
-12.0000 |
-40.0000 |
1.0000 | 1160.0000 | F 2
----+-----+------------+------------+------------+------------+------------+----Solução Básica Viável:
X 1 =
26.666667 ;

X 2 =

0.000000
-3-

D:\BkpSeguranca\Java_AlgoritmosUteis\L2EX01.PRN

quinta-feira, 27 de dezembro de 2012 18:14

F 1 =
0.000000 ; F 2 =
1160.000000
Z
=
186.666667
-Regra de Parada:
Verificar se na Linha Zero existe algum Coeficiente Negativo
Se na Linha Zero existir algum Coeficiente Negativo, significa que
a Função Objetivo pode ser melhorada, sendo necessária outra iteração
-Conclusão após Teste de Parada:
Não existe Coeficiente Negativo na linha Zero
Portanto Função Objetivo não pode ser melhorada.
Otimização concluída
-Resultado Final da Otimização:
MAX Z = 7 X 1 + 8.5 X 2 =
X 1 =
26.666667
X 2 =
0.000000

186.666667

-4-