2fases
DESCRIPTION
hsgwudfewtfewytfytefe\ewfewtyfytftyftyfyfyewewytfewgyfweytdyuuuuuuuuuuuuuuuuuuuuudssssssssssssssssssssssssssssssssssssssssTRANSCRIPT
-
Otimizao Aplicada Engenharia deProcessos
O Mtodo de Duas Fases
Felipe Campelohttp://www.cpdee.ufmg.br/~fcampelo
Programa de Ps-Graduao em Engenharia Eltrica
Belo HorizonteAbril de 2013
-
Mtodo de Duas Fases
Descrio
Fase I: determinao de uma soluo bsica inicialatravs da utilizao de um problema auxiliar, contendoas variveis artificiais.
Fase II: utilizando a soluo bsica vivel resultante dafase I, resolve-se o problema original.
Nestes slides todos os passos do mtodo so detalhados.
Lembrando que a primeira fase s necessria quandono temos uma soluo bsica vivel inicial.
-
Mtodo de Duas Fases
O problemaSuponha o seguinte problema de otimizao linear:
minimize: 4x1 + x2 + x3sujeito a: 2x1 + x2 + 2x3 = 4
3x1 + 3x2 + x3 = 3x 0
O quadro Simplex (sem a ltima linha) dado por:
x1 x2 x3 b2 1 2 43 3 1 3
-
Mtodo de duas fases
Fase IComo no h uma soluo bsica vivel bvia, utilizaremoso mtodo das duas fases.
Adiciona-se uma varivel artificial para cada restrio deigualdade, e monta-se o problema auxiliar de minimizaoda soma das variveis artificiais:
minimize: z = x4 + x5sujeito a: 2x1 + x2 + 2x3 + x4 = 4
3x1 + 3x2 + x3 + x5 = 3x 0
-
Mtodo de duas fases
Fase IO quadro Simplex inicial para este problema auxiliar dadopor:
x1 x2 x3 x4 x5 b2 1 2 1 0 43 3 1 0 1 3
cT 0 0 0 1 1 0
A ltima linha corresponde aos coeficientes de custo dafuno objetivo artificial. Com isto, temos uma soluobsica vivel inicial (base: x4, x5).
-
Mtodo de duas fases
Fase IPara iniciar o Simplex precisamos ter a funo-objetivoexpressa apenas em termos das variveis no-bsicas.
Para isto, zeramos os coeficientes correspondentes a estasvariveis na ltima linha do quadro atravs da subtraodas linhas relativas s variveis bsicas.
x1 x2 x3 x4 x5 b2 1 2 1 0 43 3 1 0 1 3
rT 5 4 3 0 0 7
-
Mtodo de duas fases
Fase IUma vez que temos o quadro Simplex em sua formacorreta, basta pivotar sucessivamente at encontrar umasoluo para o problema auxiliar.
1 Selecionar a varivel no bsica (xq) cujo coeficiente rpossui o menor valor negativo, para entrada na base;
2 Dividir a ltima coluna (yi0) pela coluna relativa varivel selecionada acima (yiq), e selecionar a linhaque retornar o menor valor :
Ateno: para este passo apenas os coficientesyiq > 0 so considerados;
Se no houver yiq > 0, o problema possui espao vivelilimitado.
3 Realizar o pivotamento utilizando como elemento-pivaquele que for a interseo da linha selecionada com acoluna selecionada.
-
Mtodo de duas fases
Fase IPara o quadro do exemplo:
2 1 2 1 0 43 3 1 0 1 35 4 3 0 0 7
0 1 1.33 1 0.67 21 1 0.33 0 0.33 10 1 1.33 0 1.67 2
0 0.75 1 0.75 0.5 1.51 1.25 0 0.25 0.5 0.50 0 0 1 1 0
-
Mtodo de duas fases
Fase I 0 0.75 1 0.75 0.5 1.51 1.25 0 0.25 0.5 0.50 0 0 1 1 0
Com isto o mtodo converge para o problema auxiliar. Ovalor da funo-objetivo do problema auxiliar torna-se zero(pois as variveis artificiais foram todas removidas dabase), e a soluo bsica vivel [x1, x2, x3] = [0.5;0;1.5].
-
Mtodo de duas fases
Fase IIIniciando a fase II, vemos que o quadro Simplex dado por(substituindo a ltima linha pelos coeficientes de custo dafuno-objetivo original):
x1 x2 x3 b0 0.75 1 1.51 1.25 0 0.5
cT 4 1 1 3.5
Como nossa base inicial dada por x1, x3, devemosexpressar a funo objetivo em termos da varivelno-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 IIAps a subtrao das linhas associadas s variveisbsicas, temos o quadro Simplex com a ltima linhaexpressando os coeficientes de custo relativo:
x1 x2 x3 b0 0.75 1 1.51 1.25 0 0.5
rT 0 3.25 0 3.5
Agora nos resta realizar o pivotamento.
-
Mtodo de duas fases
Fase II 0 0.75 1 1.51 1.25 0 0.50 3.25 0 3.5
0.6 0 1 1.80.8 1 0 0.42.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 computacionalVerificando nossa soluo no Matlab:
minimize: 4x1 + x2 + x3sujeito a: 2x1 + x2 + 2x3 = 4
3x1 + 3x2 + x3 = 3x 0
>> 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