Sei sulla pagina 1di 13

Otimizao Aplicada Engenharia de

Processos
O Mtodo de Duas Fases
Felipe Campelo
http://www.cpdee.ufmg.br/~fcampelo
Programa de Ps-Graduao em Engenharia Eltrica
Belo Horizonte
Abril de 2013

Mtodo de Duas Fases


Descrio
Fase I: determinao de uma soluo bsica inicial

atravs da utilizao de um problema auxiliar, contendo


as variveis artificiais.
Fase II: utilizando a soluo bsica vivel resultante da

fase I, resolve-se o problema original.


Nestes slides todos os passos do mtodo so detalhados.
Lembrando que a primeira fase s necessria quando
no temos uma soluo bsica vivel inicial.

Mtodo de Duas Fases


O problema
Suponha o seguinte problema de otimizao linear:
minimize: 4x1 + x2 + x3
sujeito a: 2x1 + x2 + 2x3 = 4
3x1 + 3x2 + x3 = 3
x0
O quadro Simplex (sem a ltima linha) dado por:
x1 x2 x3 b
2 1 2 4
3 3 1 3

Mtodo de duas fases


Fase I
Como no h uma soluo bsica vivel bvia, utilizaremos
o mtodo das duas fases.
Adiciona-se uma varivel artificial para cada restrio de
igualdade, e monta-se o problema auxiliar de minimizao
da soma das variveis artificiais:
minimize: z = x4 + x5
sujeito a: 2x1 + x2 + 2x3 + x4 = 4
3x1 + 3x2 + x3 + x5 = 3
x0

Mtodo de duas fases


Fase I
O quadro Simplex inicial para este problema auxiliar dado
por:
x1 x2 x3 x4 x5 b
2 1 2 1 0 4
3 3 1 0 1 3
cT 0 0 0 1 1 0
A ltima linha corresponde aos coeficientes de custo da
funo objetivo artificial. Com isto, temos uma soluo
bsica vivel inicial (base: x4 , x5 ).

Mtodo de duas fases


Fase I
Para iniciar o Simplex precisamos ter a funo-objetivo
expressa apenas em termos das variveis no-bsicas.
Para isto, zeramos os coeficientes correspondentes a estas
variveis na ltima linha do quadro atravs da subtrao
das linhas relativas s variveis bsicas.

rT

x1 x2 x3 x4 x5 b
2
1
2
1 0 4
3
3
1
0 1 3
5 4 3 0 0 7

Mtodo de duas fases


Fase I
Uma vez que temos o quadro Simplex em sua forma
correta, basta pivotar sucessivamente at encontrar uma
soluo para o problema auxiliar.
1

Selecionar a varivel no bsica (xq ) cujo coeficiente r


possui o menor valor negativo, para entrada na base;
Dividir a ltima coluna (yi0 ) pela coluna relativa
varivel selecionada acima (yiq ), e selecionar a linha
que retornar o menor valor :
Ateno: para este passo apenas os coficientes

yiq > 0 so considerados;


Se no houver yiq > 0, o problema possui espao vivel

ilimitado.
3

Realizar o pivotamento utilizando como elemento-piv


aquele que for a interseo da linha selecionada com a
coluna selecionada.

Mtodo de duas fases


Fase I
Para o quadro do exemplo:



2
1
2
1
0
4


3
3
1 0 1 3

5 4 3 0 0 7


0 1 1.33 1 0.67 2


1 1
0.33 0 0.33
1

0 1 1.33 0 1.67 2


0 0.75 1 0.75 0.5 1.5


1 1.25 0 0.25 0.5 0.5


0
0
0
1
1
0

Mtodo de duas fases


Fase I


0 0.75 1 0.75 0.5 1.5


1 1.25 0 0.25 0.5 0.5


0
0
0
1
1
0
Com isto o mtodo converge para o problema auxiliar. O
valor da funo-objetivo do problema auxiliar torna-se zero
(pois as variveis artificiais foram todas removidas da
base), e a soluo bsica vivel [x1 , x2 , x3 ] = [0.5; 0; 1.5].

Mtodo de duas fases


Fase II
Iniciando a fase II, vemos que o quadro Simplex dado por
(substituindo a ltima linha pelos coeficientes de custo da
funo-objetivo original):

cT

x1
x2
x3 b
0 0.75 1 1.5
1
1.25
0 0.5
4
1
1 3.5

Como nossa base inicial dada por x1 , x3 , devemos


expressar a funo objetivo em termos da varivel
no-bsica x2 .
Isto pode ser feito diretamente atravs do quadro Simplex,
zerando os coeficientes de custo associados a x1 , x3 .

Mtodo de duas fases


Fase II
Aps a subtrao das linhas associadas s variveis
bsicas, temos o quadro Simplex com a ltima linha
expressando os coeficientes de custo relativo:

rT

x1
x2
x3
b
0 0.75 1
1.5
1
1.25
0
0.5
0 3.25 0 3.5

Agora nos resta realizar o pivotamento.

Mtodo de duas fases


Fase II


0 0.75 1 1.5


1 1.25 0 0.5


0 3.25 0 3.5


0.6 0 1 1.8


0.8 1 0 0.4


2.6 0 0 2.2
Como no h mais coeficientes de custo relativo negativos,
o mtodo convergiu para a soluo:
x = [0; 0.4; 1.8]

z = 2.2

Mtodo de duas fases


Soluo computacional
Verificando nossa soluo no Matlab:
minimize: 4x1 + x2 + x3
sujeito a: 2x1 + x2 + 2x3 = 4
3x1 + 3x2 + x3 = 3
x0
>> c = [4,1,1]
>> Aeq = [2,1,2;3,3,1]
>> beq = [4;3]
>> lb = [0,0]
>> options = optimset(LargeScale,off,Simplex,on);
>>[X,Z] = linprog(c,[],[],Aeq,beq,lb,[],[],options)
X =

[0, 0.4000, 1.8000]

Z = 2.2000

Potrebbero piacerti anche