• Nenhum resultado encontrado

Programação linear

N/A
N/A
Protected

Academic year: 2021

Share "Programação linear"

Copied!
22
0
0

Texto

(1)Programação Linear. Fernando Nogueira. Programação Linear. 1.

(2) Exemplo Típico Uma industria produz 2 produtos, I e II, sendo que cada produto consome um certo número de horas em 3 máquinas A, B e C para ser produzido, conforme a tabela: Produto. Tempo Máquina A. Tempo Máquina B. Tempo Máquina C. I. 2. 1. 4. II. 2. 2. 2. O tempo de funcionamento máximo semanal das máquinas é: Máquina. Horas máximas por semana. A. 160. B. 120. C. 280. O lucro obtido por cada produto I é $1,00 e por cada produto II é $1,50. Quanto fabricar de cada produto de modo que seja obedecida a capacidade operativa das máquinas com o maior lucro possível ? Fernando Nogueira. Programação Linear. 2.

(3) Modelagem Matemática ! x1 a quantidade do produto I a ser fabricada ! x2 a quantidade do produto II a ser fabricada Função Objetivo Max lucro(x 1 , x 2 ) = Z = x 1 + 1.5x 2. Restrições 2x 1 + 2 x 2 ≤ 160  x 1 + 2 x 2 ≤ 120  4x 1 + 2 x 2 ≤ 280 x 1 , x 2 ≥ 0. Máquina A. Função Objetivo. x1  Z1 = 1 c 2 2 x 1 ⇒ Z = [1 1.5].  1 x 2 . Restrições. Máquina B Máquina C Prod. não negativa. Fernando Nogueira. Em notação matricial.  2 2 160  x1      A x ≤ b ⇒ 1 2 . ≤ 120 3 2 2 1 3 1  x     2  4 2 280. Programação Linear. 3.

(4) Interpretação Geométrica. A região fechada formada pelas restrições é sempre convexa e contém todas as soluções possíveis ou viáveis: região das restrições. Teorema Fundamental da Programação Linear Uma vez que todas as equações e/ou inequações envolvidas são lineares, o valor ótimo da função-objetivo Z só pode ocorrer em um dos vértices da região das restrições. Fernando Nogueira. Programação Linear. 4.

(5) O Método Simplex (Dantzig, 1948) "Considerações Iniciais O Método Simplex é um algoritmo que sistematiza a solução de problemas de P.L. de maneira eficiente computacionalmente (não é força-bruta). Seja m o número de equações e/ou inequações de restrição e n o número de variáveis (incógnitas), tem-se: 1. Z1 =1 c n n x1. m. A n n x1 ≤ m b1. 2 problemas ocorrem na resolução de m A n n x1 ≤ m b1. 1)A existência de desigualdades (≤, <, ≥ ou > ) implica que a solução é geralmente um conjunto e não única. 2)A não necessariamente possui inversa ⇒ geralmente A não é quadrada(m ≠ n ).obs: o fato de A ser quadrada não garante a existência de inversa. Fernando Nogueira. Programação Linear. 5.

(6) Solução do Problema 1 !Transformar as desigualdades em igualdades através da introdução de variáveis de folga (slack variables). Exemplo:. 2 x1 + 2 x 2 ≤ 160 ⇔ 2 x1 + 2 x 2 + u1 = 160 Tem-se então um sistema com  m equações e (n + m) x1 + 2 x 2 ≤ 120 ⇔ x1 + 2 x 2 + u 2 = 120 4 x + 2 x ≤ 280 ⇔ 4x + 2x + u = 280 incógnitas: 2 1 2 3  1 m A (n + m ) (n + m ) x 1 ≤ m b1 com x1 , x 2 , u1 , u 2 , u 3 ≥ 0 Solução do Problema 2 !Anular n variáveis. Uma vez que (n + m) é sempre maior que m, sempre tem-se mais incógnitas de que equações, assim o sistema é subdeterminado ⇒ infinitas soluções. No entanto, anulando n variáveis, o sistema fica: m A m m x1 ≤ m b1 Quais n variáveis deve-se anular para obter solução ótima ??? Fernando Nogueira. Programação Linear. 6.

