PROGRAMAÇÃO LINEAR 14 de setembro de 2014 SUMÁRIO 1. Definição 2. Aplicações 3. Problema Ilustrativo 3.1 Enunciado 3.2 Dados Físicos e Econômicos 3.3 Modelo Matemático 3.4 Balanço de Informação e Variáveis de Projeto 3.5 Critério e Função Objetivo 3.6 Restrições 3.7 Região Viável 3.8 Resolução. Algoritmo SIMPLEX OBSERVAÇÃO PRELIMINAR OTIMIZAÇÃO: 1 EXTRATOR Modelo Matemático Restrições 1. Q (xo - x) - W y = 0 2. y - k x = 0 (k = 4) Avaliação Econômica Função Objetivo R = pAB W y C = pB W L = R – C = pAB W y - pB W L = a - b x - c/x OTIMIZAÇÃO: 2 EXTRATORES Modelo Matemático Restrições 1. Q(xo - x1) - W1 y1 = 0 2. y1 - k x1 = 0 3. Q(x1 -x2) - W2 y2 = 0 4. y2 - k x2 = 0 Avaliação Econômica Função Objetivo R = pAB (W1 y1 + W2 y2 ) C = pB (W1 + W2) L = pAB (W1 y1 + W2 y2 ) - pB (W1 + W2) L = a – b /x1– cx2 – d x1/x2 Observação: Restrições e Função Objetivo Não-Lineares OTIMIZAÇÃO: TROCADOR DE CALOR Modelo Matemático Restrições Avaliação Econômica Função Objetivo 1. Q W1Cp1 (T1 T2 ) 0 2. Q W3Cp3 (T4 T3 ) 0 3. Q UA 0 (T1 T4 ) (T2 T3 ) 4. 0 T T4 ln 1 T2 T3 CT = Ccap + Cutil 100 - T4 ln 35 CT 4.469 65 T4 A C cap (0,10)(1.350) 4,6 0, 48 Cutil = (8.500)(5x10-5)W3 0,48 286.875 T4 15 Observação: Restrições e Função Objetivo Não-Lineares OTIMIZAÇÃO: PROCESSO ILUSTRATIVO Modelo Restrições 01. f11 - f12 - f13 = 0 02. W15 - f23 = 0 03. f31 - f32 = 0 04. k – (3 + 0,04 Td) = 0 05. k – x13 / x12 = 0 06. (f11 Cp1 + f31 Cp3) (T1 - Td) + W15 Cp2l (T15 - Td) = 0 07. Vd - (f11 /1 + W15/2 + f31/3) = 0 08. r - f13/f11 = 0 09. T2 – Td = 0 10. T3 – Td = 0 11. f13 - f14 = 0 12. f23 - f24 - W5 = 0 13. W6 - W7 = 0 14. W6 [3 + Cpv (T6 – T7)] - Qe = 0 15. Qe – [(f13Cp1 + f23Cp2l)(Te - T3) + W5 2] = 0 16. Qe - Ue Ae e = 0 17. e - (T6- Te) = 0 18. T4 – Te = 0 19. T5 – Te = 0 20. W8 - W9 = 0 21. W5 - W10 = 0 22. Qc - W8 Cp3 (T9 - T8) = 0 23. W5 [2 + Cp2g (T5 – T10)] - Qc = 0 24. Qc - Uc Ac c = 0 25. c - [(T5 - T9) - (T10 - T8)]/ln[(T5 - T9)/(T10 - T8)] = 0 26. W11 - W12 = 0 27. W10 - W13 = 0 28. Qr - W11 Cp3 (T12 - T11) = 0 29. Qr - W10 Cp2l (T10 - T13) = 0 30. Qr - Ur Ar r = 0 31. r - [(T10 - T12) - (T13 - T11)]/ln[(T10 - T12)/(T13 - T11)] = 0 32. W13 + W14 - W15 = 0 33. W13 (T15 - T13) + W14 (T15 - T14) = 0 34. f11 + f31 - W1 = 0 35. x11 - f11 / W1 = 0 36. f12 + f22 – W2 = 0 37. x12 - f12/ W2 = 0 38. f13 + f23 – W3 = 0 39. x13 - f13 / W3 = 0 40. f14 + f24 - W4 = 0 41. x14 - f14/ W4 = 0 PROCESSO ILUSTRATIVO R = pAB f14 Fop $/a Investimento: Ib = Ibb (20/Pbb) Mb $ Id = Idb (Vd/Vdb) Md $ Ie = Ieb (Ae/Aeb) Me $ Ic = Icb (Ac/Acb) Mc $ Ir = Irb (Ar/Arb) Mr $ Avaliação Econômica Função Objetivo LE = 0,7 R – 0,8 C – 0,4 ISBL $/a ISBL = fT fD fL (Ib + Id + Ie + Ic + Ir) $ Custos: Cagua = pa (W8 + W11) $/h Cvapor = pv W6 $/h Csolvente = ps W14 $/h Cbomba = 0,15 $/h C = Fop (Cagua + Cvapor + Csolvente + Cbomba) $/a Observação: Restrições e Função Objetivo Não-Lineares 1. DEFINIÇÃO PROGRAMAÇÃO LINEAR É uma área da Otimização que trata exclusivamente de um tipo especial de problema: Min f(x) = a1 x1 + a2 x2 + ...+ an xn x s.a.: g(x) = b1 x1 + b2 x2 + ...+ bn xn 0 O que se observa ??? A Função Objetivo e todas as Restrições são lineares Problema de Programação Linear 2. APLICAÇÕES Por ser muito peculiar parece não encontrar aplicações... Pelo contrário: ele aparece no planejamento nas áreas de transportes: rodoviário, ferroviário, fluvial, marítimo, aéreo. comércio: distribuição de mercadorias por entrepostos; estoques. energia: produção e distribuição militar: logística produção industrial nosso interesse Outros... 3. PROBLEMA ILUSTRATIVO Planejamento da Produção de uma Refinaria (adaptado de Edgar & Himmelblau, “Optimization of Chemical Processes”, 1988) 3.1 ENUNCIADO Uma refinaria pode receber dois tipos de óleo cru: O1 e O2. A partir de cada um deles, ela pode produzir: - gasolina (G) - querosene (Q) - óleo combustível (C) - óleo residual (R) Determinar - quantos barris/dia a refinaria deve adquirir de cada óleo cru (x1, x2)(b/d) [disponibilidade ilimitada] - quanto a refinaria deve produzir, a partir de cada óleo, de - gasolina (x31, x32)(b/d) - querosene (x41, x42)(b/d) - óleo combustível (x51, x52)(b/d) - óleo residual (x61, x62)(b/d) Fluxograma com Informações Necessárias C1 = $/b O1 p1 = ($/b) x1 (b/d) b3/b1 b4/b1 b5/b1 b6/b1 x31 x41 x51 x61 PRODUTOS CRÚS C2 = $/b O2 x32 G x3(b/d) p3 = ($/b); x3max= (b/d) x42 Q x4(b/d) p4 = ($/b); x4max= (b/d) x52 C x5(b/d) p5 = ($/b); x5max= (b/d) x62 R x6(b/d) p6=10 ($/b) b3/b2 p2 = ($/b) b4/b2 x2 (b/d) b5/b2 b6/b2 3.2 DADOS FÍSICOS E ECONÔMICOS Processamento do Óleo O1: - preço do óleo : p1 = 24 $/b - custo de processamento: c1 = 0,50 $/b - perfil de produção : gasolina 80%, querosene 5%, óleo combustível 10% e óleo residual 5%. Processamento do Óleo O2: - preço do óleo : p2 = 15 $/b - custo de processamento: c2 = 1,0 $/b - perfil de produção : gasolina 44%, querosene 10%, óleo combustível 35% e óleo residual 10%. Preços de venda gasolina : p3 = 36 $/b querosene : p4 = 24 $/b óleo comb. : p5 = 21 $/b óleo resid. : p6 = 10 $/b Produção máxima de cada produto x3max = 24.000 b/d (x3 = x31 + x32) (G) x4max = 2.000 b/d (x4 = x41 + x42) (Q) x5max = 6.000 b/d (x5 = x51 + x52) (C) Dados resumidos no Fluxograma seguinte. Fluxograma C1 = 0,50 $/b O1 p1 = 24 ($/b) x1 (b/d) 0,80 b3/b1 0,05 b4/b1 0,10 b5/b1 0,05 b6/b1 x31 x41 x51 x61 PRODUTOS CRÚS C2 = 1 $/b O2 p2 = 15 ($/b) x2 (b/d) x32 G x3(b/d) p3 = 36 ($/b); x3max= 24.000(b/d) x42 Q x4(b/d) p4 = 24 ($/b); x4max= 2.000(b/d) x52 C x5(b/d) p5 = 21 ($/b); x5max= 6.000(b/d) x62 R x6(b/d) p6=10 ($/b) 0,44 b3/b2 0,10 b4/b2 0,36 b5/b2 0,10 b6/b2 No enfoque da Engenharia de Processos trata-se de um problema de Análise de Processos. Dimensionar uma dada estrutura Trata-se de um problema de otimização 5.2 ELEMENTOS COMUNS EM PROBLEMAS DE OTIMIZAÇÃO Todo problema de otimização exibe os seguintes elementos, qualquer que seja a sua área de aplicação. O conhecimento esses elementos e das suas características é de fundamental importância para a solução do problema 5.2.1 Variáveis de Decisão 5.2.2 Critério 5.2.3 Função Objetivo 5.2.4 Restrições 5.2.5 Região Viável 3.3 MODELO C1 = 0,50 $/b O1 p1 = 24 ($/b) x1 (b/d) 0,80 b3 / b1 0,05 b4 / b1 0,10 b5 / b1 0,05 b6 / b1 x31 x41 x51 x61 PRODUTOS CRÚS C2 = 1 $/b O2 0,44 b3 / b2 p2 = 15 ($/b) 0,10 b4 / b2 x2 (b/d) 0,36 b5 / b2 x32 G x3(b/d) p3 = 36 ($/b); x3max= 24.000(b/d) x42 Q x4(b/d) p4 = 24 ($/b); x4max= 2.000(b/d) x52 C x5(b/d) p5 = 21 ($/b); x5max= 6.000(b/d) x62 R x6(b/d) p6 = 10 ($/b) 0,10 b6 / b2 Modelo: Balanços Materiais Gasolina : 0,80 x1 + 0,44 x2 = x3 Querosene : 0,05 x1 + 0,10 x2 = x4 Óleo : 0,10 x1 + 0,36 x2 = x5 Residual : 0,05 x1 + 0,10 x2 = x6 3.4 BALANÇO DE INFORMAÇÃO E VARIÁVEIS DE PROJETO C1 = 0,50 $/b O1 p1 = 24 ($/b) x1 (b/d) 0,80 b3/b1 0,05 b4/b1 0,10 b5/b1 0,05 b6/b1 x31 x41 x51 x61 CRÚS C2 = 1 $/b O2 0,44 b3/b2 p2 = 15 ($/b) 0,10 b4/b2 x2 (b/d) 0,36 b5/b2 x32 G x3(b/d) x42 Q x4(b/d) x52 C x5(b/d) x62 R x6(b/d) 0,10 b6/b2 Modelo Gasolina : 0,80 x1 + 0,44 x2 = x3 Querosene : 0,05 x1 + 0,10 x2 = x4 Óleo : 0,10 x1 + 0,36 x2 = x5 Residual : 0,05 x1 + 0,10 x2 = x6 Balanço de Informação G=V–N=6–4G=2 Ordenação das Equações Gasolina Querosene Óleo Residual x1 * x2 * * * * * * * : 0,80 x1 + 0,44 x2 = x3 : 0,05 x1 + 0,10 x2 = x4 : 0,10 x1 + 0,36 x2 = x5 : 0,05 x1 + 0,10 x2 = x6 x3 * x4 x5 x6 * * Variáveis de Projeto: x1 e x2 * 3.5 CRITÉRIO E FUNÇÃO OBJETIVO C1 = 0,50 $/b 0,80 b3/b1 O1 p1 = 24 ($/b) x1 (b/d) 0,05 b4/b1 0,10 b5/b1 0,05 b6/b1 x31 x41 x51 x61 CRÚS C2 = 1 $/b O2 0,44 b3/b2 p2 = 15 ($/b) 0,10 b4/b2 x2 (b/d) 0,36 b5/b2 0,10 b6/b2 Função Objetivo L = R – CMP - CP x32 G x3(b/d) x42 Q x4(b/d) x52 C x5(b/d) x62 R x6(b/d) p3 = 36 ($/b) p4 = 24 ($/b) p5 = 21 ($/b) p6 = 10 ($/b) Receita (R): 36 x3 + 24 x4 + 21 x5 + 10 x6 Custos de MatPrim (CMP) : 24 x1 + 15 x2 Custos Processamento (CP).: 0,50 x1 + x2 L = 36 x3 + 24 x4 + 21 x5 + 10 x6 - 24 x1 - 15 x2 - 0,50 x1 - x2 3.6 RESTRIÇÕES Relembrando ... 5.2.3 Restrições São os limites impostos pelas leis naturais às variáveis do processo. Há dois tipos de restrições: (a) restrições de igualdade : h(x) = 0 São as equações do próprio modelo matemático. (b) restrições de desigualdade: g (x) 0 São os limites impostos às Variáveis de Projeto A presença de restrições pode alterar a solução de um problema C1 = 0,50 $/b O1 p1 = 24 ($/b) x1 (b/d) 0,80 b3/b1 0,05 b4/b1 0,10 b5/b1 0,05 b6/b1 x31 x41 x51 x61 PRODUTOS CRÚS C2 = 1 $/b O2 0,44 b3/b2 p2 = 15 ($/b) 0,10 b4/b2 x2 (b/d) 0,36 b5/b2 x32 G x3(b/d) p3 = 36($/b); x3max= 24.000(b/d) x42 Q x4(b/d) p4 = 24($/b); x4max= 2.000(b/d) x52 C x5(b/d) p5 = 21($/b); x5max= 6.000(b/d) x62 R x6(b/d) p6 = 10($/b) 0,10 b6/b2 Restrições de Igualdade Gasolina : 0,80 x1 + 0,44 x2 = x3 Querosene : 0,05 x1 + 0,10 x2 = x4 Óleo : 0,10 x1 + 0,36 x2 = x5 Residual : 0,05 x1 + 0,10 x2 = x6 Restrições de Desigualdade Gasolina : x3 24.000 Querosene : x4 2.000 Combustível : x5 6.000 Óleos crus : x1 0 e x2 0 Incorporando as Restrições à Função Objetivo Exemplo: dimensionamento de um extrator W kg B/h Q = 10.000 kgA/h xo= 0,02 kg AB/kg A x kgB/kgA rafinado y kg AB/kg B extrato Modelo Matemático: 1. Q (xo - x) - W y = 0 2. y - k x = 0 (k = 4) Balanço de Informação: V = 5, N = 2, C = 2, M = 0 G = 1 (otimização) Avaliação Econômica: L=R-C R = pAB W y C = pB W pAB = 0,4 $/kgAB : pB = 0,01 $/kgB Função Objetivo: L = R - C = pAB W y - pB W Incorporando as Restrições de Igualdade ordenadas à Função Objetivo (viável em problemas simples) x y, 2. y = k x 1. W = Q (xo - x)/y W L L = pAB W y - pB W x L L = a - b x - c/x De modo semelhante, no problema ilustrativo... Incorporando as Restrições Gasolina Querosene Óleo Residual : 0,80 x1 + 0,44 x2 = x3 : 0,05 x1 + 0,10 x2 = x4 : 0,10 x1 + 0,36 x2 = x5 : 0,05 x1 + 0,10 x2 = x6 ao Lucro L = 36 x3 + 24 x4 + 21 x5 + 10 x6 - 24 x1 - 15 x2 - 0,50 x1 - x2 Resulta L(x) = 8,1 x1 + 10,8 x2 Enunciado Formal do Problema Max L(x) = 8,1 x1 + 10,8 x2 {x1, x2} s.a.: 0,80 x1 + 0,44 x2 24.000 0,05 x1 + 0,10 x2 2.000 0,10 x1 + 0,36 x2 6.000 x1 0 x2 0 Examinando a Função Objetivo L(x) = 8,1 x1 + 10,8 x2 (linear) x2 = L / 10,8 – (8,1 / 10,8) x1 (família de retas) 20 648.000 324.000 x2 243.000 10 162.000 (1.000 b/d) 81.000 0 0 10 20 x1 (1.000 b/d) 30 40 3.7 REGIÃO VIÁVEL É a região do espaço delimitada pelas restrições 0,80 x1 + 0,44 x2 24.000 (gasolina) 0,05 x1 + 0,10 x2 2.000 (querosene) 0,10 x1 + 0,36 x2 6.000 (óleo) x1 0 x2 0 Forma geral: a x1 + bx2 c Re-escrevendo: x2 - (a/b) x1 + (c/b) São retas de inclinação negativa (a/b) com interseção no eixo x1 = 0: x2 = (c/b) interseção no eixo x2 = 0: x1 = (c/a) Colocando as restrições 0,80 x1 + 0,44 x2 24.000 (gasolina) 0,05 x1 + 0,10 x2 2.000 (querosene) 0,10 x1 + 0,36 x2 6.000 (óleo) x1 0 x2 0 Na forma x2 - (a/b) x1 + (c/b) resultam x2 - 1,818 x1 + 54.545 (gasolina) (c/a) = 30.000) x2 - 0,50 x1 + 20.000 (querosene) (c/a) = 40.000) x2 - 0,28x1 + 16.667 (óleo) (c/a) = 60.000) Os pontos A, B, C, D e E são vértices da Região Viável Desempenham um papel fundamental na resolução do problema. 20 c/b B óleo x2 10 C querosene D região viável convexa ! (1.000 b/d) 0 A gasolina 0 10 20 x1 (1.000 b/d) E 30 c/a 40 x2 - (a/b) x1 + (c/b) c/b x2 - 1,818 x1 + 54.545 (gasolina) (c/a) = 30.000) x2 - 0,50 x1 + 20.000 (querosene) (c/a) = 40.000) x2 - 0,28x1 + 16.667 (óleo) (c/a) = 60.000) 20 c/b O menor c/b é vértice ! B óleo x2 10 C querosene D região viável convexa ! (1.000 b/d) 0 A gasolina 0 10 20 x1 (1.000 b/d) E 30 c/a 40 3.8 RESOLUÇÃO Solução Ótima É a solução viável com o Lucro máximo Em duas dimensões, a identificação visual da Solução Ótima é imediata. 20 B 243.000 324.000 C 162.000 x2 (1.000 b/d) óleo 10 querosene D 26.207 81.000 Solução (D): (26.207, 6.897) (L=286.764) gasolina 0 A E 0 10 20 x1 (1.000 b/d) 6.897 30 40 Com outros valores dos parâmetros físicos e econômicos, a inclinação da Função Objetivo seria outra e a solução seria outra. 20 B óleo x2 10 C Solução (C): (14.000, 13.000) (L = 637.000) querosene D (1.000 b/d) gasolina 0 A E 0 10 20 x1 (1.000 b/d) 30 40 Pode-se provar que A Solução Ótima se localiza sempre num dos Vértices da Região Viável 20 B óleo x2 10 C Solução (C): (14.000, 13.000) (L = 637.000) querosene D (1.000 b/d) gasolina 0 A E 0 10 20 x1 (1.000 b/d) 30 40 Como localizar a solução em problemas complexos sem o recurso visual? Criando um procedimento numérico que simule o exame dos vértices No exemplo, apenas 5 pontos 20 B 243.000 C 324.000 óleo x2 10 querosene 162.000 D (1.000 b/d) 81.000 0 A Solução: (26.207, 6.897) (L=286.764) gasolina E 0 0 10 Origem: solução trivial 20 x1 (1.000 b/d) 30 (como???) 40 Primeiro, há que se caracterizar numericamente os vértices Se encontram na fronteira da região viável São interseções de duas restrições Correspondem à produção máxima de dois produtos 20 B 243.000 C 324.000 óleo x2 10 querosene 162.000 D (1.000 b/d) 81.000 0 A Solução: (26.207, 6.897) (L=286.764) gasolina E 0 0 10 Origem: solução trivial 20 x1 (1.000 b/d) 30 40 Uma vez caracterizados os vértices, o procedimento numérico de busca deve se restringir: (a) à fronteira da Região Viável (b) uma vez na fronteira, à interseção de duas restrições Como restringir a busca à fronteira da região viável ? Transformando as restrições de desigualdade em restrições de igualdade. Relembrando... Restrições de Desigualdade 2,0 0,4 0,6 1,5 0,8 1.0 A x2 1,0 0,5 Solução irrestrita: A Solução restrita : B B 0,0 0,0 0,5 1,0 1,5 2,0 x1 f ( x ) 1 ( x1 1) 2 ( x1 1)( x 2 1) ( x 2 1) 2 g ( x ) = x 2 + x 2 - 0 , 25 0 1 1 2 g (x) = x 0 2 1 g3(x) = x2 0 São válidos apenas os pontos localizados sobre a fronteira ou no interior da região. Restrições de Igualdade (solução sobre a curva) 2,0 0,4 0,6 1,5 0,8 1.0 A x 1,0 2 0,5 B 0,0 0,0 h(x) = 0 0,5 1,0 x 1,5 2,0 1 f ( x ) 1 ( x 1 1) 2 ( x 1 1)( x 2 1) ( x 2 1) 2 h ( x) = x 12 + x 22 - 0, 25 = 0 g2(x) = x1 0 g3(x) = x2 0 Solução Irrestrita: A Solução Restrita : B São válidos apenas os pontos localizados sobre a fronteira da região. Ou seja Transformando as restrições de desigualdade em restrições de igualdade, o interior da região é eliminado da busca, que fica restrita à sua fronteira (periferia). 20 B 243.000 C 324.000 óleo x2 10 querosene 162.000 D (1.000 b/d) 81.000 0 A Solução: (26.207, 6.897) (L=286.764) gasolina E 0 0 10 x1 (1.000 b/d) 20 30 40 Esta transformação pode ser operada com o auxílio do conceito Folga É a diferença entre a produção de um produto e a sua produção máxima Serve para medir a “distância” para produção máxima A todo ponto (x1, x2) no interior da Região Viável corresponde uma folga, fi pois a produção de cada produto é inferior à máxima. Exemplo: ponto I (folgas na produção de gasolina, querosene e óleo). Gasolina : 0,80 x1 + 0,44 x2 = x3 = 12.400 (24.000) Querosene : 0,05 x1 + 0,10 x2 = x4 = 1.500 (2.000) : 0,10 x1 + 0,36 x2 = x5 = 4.600 (6.000) F Óleo 20 B óleo C G x2 I 10 querosene D x1 = x2 = 10 (1.000 b/d) 0 A f1 = 11.600 b/d f2 = 500 b/d f3 = 1.400 b/d 0 10 gasolina 20 x1 (1.000 b/d) E 30 H 40 A todo ponto (x1, x2) localizado sobre um restrição corresponde uma folga zero, pois a produção do produto correspondente é a máxima. Exemplo: ponto J (produção máxima de óleo = 6.000 b/d: f3 = 0). Gasolina : 0,80 x1 + 0,44 x2 = x3= 14.116 (24.000) Querosene : 0,05 x1 + 0,10 x2 = x4 = 1.809 (2.000) Óleo : 0,10 x1 + 0,36 x2 = x5 = 6.000 (6.000) F 20 B óleo 13,89 x2 J C x1 = 10 x2 = 13,89 querosene 10 D f1 = 9.884 b/d f2 = 110 b/d f3 = 0 b/d (1.000 b/d) 0 A 0 10 G gasolina 20 x1 (1.000 b/d) E 30 H 40 A todo ponto (x1, x2) localizado sobre um vértice correspondem 2 folgas zero pois a produção dos dois produtos é a máxima Exemplo: ponto C (produção máxima de óleo e de querosene) Gasolina : 0,80 x1 + 0,44 x2 = x3= 16.600 (24.000) Querosene : 0,05 x1 + 0,10 x2 = x4 = 2.000 (2.000) : 0,10 x1 + 0,36 x2 = x5 = 6.000 (6.000) FÓleo 20 B x2 C óleo 15,0 x1 = 12,5 x2 = 15,0 10 G querosene D f1 = 7.400 b/d f2 = 0 b/d f3 = 0 b/d (1.000 b/d) 0 A 0 gasolina 10 12,5 20 x1 (1.000 b/d) E 30 H 40 Então, nos vértices, duas folgas são iguais a zero 20 B 243.000 C 324.000 óleo x2 10 querosene 162.000 D (1.000 b/d) 81.000 0 A gasolina E 0 0 10 Origem: solução trivial A x1 = 0 x2 = 0 f1 = 24.000 f2 = 2.000 f3 = 6.000 B x1 = 0 x2 = 16.667 f1 = 16.667 f2 = 333 f3 = 0 C x1 = 15.000 x2 = 12.500 f1 = 6.500 f2 = 0 f3 = 0 20 x1 30 40 (1.000 b/d) D x1 = 26.207 x2 = 6.897 f1 = 0 f2 = 0 f3 = 897 E x1 = 30.000 x2 = 0 f1 = 0 f2 = 500 f3 = 3.000 Caracterizados os vértices em função das folgas, resta: (a) incorporar as folgas ao problema (b) examinar os pontos em que duas folgas são zero (vértice) As folgas são incorporadas ao problema transformando restrições de desigualdade em restrições de igualdade Max L(x) = 8,1 x1 + 10,8 x2 {x1, x2} s.a.: 0,80 x1 + 0,44 x2 24.000 (gasolina) 0,05 x1 + 0,10 x2 2.000 (querosene) 0,10 x1 + 0,36 x2 6.000 (óleo) x1 0 x2 0 Incorporando as folgas fi ao problema Max L(x) = 8,1 x1 + 10,8 x2 {x1, x2} s.a.: 0,80 x1 + 0,44 x2 + f1 0,05 x1 + 0,10 x2 + f2 0,10 x1 + 0,36 x2 + f3 x1 0 x2 0 = 24.000 (gasolina) = 2.000 (querosene) = 6.000(óleo) Comparando o Problema Original com o Problema Modificado Problema original (2 variáveis) 3 restrições de desigualdade e 2 de não negatividade Max L(x) = 8,1 x1 + 10,8 x2 {x1, x2} s.a.: 0,80 x1 + 0,44 x2 24.000 (gasolina) 0,05 x1 + 0,10 x2 2.000 (querosene) 0,10 x1 + 0,36 x2 6.000 (óleo) x1 0 x2 0 Busca na periferia e no interior da RV Problema modificado (5 variáveis: 2 de projeto, 3 calculadas) 3 restrições de igualdade e 2 de não negatividade Max L(x) = 8,1 x1 + 10,8 x2 {x1, x2} s.a.:0,80 x1 + 0,44 x2 + f1 = 24.000 (gasolina) 0,05 x1 + 0,10 x2 + f2 = 2.000 (querosene) 0,10 x1 + 0,36 x2 + f3 = 6.000 (óleo) x1 0 x2 0 Busca restrita à periferia da RV As restrições de igualdade formam agora um sistema de equações lineares. 0,80 x1 + 0,44 x2 +f1 = 24.000 (gasolina) 0,05 x1 + 0,10 x2 +f2 = 2.000 (querosene) 0,10 x1 + 0,36 x2 +f3 = 6.000 (óleo) V = 5 : N = 3 : G = 2 !!! Trata-se de um problema de otimização em que só interessam soluções com duas folgas iguais a zero (vértices). x1 e x2 podem ser consideradas folgas em relação à produção máxima dos 3 produtos. x1 = x2 = 0 correspondem a um vértice, que é a origem, onde as folgas são: f1 = 24.000, f2 = 2.000, f3 = 6.000. É a Solução Trivial do problema, em que nada se compra e nada se produz L = 0 20 B 243.000 C 324.000 óleo x2 10 querosene 162.000 D (1.000 b/d) 81.000 0 A gasolina E 0 0 10 Origem: solução trivial A x1 = 0 x2 = 0 f1 = 24.000 f2 = 2.000 f3 = 6.000 B x1 = 0 x2 = 16.667 f1 = 16.667 f2 = 333 f3 = 0 C x1 = 15.000 x2 = 12.500 f1 = 6.500 f2 = 0 f3 = 0 20 x1 30 40 (1.000 b/d) D x1 = 26.207 x2 = 6.897 f1 = 0 f2 = 0 f3 = 897 E x1 = 30.000 x2 = 0 f1 = 0 f2 = 500 f3 = 3.000 Falta, agora, manipular as folgas simulando a visita aos vértices... A x1 = 0 x2 = 0 f1 = 24.000 f2 = 2.000 f3 = 6.000 B x1 = 0 x2 = 16.667 f1 = 16.667 f2 = 333 f3 = 0 C x1 = 15.000 x2 = 12.500 f1 = 6.500 f2 = 0 f3 = 0 D x1 = 26.207 x2 = 6.897 f1 = 0 f2 = 0 f3 = 897 E x1 = 30.000 x2 = 0 f1 = 0 f2 = 500 f3 = 3.000 Para isso, é necessário reescrever o sistema de equações em função dos pares (x1,f3), (f2,f3), (f1,f2) e (x2, f1). A x1 = 0 x2 = 0 f1 = 24.000 f2 = 2.000 f3 = 6.000 B x1 = 0 x2 = 16.667 f1 = 16.667 f2 = 333 f3 = 0 C x1 = 15.000 x2 = 12.500 f1 = 6.500 f2 = 0 f3 = 0 D x1 = 26.207 x2 = 6.897 f1 = 0 f2 = 0 f3 = 897 E x1 = 30.000 x2 = 0 f1 = 0 f2 = 500 f3 = 3.000 Exemplo Forma Original 0,80 x1 + 0,44 x2 + f1 = 24.000 (gasolina) 0,05 x1 + 0,10 x2 + f2 = 2.000 (querosene) 0,10 x1 + 0,36 x2 + f3 = 6.000 (óleo) Uma das formas equivalentes 0,68 x1 – 1,22 f3 + f1 0,02 x1 - 0,78 f3 + f2 0,28 x1 + 2,78 f3 + x2 = 16.667 (gasolina) = 333 (querosene) = 16.667 (óleo) Na primeira, com x1 = 0 e x2 = 0 vértice A (origem) Na segunda, com x1 = 0 e f3 = 0 vértice B Sob cada forma, atribuindo-se o valor zero e essas variáveis, obtém-se a solução no vértice correspondente. A x1 = 0 x2 = 0 f1 = 24.000 f2 = 2.000 f3 = 6.000 B x1 = 0 x2 = 16.667 f1 = 16.667 f2 = 333 f3 = 0 C x1 = 15.000 x2 = 12.500 f1 = 6.500 f2 = 0 f3 = 0 D x1 = 26.207 x2 = 6.897 f1 = 0 f2 = 0 f3 = 897 E x1 = 30.000 x2 = 0 f1 = 0 f2 = 500 f3 = 3.000 20 x1 = 0 f2 = 333 f3 = 0 B 243.000 C 10 x2 324.000 óleo querosene 162.000 D (1.000 b/d) 81.000 0 A Solução: (26.207, 6.897) (L=286.759) gasolina E 0 0 10 x1 20 30 40 (1.000 b/d) A x1 = 0 x2 = 0 f1 = 24.000 f2 = 2.000 f3 = 6.000 B x1 = 0 x2 = 16.667 f1 = 16.667 f2 = 333 f3 = 0 C x1 = 15.000 x2 = 12.500 f1 = 6.500 f2 = 0 f3 = 0 D x1 = 26.207 x2 = 6.897 f1 = 0 f2 = 0 f3 = 897 E x1 = 30.000 x2 = 0 f1 = 0 f2 = 500 f3 = 3.000 3.9 Algoritmo SIMPLEX ALGORITMO SIMPLEX Simula, numericamente, o exame de cada vértice em busca da solução ótima. O SIMPLEX parte da origem e visita os demais vértices invertendo sucessivamente o papel de 2 variáveis: uma de projeto e outra calculada. Para cada inversão, calcula a Função Objetivo A x1 = 0 x2 = 0 f1 = 24.000 f2 = 2.000 f3 = 6.000 B x1 = 0 x2 = 16.667 f1 = 16.667 f2 = 333 f3 = 0 C x1 = 15.000 x2 = 12.500 f1 = 6.500 f2 = 0 f3 = 0 D x1 = 26.207 x2 = 6.897 f1 = 0 f2 = 0 f3 = 897 E x1 = 30.000 x2 = 0 f1 = 0 f2 = 500 f3 = 3.000 ALGORITMO SIMPLEX Simula, numericamente, o exame de cada vértice em busca da solução ótima. O SIMPLEX parte da origem e visita os demais vértices invertendo sucessivamente o papel de 2 variáveis: uma de projeto e outra calculada. O Algoritmo Inverte os papéis das variáveis, re-escrevendo sistema de equações com uma outra base (variáveis de projeto). A x1 = 0 x2 = 0 f1 = 24.000 f2 = 2.000 f3 = 6.000 B x1 = 0 x2 = 16.667 f1 = 16.667 f2 = 333 f3 = 0 C x1 = 15.000 x2 = 12.500 f1 = 6.500 f2 = 0 f3 = 0 D x1 = 26.207 x2 = 6.897 f1 = 0 f2 = 0 f3 = 897 E x1 = 30.000 x2 = 0 f1 = 0 f2 = 500 f3 = 3.000 ALGORITMO SIMPLEX Private Sub EXECUTAR_Click() ' LerTableau Do ColunaQueSai If Convergir = True Then Exit Sub LinhaQueEntra Pivotear Loop End Sub A inversão é executada aplicando o Algoritmo de Gauss-Jordan à Matriz Aumentada (Tableau) do sistema 0,80 x1 + 0,44 x2 + f1 = 24.000 (gasolina) 0,05 x1 + 0,10 x2 + f2 = 2.000 (querosene) 0,10 x1 + 0,36 x2 + f3 = 6.000 (óleo) L(x) = 8,1 x1 + 10,8 x2 x1 x2 f1 f2 f3 0,80 0,44 1 0 0 24.000 0,05 0,10 0 1 0 2.000 0,1 0,36 0 0 1 6.000 8,10 10,80 0 0 0 L O Lucro é incluído na matriz para que os seus coeficientes sofram as mesmas transformações e fique expresso automaticamente na nova base. Exemplo de resultado da aplicação do Algoritmo de GaussJordan trocando x2 por f3. 0,68 x1 + f1 – 1,22 f3 = 16.667 0,022 x1 + f2 – 0,278 f3 = 2.000 0,278 x1 + x2 – 2,78 f3 = 6.000 L(x) = 5,1 x1 – 30 f3 = 180.000 0,80 x1 + 0,44 x2 + f1 = 24.000 0,05 x1 + 0,10 x2 + f2 = 2.000 0,10 x1 + 0,36 x2 + f = 6.000 3 L(x) = 8,1 x1 + 10,8 x2 x1 x2 f1 f2 f3 0,80 0,44 1 0 0 24.000 0,05 0,10 0 1 0 2.000 0,1 0,36 0 0 1 6.000 8,10 10,80 0 0 0 L x1 x2 f1 f2 f3 0,678 0 1 0 -1,222 16.667 0,022 0 0 1 - 0,278 333,33 0,278 1 0 0 2,778 16.667 5,10 0 0 0 -30 L - 180.000 O Algoritmo de Gauss-Jordan encontra-se explicado no arquivo Sistemas de Equações Encontrado no site logo abaixo deste de Programação Linear Critério para a troca de papéis De variável de projeto para variável calculada Observe-se o Lucro: L(x) = 8,1 x1 + 10,8 x2 Para x1 = x2 = 0 L = 0 Para x1 > 0 e/ou x2 > 0 L > 0 Seleciona-se a variável de projeto de maior coeficiente positivo na expressão do Lucro (a que mais contribui, naquela iteração, para o aumento do Lucro). Então, x2 é a escolhida e passa a ser variável calculada: x2 x2 x1 x2 f1 f2 f3 0,80 0,05 0,44 0,10 1 0 0 1 0 0 24.000 2.000 0,1 0,36 0 0 1 6.000 8,10 10,80 0 0 0 L x2 x2 Coluna pivot De variável calculada para variável de projeto Para cada linha, identifica-se o menor valor de c/b, sendo b o valor do coeficiente constante (coluna da direita) e c o valor na coluna da variável de projeto escolhida acima (no caso, x2). O menor valor de c/b corresponde à interseção mais próxima da origem e, consequentemente, pertencente à Região Viável 0,80 x1 + 0,44 x2 24.000 (gasolina) 0,05 x1 + 0,10 x2 2.000 (querosene) 0,10 x1 + 0,36 x2 6.000 (óleo) c/b=24.000 / 0,44 = 54.545 c/b = 2.000 / 0,10 = 20.000 c/b = 6.000 / 0,36 = 6.000 Então, f3 passa a ser variável de projeto: f3 f3 Região Viável 0,80 x1 + 0,44 x2 24.000 (gasolina) 0,05 x1 + 0,10 x2 2.000 (querosene) 0,10 x1 + 0,36 x2 6.000 (óleo) (c/a) = 30.000 : (c/b) = 54.545 (c/a) = 40.000 : (c/b) = 20.000 (c/a) = 60.000 : (c/b) = 16.667 Das 3 interseções com x1 = 0, B é o vértice porque é o de menor (c/b) Das 3 interseções com x2 = 0, E é o vértice porque é o de menor (c/a) 20 menor (c/b) Qualquer ponto no interior ou sobre a fronteira da Região Viável é uma Solução Viável B óleo x2 10 C querosene D região convexa ! (1.000 b/d) 0 A gasolina 0 10 20 x1 (1.000 b/d) E 30 40 f3 f 3 Linha pivot x1 x2 f1 f2 f3 0,80 0,05 0,44 0,10 1 0 0 1 0 0 24.000 2.000 0,1 0,36 0 0 1 6.000 8,10 10,80 0 0 0 L x2 x2 Coluna pivot A mudança de base é executada pela operação de pivoteamento utilizada pelo Algoritmo de Gauss-Jordan para a solução de sistemas de equações lineares. f3 f 3 Linha pivot x1 x2 f1 f2 f3 0,80 0,05 0,44 0,10 1 0 0 1 0 0 24.000 2.000 0,1 0,36 0 0 1 6.000 8,10 10,80 0 0 0 L x2 x2 Coluna pivot A linha do menor c/b é denominada “linha pivot” A coluna da variável que passa a calculada é denominada “coluna pivot”. O elemento da interseção é denominado “pivot” f3 f 3 x1 x2 f1 f2 f3 0,80 0,44 1 0 0 24.000 0,05 0,10 0 1 0 2.000 0,1 0,36 0 0 1 6.000 8,10 10,80 0 0 0 L x2 x2 Primeiro passo: divide-se a linha pivot pelo pivot. A eq. 3 era: f3 =6.000 – 0,10 x1 – 0,36 x12 A eq. 3 já fica: x2 = 16.667 – 0,28 x1 – 2,78 f3 x1 x2 f1 f2 f3 0,80 0,44 1 0 0 24.000 0,05 0,10 0 1 0 2.000 0,278 1 0 0 2,778 8,10 10,80 0 0 0 16.667 L x1 x2 f1 f2 f3 0,80 0,44 1 0 0 24.000 0,05 0,10 0 1 0 2.000 0,278 1 0 0 2,778 16.667 8,10 10,80 0 0 0 L Em seguida, o pivoteamento: aij = aij – aip a3pj Ex.: a11= 0,80 – 0,278 x 0,44 = 0,678 x1 x2 f1 f2 f3 0,678 0,44 1 0 - 1,222 0,022 0,10 0 1 - 0,278 333,33 0,278 1 0 0 2,778 16.667 5,10 10,80 0 0 - 30 16.667 L - 180.000 Chega-se, assim, ao Ponto B x1 x2 f1 f2 f3 0,678 0 1 0 -1,227 16.667 0,022 0 0 1 - 0,278 333,33 0,278 1 0 0 2,778 16.667 5,10 0 0 0 -30 L - 180.000 5,10 x1 – 30 x2 = L – 180.000 Com x1 = f3 = 0 L = 180.000 Ponto B Com x1 = f3 = 0 L = 180.000 x1 x2 f1 f2 f3 0,678 0 1 0 -1,227 16.667 0,022 0 0 1 - 0,278 333,33 0,278 1 0 0 2,778 16.667 5,10 0 0 0 -30 L - 180.000 20 B 243.000 óleo x2 10 C 324.000 querosene 162.000 D (1.000 b/d) 81.000 0 A gasolina E 0 0 10 x 20 (1.000 b/d) 30 40 O pivoteamento corresponde à migração de um vértice a outro sobre a restrição. 20 B 243.000 óleo x2 10 C 324.000 querosene 162.000 D (1.000 b/d) 81.000 0 A gasolina E 0 0 10 x 20 (1.000 b/d) 30 40 x1 x2 f1 f2 f3 c/b = 24.510 0,678 0 1 0 -1,227 16.667 0,022 0 0 1 - 0,278 333,33 0,278 1 0 0 2,778 16.667 5,10 0 0 0 -30 L - 180.000 f2 f2 c/b = 16.667 c/b = 59.525 x1 x1 Divide-se a linha do pivot pelo pivot. Pivoteamento: aij = aij – aip apj x1 x2 f1 f2 f3 0 0 1 -30,5 7,25 6.500 1 0 0 45 -12,5 15.000 0 1 0 -12,5 6,25 12.500 0 0 0 - 229,5 3,75 L – 256.500 Com f2 = f3 = 0 L = 256.500 Ponto C Com f2 = f3 = 0 L = 256.500 20 B x1 x2 f1 f2 f3 0 0 1 -30,5 7,25 6.500 1 0 0 45 -12,5 15.000 0 1 0 -12,5 6,25 12.500 0 0 0 - 229,5 3,75 L – 256.500 243.000 óleo x2 10 C 324.000 querosene 162.000 D (1.000 b/d) 81.000 0 A gasolina E 0 0 10 x 20 (1.000 b/d) 30 40 x1 x2 f1 f2 f3 f1 f 1 0 0 1 -30,5 7,25 6.500 c/b = - 1.202 1 0 0 45 -12,5 15.000 c/b = 1.983 0 1 0 -12,5 6,25 12.500 0 0 0 - 229,5 3,75 L – 256.500 c/b = 867 f3 f3 Divide-se a linha do pivot pelo pivot. Pivoteamento: aij = aij – aip apj x1 x2 f1 f2 f3 0 0 0,138 4,207 1 867 1 0 1,724 -7,586 0 26.207 0 1 - 0,862 13,793 0 6.897 0 0 - 4,655 -86,517 0 L – 286.759 Com f1 = f2 = 0 L = 286.759 Todos os coeficientes de L negativos Nenhuma variável para entrar FIM x1 x2 f1 f2 f3 0 0 0,138 4,207 1 867 1 0 1,724 -7,586 0 26.207 0 1 - 0,862 13,793 0 6.897 0 0 - 4,655 -86,517 0 L – 286.759 SOLUÇÃO Ponto D Com f1 = f2 = 0 L = 286.759 20 B x1 x2 f1 f2 f3 0 0 0,138 4,207 1 867 1 0 1,724 -7,586 0 26.207 0 1 - 0,862 13,793 0 6.897 0 0 - 4,655 -86,517 0 L – 286.759 243.000 óleo x2 10 C 324.000 Solução: x1= 26.207 x2 = 6.897 gasolina = 24.000 (f1 = 0) querosene = 2.000 (f2 = 0) óleo = 5.133 (f3 = 867) querosene L = 286.759 162.000 D (1.000 b/d) 81.000 0 A gasolina E 0 0 10 x 20 (1.000 b/d) 30 40 Fluxograma com a Solução PRODUTOS C1 = 0,50 $/b O1 p1 = 24 ($/b) x1 = 26.207(b/d) x32= 20.965 b/d p3 = 36 ($/b); x3max= 24.000(b/d) x41 = 1.310 b/d p4 = 24 ($/b); x4max= 2.000(b/d) 0,10 b5/b1 x51 = 2.620 b/d p5 = 21 ($/b); x5max= 6.000(b/d) 0,05 b6/b1 x61 = 1.310 b/d p6=10 ($/b) 0,80 b3/b1 0,05 b4/b1 CRÚS C2 = 1 $/b O2 0,44 b3/b2 p2 = 15 ($/b) 0,10 b4/b2 x2 = 6.897(b/d) 0,36 b5/b2 0,10 b6/b2 x32 = 3.035 b/d G x3 = 24.000 ( b/d) x42= 690 b/d Q X4 = 2.000 (b/d) x52= 2.843 b/d C x5= 5.103 (b/d) folga = 897 b/d x62= 690 b/d R x6= 2.000 (b/d) L = 286.764 $/a PROBLEMA COM RESTRIÇÕES DO TIPO Exemplo Min C = x2 – 6 x1 s.a. : 4 x1 + x2 21 - x1 + x2 1 2 x1 + 3 x2 13 !!! PROBLEMA Min C = x2 – 6 x1 s.a.: 4 x1 + x2 21 - x1 + x2 1 2 x1 + 3 x2 13 REGIÃO VIÁVEL 6 B 5 4 ABC A 3 Convexa 2 C 1 D 0 0 1 2 3 4 5 6 PROBLEMA Min C = x2 – 6 x1 s.a.: 4 x1 + x2 21 - x1 + x2 1 2 x1 + 3 x2 13 (!!!) Matriz Aumentada (Tableau) Restrições : folgas positivas Restrições = : folgas zero Restrições : folgas negativas x1 4 -1 x2 1 1 f1 1 0 f2 0 1 2 -6 3 1 0 0 0 0 f3 0 0 -1 0 C 21 1 13 C-0 A origem não pertence à Região Viável Como iniciar o SIMPLEX? 6 B 5 4 A 3 2 C 1 0 0 1 2 3 4 5 6 Há que se selecionar um vértice para servir de ponto de partida para o SIMPLEX. PROCEDIMENTO Método das Duas fases Fase 1: Cria-se e resolve-se um Problema Artificial. 6 B 5 A solução do Problema Artificial é o vértice da Região Viável que servirá de ponto de partida para a solução do Problema Original. 4 A 3 2 C 1 D 0 0 1 2 3 4 5 6 Fase 2: resolve-se o Problema Original a partir da solução do Problema Artificial PROBLEMA ARTIFICIAL x1 4 -1 x2 1 1 f1 1 0 f2 0 1 f3 0 0 C 21 1 2 -6 3 1 0 0 0 0 -1 0 13 C-0 (a) para cada folga negativa fj, cria-se uma variável artificial xja que é incorporada ao Tableau x1 4 -1 x2 1 1 f1 1 0 f2 0 1 f3 0 0 x1a 0 0 C 21 1 2 -6 3 1 0 0 0 0 -1 0 1 0 13 C-0 x1 4 -1 2 -6 x2 1 1 3 1 f1 1 0 0 0 f2 0 1 0 0 f3 0 0 -1 0 x1a 0 0 1 0 C 21 1 13 C-0 (b) cria-se, também, uma Função Objetivo Artificial: Ca = xja Da linha 3: Ca = x1a = 13 – 2x1 – 3x2 + f3 x1 4 -1 2 -6 x2 1 1 3 1 f1 1 0 0 0 f2 0 1 0 0 f3 0 0 -1 0 x1a 0 0 1 0 C 21 1 13 C-0 Ca = x1a = 13 – 2 x1 – 3 x2 + f3 que também é inserida no Tableau x1 4 -1 x2 1 1 f1 1 0 f2 0 1 f3 0 0 x1a 0 0 C 21 1 2 -6 -2 3 1 -3 0 0 0 0 0 0 -1 0 1 1 0 0 13 C-0 Ca -13 x1 4 -1 2 -6 -2 x2 1 1 3 1 -3 f1 1 0 0 0 0 f2 0 1 0 0 0 f3 0 0 -1 0 1 x1a 0 0 1 0 0 C 21 1 13 C-0 Ca - 13 Ca = x1a = 13 – 2x1 – 3x2 + f3 (d) aplica-se o SIMPLEX ao Tableau partindo de x1 = x2 = f3 = 0, que é a base natural para o Problema Artificial, onde Ca = 13. Minimizando Ca chegando a Ca = x1a = 0 Ao final da Fase 1 as variáveis e a Função Objetivo artificiais terão desaparecido, ficando o Tableau original com um ponto de partida para o SIMPLEX. x1 4 -1 2 -6 -2 x2 1 1 3 1 -3 f1 1 0 0 0 0 f2 0 1 0 0 0 f3 0 0 -1 0 1 x1a 0 0 1 0 0 C 21 1 13 C-0 Ca -13 Assim, aplicando o SIMPLEX, resulta ... x1 0 0 x2 0 1 f1 1 0 f2 2 0,4 f3 1 - 0,2 x1a -1 0,2 C 10 3 1 0 0 0 0 0 0 0 0 - 0,6 -4 0 - 0,2 -1 1 0,2 1 2 -2 C-9 Ca - 0 x1 0 0 1 0 0 x2 0 1 0 0 0 f1 1 0 0 0 0 f2 2 0,4 - 0,6 -4 0 f3 1 - 0,2 - 0,2 -1 1 6 x1a -1 0,2 0,2 1 2 C 10 3 2 9 Ca - 0 Solução Fase 1 B 5 f2 = f3 = x1a = 0 4 x1 = 2 x2 = 3 f1 = 10 Ca = 0 C=9 A 3 2 C 1 D 0 0 1 2 3 4 5 6 x1 0 0 1 0 0 x2 0 1 0 0 0 f1 1 0 0 0 0 f2 f3 2 1 0,4 - 0,2 - 0,6 - 0,2 -4 -1 0 1 x1a -1 0,2 0,2 1 2 C 10 3 2 C-9 0 Removem-se x1a e Ca, regenerando o Tableau original x1 0 x2 0 f1 1 0 1 0 1 0 0 0 0 0 f2 2 f3 1 C 10 0,4 - 0,2 3 - 0,6 - 0,2 2 -4 -1 C - 9 x1 0 0 1 x2 0 1 0 f1 1 0 0 f2 2 0,4 - 0,6 f3 1 - 0,2 - 0,2 C 10 3 2 0 0 0 -4 -1 C-9 Aplicando o SIMPLEX... x1 x2 f1 f2 f3 C 0 0 0 1 0,5 - 0,2 1 0 0,5 - 0,4 5 1 1 0 0 0 0,3 2 0 0 0,1 1 5 C - 29 x1 0 0 1 0 x2 0 1 0 0 f1 0,5 - 0,2 0,3 2 f2 1 0 0 0 f3 C 0,5 5 - 0,4 1 0,1 5 1 C - 29 6 B 5 4 A 3 2 C 1 D 0 0 1 2 3 4 5 6 Solução f1 = f3 = 0 x1 = 5 x2 = 1 f2 = 5 f3 = 0 C = 29 ANÁLISE DE SENSIBILIDADE 3.5 INCERTEZA E ANÁLISE DE SENSIBILIDADE A análise de processos é executada em ambiente de muita incerteza. Fontes de incerteza: (a) modelos matemáticos: aproximações lineares, coeficientes constantes... (b) parâmetros físicos e econômicos: valores incertos (aproximados e variáveis). A avaliação dos efeitos da incerteza é efetuada através da Análise de Sensibilidade Fazem parte da Análise: - as variáveis características do dimensionamento: dimensões. - as variáveis características do desempenho do processo: variáveis de saída (metas de projeto). - os parâmetros cujos valores são considerados incertos (variáveis conhecidas são aqui incorporadas ao conjunto dos parâmetros Controle !!!). Fundamento da Análise de Sensibilidade Exemplo: Trocador de Calor T4* = 30 oC A = 265,6 T m2 2 * 1. Q W1Cp1 (T1 T2 ) 0 = 25 oC W1* = 30.000 kg/h T1* = 80 oC W3 = 44.000 kg/h 2. Q W3 Cp 3 (T4 T3 ) 0 3. Q UA 0 (T T4 ) (T2 T3 ) 4. 1 0 T1 T4 ln T2 T3 T3* = 15 oC : vetor dos parâmetros (físicos e econômicos) e das variáveis especificadas cujos valores são incertos. Exemplo: Cp1, Cp3, U, W1, T1, T3. F: variável do processo cujo valor é incerto devido à incerteza nos parâmetros . Exemplo: W3, A. Fundamento da Análise de Sensibilidade : vetor dos parâmetros (físicos e econômicos) e das variáveis especificadas cujos valores são incertos. Exemplo: Cp1, Cp3, U, W1, T1, T3. F: variável do processo cujo valor é incerto devido à incerteza nos parâmetros . Exemplo: W3, A. S (F; i): Sensibilidade de F à incerteza no parâmetro i. F F( i ) S(F; i ) i i * Exemplo: *i A(i ) S( A;U) U U100 i ANÁLISE DE SENSIBILIDADE EM PROBLEMAS DE PROGRAMAÇÃO LINEAR ANÁLISE DE SENSIBILIDADE EM PROBLEMAS DE PROGRAMAÇÃO LINEAR C1 = 0,50 $/b O1 p1 = 24 ($/b) x1 (b/d) 0,80 b3/b1 0,05 b4/b1 0,10 b5/b1 0,05 b6/b1 x31 x41 x51 x61 PRODUTOS CRÚS C2 = 1 $/b O2 0,44 b3/b2 p2 = 15 ($/b) 0,10 b4/b2 x2 (b/d) 0,36 b5/b2 x32 G x3(b/d) p3 = 36($/b); x3max= 24.000(b/d) x42 Q x4(b/d) p4 = 24($/b); x4max= 2.000(b/d) x52 C x5(b/d) p5 = 21($/b); x5max= 6.000(b/d) x62 R x6(b/d) p6 = 10($/b) 0,10 b6/b2 Restrições de Igualdade Gasolina : 0,80 x1 + 0,44 x2 = x3 Querosene : 0,05 x1 + 0,10 x2 = x4 Óleo : 0,10 x1 + 0,36 x2 = x5 Residual : 0,05 x1 + 0,10 x2 = x6 Restrições de Desigualdade Gasolina : x3 24.000 Querosene : x4 2.000 Combustível: x5 6.000 Óleos crus : x1 0 e x2 0 Incorporando as Restrições Gasolina : 0,80 x1 + 0,44 x2 = x3 Querosene : 0,05 x1 + 0,10 x2 = x4 Óleo : 0,10 x1 + 0,36 x2 = x5 Residual : 0,05 x1 + 0,10 x2 = x6 ao Lucro L = 36 x3 + 24 x4 + 21 x5 + 10 x6 - 24 x1 - 15 x2 - 0,50 x1 - x2 Resulta L(x) = 8,1 x1 + 10,8 x2 Na Função Objetivo do Problema Ilustrativo L $/d = 8,1 x1 + 10,80 $/b1 b1/ d $/b2 x2 b2/d 24 $/b1 e 15 $/b2 são os preços pagos pela refinaria no mercado externo O que significam os valores 8,10 $/b1 e 10,80 $/b2 ? É o quanto vale cada barril da cada Cru para a Refinaria levando em conta os preços externos, os custos de produção e a receita pela venda dos produtos: são os Preços Internos ou "Shadow Prices“ das matérias primas Esses coeficientes aparecem no Tableau Inicial do SIMPLEX x1 x2 f1 f2 f3 0,80 0,44 1 0 0 24.000 0,05 0,10 0 1 0 2.000 0,1 0,36 0 0 1 6.000 8,10 10,80 0 0 0 L Eles correspondem à Sensibilidade do Lucro em relação ao consumo de cada Óleo: 1 b/d a mais comprado do Óleo 1 acarreta um aumento de 8,10 $ no Lucro. 1 b/d a mais comprado do Óleo 2 acarreta um aumento de 10,80 $ no Lucro. De maneira análoga, no Tableau Final x1 x2 f1 f2 f3 0 0 0,138 4,207 1 867 1 0 1,724 -7,586 0 26.207 0 1 - 0,862 13,793 0 6.897 0 0 - 4,655 - 86,517 0 L – 286.759 f 1o = 0 f 2o = 0 São os “shadow prices” dos produtos 1 b/d de folga (1 b/d a menos produzido) de gasolina acarreta uma redução de 4,66 $ no Lucro, embora p1 = 36 $/b 1 b/d de folga (1 b/d a menos produzido) de querosene acarreta uma redução de 86,5 $ do Lucro, embora p2 = 24 $/b. DUALIDADE Considere o Problema Ilustrativo Max L(x) = 8,1 x1 + 10,8 x2 {x1, x2} s.a.: 0,80 x1 + 0,44 x2 24.000 0,05 x1 + 0,10 x2 2.000 0,10 x1 + 0,36 x2 6.000 x1 0 x2 0 x1 x2 0,80 0,44 24.000 0,05 0,10 0,10 0,36 8,10 10,80 2.000 6.000 L x1(b1/d) x2 (b2/d) 0,80(b3/b1) 0,05(b4/b1) 0,44(b3/b2) 0,10(b4b2) 24.000(b3/d) 2.000(b4/d) 0,10(b5/b1) 8,10 ($/b1) 0,36(b5/b2) 10,80 ($/b2) 6.000(b5/d) L ($/d) Transpondo o Tableau Inicial s3 ($/b3) s4 s5 0,80(b3/b1) 0,05 (b4/b1) 0,10 (b5/b1) 8,10 ($/b1) 0,44 (b3/b2) 0,10 (b4/b2) 0,36 (b5/b2) 10,80 ($/b2) 24.000 2.000 6.000 (b3/d) (b4/d) (b5/d) G ($/d) Invertendo as desigualdades de para Transformando o problema de Max para Min Passamos a ter o Problema Min G(x) = 24.000 s3 + 2.000 s4 + 6.000 s5 {s3, s4, s3} s.a.: 0,80 s3 + 0,05 s4 + 0,10 s5 8,10 0,44 s3 + 0,10 s4 + 0,36 s5 10,80 s3 0 s4 0 s5 0 s3 ($/b3) s4 s5 0,80(b3/b1) 0,05 (b4/b1) 0,10 (b5/b1) 8,10 ($/b1) 0,44 (b3/b2) 0,10 (b4/b2) 0,36 (b5/b2) 10,80 ($/b2) 24.000 2.000 6.000 G ($/d) (b3/d) (b4/d) (b5/d) Este novo Problema pode ser resolvido pelo SIMPLEX incluindo as folgas negativas (-1) Tableau Final do novo Problema: s3 1 0 s4 0 1 0 0 s5 f1 - 0,138 - 1,72 4,207 7,586 897 f2 0,862 - 13,8 4,66 87,52 26.207 6.897 G - 286.759 Comparando com o Tableau Final do Problema Ilustrativo x1 x2 f3 f4 f5 0 0 0,138 4,207 1 897 1 0 1,724 -7,586 0 26.207 0 0 1 0 - 0,862 - 4,66 13,793 - 87,52 0 0 6.897 L – 286.759 Os índices das folgas foram trocados de propósito Tableau Final do Problema Ilustrativo x1 x2 f3 f4 f5 0 0 0,138 4,207 1 897 1 0 0 0 1 0 1,724 - 0,862 - 4,66 -7,586 13,793 - 87,52 0 0 0 26.207 6.897 L – 286.759 Na horizontal, dá os valores ótimos de x1, x2 e f5. Na vertical, dá os valores ótimos dos "shadow prices" da gasolina e do querozene. O "shadow price" do óleo é zero porque sua folga é zero (não está no limite) Tableau Final do novo Problema: s3 1 0 s4 0 1 s5 - 0,13 4,20 0 0 897 f1 - 1,72 7,59 f2 0,86 - 13,8 4,66 87,52 26.207 6.897 G - 286.759 Na horizontal, dá os valores ótimos dos "shadow prices" da gasolina e do querozene. Na vertical, dá os valores ótimos de f5, x1 e x2. Portando, um problema se encontra subjacente no outro. Então, ao se resolver um deles, Max L(x) = 8,1 x1 + 10,8 x2 {x1, x2} s.a.: 0,80 x1 + 0,44 x2 24.000 0,05 x1 + 0,10 x2 2.000 0,10 x1 + 0,36 x2 6.000 x1 0 x2 0 o outro também está sendo resolvido. Min G(x) = 24.000 s3 + 2.000 s4 + 6.0 {s3, s4, s3} s.a.: 0,80 s3 + 0,05 s4 + 0,10 s5 8,10 0,44 s3 + 0,10 s4 + 0,36 s5 10,80 s3 0 s4 0 s5 0 São denominados problemas duais. Um é denominado Problema Primal O outro é denominado Problema Dual. x1(b1/d) x2 (b2/d) 0,80(b3/b1) 0,05(b4/b1) 0,44(b3/b2) 0,10(b4b2) 24.000(b3/d) 2.000(b4/d) 0,10(b5/b1) 8,10 ($/b1) 0,36(b5/b2) 10,80 ($/b2) 6.000(b5/d) L ($/d) Problema Primal s3 ($/b3) s4 s5 0,80(b3/b1) 0,05 (b4/b1) 0,10 (b5/b1) 8,10 ($/b1) 0,44 (b3/b2) 0,10 (b4/b2) 0,36 (b5/b2) 10,80 ($/b2) 24.000 2.000 6.000 (b3/d) (b4/d) (b5/d) E o seu Dual G ($/d)