(7) "O Método Reescrevendo a função-objetivo e as inequações como equações: Z − x1  2x1   x1   4x1. − 1.5x 2 + 2x 2 + 2x 2 + 2x 2. − 0u 1 − 0u 2 + u1 + 0u 2 + 0u 1 + u 2 + 0u 1 + 0u 2. − 0u 3 + 0u 3 + 0u 3 + u3. = 0 = 160 = 120 = 280. Deve-se achar uma solução inicial viável qualquer. A maneira mais simples para isto é “zerar” as variáveis de controle (x1 = x2 = 0). Com isso, as variáveis de folga assumem valores máximos (u1 = 160, u2 = 120 e u3 = 280). Esta é uma solução viável (nenhuma restrição foi violada), porém é a pior possível, pois Z = 0. Pode-se classificar as variáveis do problema como: !Variáveis Básicas: variáveis que compõem a solução em cada iteração. !Variáveis Não-Básicas: variáveis que foram anuladas. Fernando Nogueira. Programação Linear. 7.

(8) Partindo de uma solução inicial qualquer, o Método Simplex verifica se existe uma outra solução que seja melhor que a solução atual. Isto se dá através da análise da função-objetivo: Z − x1 − 1.5x 2 − 0u1 − 0u 2 − 0u 3 = 0 Fazendo Z = x1 + 1.5x 2 + 0u1 + 0u 2 + 0u 3 , as derivadas parciais de Z em relação as variáveis (de controle e de folga) fornecem a taxa de crescimento de Z nas direções destas variáveis. ∂Z ∂Z ∂Z ∂Z =1 = 1.5 =0 =0 ∂x1 ∂x 2 ∂u1 ∂u 2. ∂Z =0 ∂u 3. O fato acima permite deduzir que enquanto houver variáveis não-básicas com coeficientes negativos em Z − x1 − 1.5x 2 − 0u1 − 0u 2 − 0u 3 = 0 a solução poderá ser melhorada. Uma vez que o objetivo é maximizar Z, deve-se escolher dentre as variáveis não-básicas, aquela que possuir maior taxa de variação (coeficiente mais negativo) para compor as variáveis básicas, no caso x2. Para isso, alguma variável básica terá que deixar a base para compor as variáveis não-básicas. Qual variável deve deixar a base, ou seja, mudar do grupo das variáveis básicas para o grupo das variáveis não-básicas ? Fernando Nogueira. Programação Linear. 8.

(9) A medida que x2 (a variável que era não-básica e agora é variável básica) aumenta, deve-se diminuir cada variável básica corrente correspondente a uma linha na qual x2 tenha coeficiente positivo. Assim, quanto x2 pode crescer antes que uma das variáveis básicas corrente atinja seu limite inferior 0 (não viole nenhum restrição) ? Z − x1 − 1.5x2 − 0u1 − 0u2 − 0u3  2x1 + 2x2 + u1 + 0u2 + 0u3   x1 + 2x2 + 0u1 + u2 + 0u3   4x1 + 2x2 + 0u1 + 0u2 + u3 obs: x1 = 0, pois é variável não− básica. = 0 = 160 Para u1 = 0 ⇒ x2 = 80 = 120 Para u2 = 0 ⇒ x2 = 60 = 280 Para u3 = 0 ⇒ x2 = 140. Com isso, conclui-se que quando x2 = 60, u2 = 0, e portanto, poderá ir para o grupo das variáveis não-básicas. Variáveis básicas Variáveis não-básicas Fernando Nogueira. Programação Linear. Antes. Agora. u1,u2,u3. u1,x2,u3. x1,x2. x1,u2 9.

(10) Uma vez que x2 “entrou” na base e u2 “saíu” da base, faz-se necessário então alterar os valores dos coeficientes do sistema de equações de maneira equivalente. Este processo é obtido através do Método de Gauss-Jordan. Retomando o problema ao ponto inicial, pode-se montar a seguinte tabela (Tabela Simplex): x. 1. x. 2. u. 1. u. 2. u. 3. b. 2 1. 2 2. 1 0. 0 1. 0 0. 160 120. 4. 2. 0. 0. 1. 280. − 1. − 1 .5. 0. 0. 0. 0. }. Restrições. } função-objetivo. Se o vetor [2 2 2 –1.5]t (correspondente a coluna de x2) transformar-se no vetor [0 1 0 0]t (correspondente a coluna de u2), x2 estará pertencendo a base e u2 sairá da base. Para realizar o Método de Gauss-Jordan é necessário escolher o elemento pivô, o qual é obtido pela interseção da coluna pivô com a linha pivô. Fernando Nogueira. Programação Linear. 10.

(11) A coluna pivô é a coluna correspondente à variável que vai entrar na base (x2 no caso) e a linha pivô é a linha na qual a interseção com a coluna correspondente à variável que vai sair da base é igual a 1 (no caso a interseção da 2 linha com a coluna correspondente a u2). Realizando o Método de Gauss-Jordan a Tabela Simplex fica: x. x. 1. 1 1. 2 3. − 1. 4. u. 2. u. 1. 2. u. b. 3. 0 1. 1 0. − 1 1 2. 0 0. 40 60. 0. 0. − 1. 1. 160. 0. 0. 0. 90. 3. 4. }. Restrições. } função-objetivo. Esta tabela refere-se ao seguinte sistema: Z − 1 4 x1  x1   1 2 x1   3x1. − + + +. Fernando Nogueira. 0x2 0x2 x2 0x2. − + + +. 0u1 u1 0u1 0u1. + 3 4 u2 − u2 + 1 2 u2 − u2. − + + +. 0u3 0u3 0u3 u3. Programação Linear. = = = =. 90 } função-objetivo 40 60 Restrições 160. }. 11.

(12) A Tabela Simplex anterior fornece a seguinte solução: x1 = 0, x2 = 60, u1 = 40, u2 = 0, u3 = 160 e Z = 90. Uma vez que x1 é uma variável não-básica e possui coeficiente negativo, esta deverá entrar base e conseqüentemente u1 deverá sair da base. Com esta alteração, a Tabela Simplex após o Método de Gauss-Jordan fica: x. 1. x. u. 2. 1. u. 2. u. b. 3. 1 0. 0 1. 1 − 1 2. − 1 1. 0 0. 40 40. 0. 0. − 3. 2. 1. 40. 0. 0. 1. 0. 100. 4. 1. 2. }. } função-objetivo. que corresponde ao seguinte sistema: Z − 0x1  x1   0x1   0x1. − + + +. 0x2 0x2 x2 0x2. Fernando Nogueira. + 1 4 u1 u1 + + −1 2 u1 + − 3u1. + 1 2 u2 − u2 + u2 + 2u2. − + + +. Programação Linear. 0u3 0u3 0u3 u3. Restrições. = = = =. 100} função-objetivo 40 40 Restrições 40. }. 12.

(13) A Tabela Simplex anterior fornece a seguinte solução: x1 = 40, x2 = 40, u1 = 0, u2 = 0, u3 = 40 e Z = 100. Uma vez que não existe variáveis não-básicas com coeficiente negativo a solução não poderá mais ser melhorada, portanto, está solução é ótima. Conclusão Em P.L..  (n + m ) existe  m   . maneiras de combinar n variáveis iguais a zero.. No exemplo, n = 2 e m = 3, que resulta em 10 soluções possíveis, o que implica que seria necessário resolver 10 sistemas de equações (forçabruta). No entanto, o Método Simplex resolveu apenas 2 sistemas de equações (neste caso) e alcançou a solução ótima. x x! obs:   = ⇒  y  y!(x − y )!. Fernando Nogueira. combinação. Programação Linear. 13.

(14) Solução de um Modelo Geral de P.L. pelo Método Simplex Até o momento. }. !Função-Objetivo deve ser maximizada !Variáveis de controle não negativa. !Apresentam uma solução básica inicial. Simplex exige essas 3 características. Quando uma ou mais dessas características não são satisfeitas, faz-se necessário determinar uma forma equivalente ⇒ mudar o modelo e não o algoritmo. 1.Minimização Se a função-objetivo é de minimização deve-se multiplica-lá por –1.. Min Z = 3x1 − 4 x 2 + x 3 ⇒ Max − Z = −3x1 + 4 x 2 − x 3 obs: restrições não são alteradas.. Fernando Nogueira. Programação Linear. 14.

(15) 2.Variável Livre Substituir a variável livre pela diferença de 2 outras não-negativas.. Max Z = x1 + 2 x 2 + x 3. Max Z = x1 + 2 x 4 − 2 x 5 + x 3. x1 + x 2 + x 3 ≤ 10 2x + 3x ≤ 20  1 2   x1 , x 3 ≥ 0 x 2 ⇒ livre. x1 + x 4 − x 5 + x 3 ≤ 10  2x1 + 3x 4 − 3x 5 ≤ 20 x , x , x , x ≥ 0  1 3 4 5. Fazendo x 2 = x 4 − x5. 3.Solução Básica Inicial Se a restrição é do tipo ≥ faz-se necessário acrescentar uma variável de folga negativa.. x1 ≥ 10 ⇒ x1 − u1 = 10, com u1 ≥ 0. Se a restrição é do tipo =, já tem-se um equação e, portanto, não é preciso acrescentar variável de folga. No entanto, quando estes 2 casos ocorrem não é formada uma submatriz identidade automaticamente e, portanto, não origina uma solução básica inicial. Exemplo:. Fernando Nogueira. Programação Linear. 15.

(16) Max Z = x1 + x 2 + x 3 2x1 + x 2 − x 3 ≤ 10 x + x + 2 x ≥ 20  1 2 3  2x1 + x 2 + 3x 3 = 60 x1 , x 2 , x 3 ≥ 0. ⇒. A Tabela Simplex fica: x 1 x 2 x 3. Z − x1  2 x1   x1   2 x1. u. 1. u. 2. − x2 + x2. − −. x3 x3. − 0u 1 + u1. − 0u 2 + 0u 2. = 0 = 10. + x2. + 2x 3. + 0u 1. −. u2. = 20. + x2. + 3x 3. + 0u 1. + 0u 2. = 60. b. 2 1. 1 1. − 1 2. 1 0. 0 − 1. 10 20. 2. 1. 3. 0. 0. 60. − 1. − 1. − 1. 0. 0. 0. }. Restrições. }função-objetivo. Nota-se na Tabela Simplex que não existe uma sub-matriz identidade. Neste caso, acrescenta-se Variáveis Artificiais (Auxiliares) nas linhas cujas as restrições são do tipo. ≥ ou = . O sistema fica:. Fernando Nogueira. Programação Linear. 16.

(17) Z − x1  2 x1   x1   2 x1 com. − x2. −. x3. − 0u 1. − 0u 2. − 0a 2. − 0a 3. =. + x2. −. x3. +. + 0u 2. + 0a 2. + 0a 3. = 10. + x2. + 2x 3. + 0u 1. −. +. + 0a 3. = 20. + x2. + 3x 3. + 0u 1. + 0u 2. +. = 60. u1. u2. a2. + 0a 2. a3. 0. x1 , x 2 , x 3 , u1 , u 2 , u 3 , a 2 , a 3 ≥ 0 A Tabela Simplex fica: x 1 x 2 x 3. 2. 1. − 1. u 1 1. u 2 0. a 2 0. a 3 0. 1. 1. 2. 0. − 1. 1. 0. 2 − 1. 1 − 1. 3 − 1. 0 0. 0 0. 0 0. 1 0. }. b 10. 20 Restrições 60 0 função-objetivo. }. Agora tem-se uma sub-matriz identidade, porém a2= 20 e a3 = 60. O retorno ao modelo original deve ser feito com a eliminação das Variáveis Artificiais. Isto é realizado através do Método do M Grande ou do Método da Função-Objetivo Auxiliar. Fernando Nogueira. Programação Linear. 17.

(18) Método da Função-Objetivo Auxiliar Este método consiste em utilizar uma função-objetivo auxiliar W(a1,a2,...,ar) formada pela soma das r Variáveis Artificiais ⇒ W(a1,a2,...,ar) = a1 + a2 + ... + ar . Uma vez que as Variáveis Artificiais podem ser escritas em função das Variáveis de Controle e de Folga, pode-se sempre minimizar W(a1,a2,...,ar) até W(a1,a2,...,ar) = 0, o que corresponde a a1= a2 = ... = ar = 0, fazendo então as Variáveis Artificiais pertencerem ao grupo das Variáveis Não-Básicas. Com isso, obtém-se uma solução viável para o problema podendo-se então abandonar a Função-Objetivo Auxiliar e as Variáveis Artificiais. Exemplo:. Max Z = x1 + x 2 + x 3.  Z − x1 − x 2 − x 3  2 x1 + x 2 − x 3  + − ≤ 2 x x x 10  1 2 3  x + x + 2 x ≥ 20 x1 + x 2 + 2 x 3   1 2 3 ⇒   2 x1 + x 2 + 3x 3 + + = 2 x x 3 x 60 2 3  1 com x1 , x 2 , x 3 ≥ 0 x 1 , x 2 , x 3 , u1 , u 2 , u 3 , a 2 , a 3 ≥ 0. − 0u 1 − 0u 2 + u 1 + 0u 2. − 0a 2 + 0a 2. − 0a 3 + 0a 3. = 0 = 10. + 0u 1 − u 2 + 0u 1 + 0u 2. + a2 + 0a 2. + 0a 3 + a3. = 20 = 60. Função-Objetivo Auxiliar W(a2,a3) = a2 + a3 Fernando Nogueira. Dá 2o restrição a2 = – x1 – x2 – 2x3 + u2 + 20 Programação Linear. Dá 3o restrição a3 = – 2x1 – x2 – 3x3 + 60 18.

(19) Substituindo a2 e a3 em W(a2,a3), fica: Min W(a2,a3) = Max – W(a2,a3) = 3x1 + 2x2 + 5x3 – u2 – 80 = 0 que na forma de equação é – W(a2,a3) – 3x1 – 2x2 – 5x3 + u2 = – 80 A Tabela Simplex fica: x. x. 2. 1. x 3 − 1. 1 2. 1 1. − 1 − 3. − 1 − 2. 1. 2. u. u. 1. a. 2. a. 2. b. 3. }. 1. 0. 0. 0. 10. 2 3. 0 0. − 1 0. 1 0. 0 1. 20 60. − 1 − 5. 0 0. 0 1. 0 0. 0 0. 0 − 80. Restrições. }função-objetivo } função-objetivo auxiliar. Após 2 iterações (neste exemplo) do Método Simplex, a Tabela Simplex fica: x 16. 6. 2 −. 1. 3. 1. x 4. 1. 3 1. 0. − 3. x. 2. 3 3 1. − 2. 3 3. 0 Fernando Nogueira. 0. 1. 0. 0. a 1. 1. 0. 0. 0. 1. 0. 0. 1. − 1. 2. 0. 0. 0. 0. 1. 0. 0. 0. 1. 3. u. 1. u. 2. a. 2. Programação Linear. 3. 3 3 3. 1. 3. }. b. 30. 20. Restrições. 20. }função-objetivo 0} função-objetivo 19. 20. auxiliar.

(20) A Tabela Simplex agora apresenta uma solução cuja as Variáveis Artificiais são Variáveis Não-Básicas (portanto, iguais a zero) e podem então ser desprezadas e o Método Simplex pode continuar sendo utilizado a fim de encontrar a solução ótima. Problemas que podem ocorrer 1.Problema de Degeneração A saída de uma V.B. com valor nulo provoca o aparecimento de uma outra V.B. nula na próxima solução sem alteração do valor da Função-Objetivo. Neste caso a solução é denominada degenerada, indicando que existe, no mínimo, uma restrição redundante. Se os coeficientes da Função-Objetivo retornam não negativos em alguma iteração, o caso não apresenta dificuldade. O problema surge quando as iterações levam a circuitos, sem caracterizar a solução ótima. Neste caso faz-se necessário utilizar regras mais complexas, as quais não serão abordadas neste curso. Tal problema é bastante raro em aplicações práticas. 2.Problema da Solução Ilimitada Ocorre quando a variável que entra na base não possui em sua coluna nenhum coeficiente positivo. Exemplo: Max Z = x1 + 0 x 2 x1 + x 2 ≥ 40  − x 1 + x 2 ≤ 0 x , x ≥ 0  1 2 Fernando Nogueira. Programação Linear. 20.

(21) 3.Soluções Múltiplas Se na solução ótima o coeficiente de um V.N.B. é zero, esta variável poderá entrar na base sem alterar o valor da função objetivo, gerando outra solução ótima. Neste caso qualquer combinação linear dessas 2 soluções também será ótima. Exemplo: Max Z = 4 x1 + 10x 2 4 x1 + 3x 2 ≤ 12  2 x1 + 5x 2 ≤ 10 x , x ≥ 0  1 2. 4.Soluções Inviável Se o problema de P.L. não possuir nenhuma solução viável, então o Método da FunçãoObjetivo Auxiliar (ou do M Grande) irá fornecer na solução final no mínimo uma variável artificial com valor diferente de zero, caso contrário, todas variáveis artificiais serão nulas. Exemplo: Max Z = x1 + x 2. x1 − x 2 ≥ 1  − x 1 + x 2 ≥ 1 x , x ≥ 0  1 2 Fernando Nogueira. Programação Linear. 21.

(22) 5.Lado Direito das Restrições Negativas x1 + x 2 ≤ −1  x1   2 x1 + 5x 2 ≤ −10 ⇒ 2 x1 x , x ≥ 0 x ,  1  1 2. + x2 + 5x 2 x 2 , u1 ,. + + u2. u1 0 u1 ≥. + 0u 2 + u2 0. = −1 = − 10. Solução Inicial: x1 = x2 = 0, u1 = -1 e u2 = -10 ⇒ Inviável, pois u1 e u2 são negativos. Sempre que houver restrições cujo lado direito são negativos deve-se multiplicar ambos os lados destas restrições por –1.. − x 1 − x 2 ≥ 1 x1 + x 2 ≤ −1   2 x 5 x 10 ⇒ + ≤ − − 2x1 − 5x 2 ≥ 10 ⇒  1 2 x , x ≥ 0 x , x ≥ 0  1 2  1 2  − x1  − 2 x 1  x,  1. x2 − − 5x 2 x 2 , u1 ,. u1 − − − 0u 1 − u 2 , a1 , a 2. 0u 2 u2 ≥. + a1 + 0a1 0. + 0a 2 + a2. = 1 = 10. Solução Inicial: x1 = x2 = u1 = u2 = 0, a1= 1, a2 = 10 ⇒ Viável. Fernando Nogueira. Programação Linear. 22.

(23)

Referências

Documentos relacionados

Com o ALI, muitas empresas foram atendidas pelo SEBRAE, recebendo consultorias, capacitações, diagnóstico, planos de inovação como um resultado de uma ação prospectiva e ativa

Submissão das comunicações - 13 Outubro 2017 20 Outubro 2017 Inscrição sem agravamento de preço - 20 Outubro 2017 Aceitação das comunicações - 01 Novembro 2017 03 Novembro

Tese: Agronomia (Irrigação e Drenagem)-Universidade Federal de Lavras. Distribuição espacial e temporal do cloreto de potássio aplicado em uma linha de gotejadores por bomba

• Dado um sistema de coordenadas cartesianas, é possível definir pontos e objetos pelas suas coordenadas.. • Nos espaços bidimensionais ou nos objetos planos, duas coordenadas

Outros estudiosos também citados pelo musicólogo Carlos Sandroni, como Simha Arom e Gehrard Kubik, ao investigar a rítmica da música africana - onde há “liberdade das

RESULTADO DA ANÁLISE: Questão Anulada. JUSTIFICATIVA: Prezados Candidatos, em resposta aos recursos interpostos para esta questão, temos a esclarecer que a mesma será anulada, tendo

Estas singularidades reforçam-se pelas funcionalidades que o Poema assume, pois se pelo seu conteúdo podemos estar face a uma interpretação da História das

2006 investigando a composição químicas de farinha de sementes de abóbora obtidas em diferentes temperaturas de secagem 60 e 70 °C, constataram que o aumento da temperatura de