Baixe o app para aproveitar ainda mais
Prévia do material em texto
CENTRO UNIVERSITÁRIO JORGE AMADO – UNIJORGE Carlos André de Novaes Mota O Problema da Dieta – Programação Linear Salvador – BA 2018 CENTRO UNIVERSITÁRIO JORGE AMADO – UNIJORGE Carlos André de Novaes Mota O Problema da Dieta – Programação Linear Trabalho para compor a nota da AVA1 da disciplina de Cálculo Elementar. Orientadora: ILMA CARVALHO Salvador – BA 2018 AVALIAÇÃO 1 - Trabalho da Disciplina 1 O Problema da Dieta – Programação Linear A programação linear é uma parte da pesquisa operacional, área que trata da otimização de recursos. O problema da dieta é um dos problemas clássicos da PO, o qual pode ser tratado por meio de programação linear, ou seja, por meio da modelagem usando equações e/ou inequações, buscando produzir mais com menos recursos. O gestor de uma fazenda quer alimentar o gado com a dieta que implique em menor custo. Tal dieta deve conter quatro tipos de nutrientes identificados como: A, B, C e D. Estes componentes encontram-se em dois tipos de ração: M e N. A quantidade, em gramas, de cada componente por quilo destes alimentos para animais é dada na tabela a seguir: A B C D M 100 - 100 200 N - 100 200 100 A dieta diária de um animal deve ser composta por pelo menos 0,4 Kg do componente A, 0,6 Kg do componente B, 2 Kg do componente C, e 1,7 Kg do componente D. O composto M custa 0,2 reais/Kg e o composto N custa 0,08 reais/Kg. Qual é a quantidade que deve ser adquirida de ração M e N para que o gasto em alimentos seja o menor possível? A solução ótima é Z = 1.52 X1 = 4 X2 = 9 Pretende-se misturar os tipos de rações para obter uma dieta equilibrada contendo as quantidades diárias recomendadas de cada nutriente para os animais. Determinar as variáveis de decisão e expressá-las algebricamente. Neste caso: X1: quantidade de ração M em Kg X2: quantidade de ração N em Kg Determine as restrições e expressando-as como equações ou inequações dependentes das variáveis de decisão. Tais restrições são deduzidas da composição necessária para a dieta diária (em Kg): Componente A: 0,1.X1 + 0.X2 ≥ 0,4 Componente B: 0 X1 + 0,1 X2 ≥ 0,6 Componente C: 0,1 X1 + 0,2 X2 ≥ 2 Componente D: 0,2 X1 + 0,1 X2 ≥ 1,7 Deve-se passar o problema para a forma padrão, adicionar variáveis de excesso, de folga, e artificiais, onde necessário. Como a restrição 1 é do tipo '≥' é necessária a variável de excesso X3 e a variável artificial X7. Como a restrição 2 é do tipo '≥' é necessária a variável de excesso X4 e a variável artificial X8. Como a restrição 3 é do tipo '≥' é necessária a variável de excesso X5 e a variável artificial X9. Como a restrição 4 é do tipo '≥' é necessária a variável de excesso X6 e a variável artificial X10. MINIMIZAR: Z = 0,2 X1 + 0,08 X2 Sujeito a: 0,1 X1 + 0 X2 ≥ 0,4 0 X1 + 0,1 X2 ≥ 0,6 0,1 X1 + 0,2 X2 ≥ 2 0,2 X1 + 0,1 X2 ≥ 1,7 X1, X2 ≥ 0 Passo a forma padrão: MAXIMIZAR: Z = -0,2 X1 -0,08 X2 + 0 X3 + 0 X4 + 0 X5 + 0 X6 + 0 X7 + 0 X8 + 0 X9 + 0 X10 Sujeito a: 0,1 X1 -1 X3 + 1 X7 = 0,4 0 X1 + 0,1 X2 -1 X4 + 1 X8 = 0,6 0,1 X1 + 0,2 X2 -1 X5 + 1 X9 = 2 0,2 X1 + 0,1 X2 -1 X6 + 1 X10 = 1,7 X1, X2, X3, X4, X5, X6, X7, X8, X9, X10 ≥ 0 Construção da primeira tabela da Fase I do método das Duas Fases. Método Simplex das Duas Fases Tabela 1 0 0 0 0 0 0 -1 -1 -1 -1 Base Cb P0 P1 P2 P3 P4 P5 P6 P7 P8 P9 P10 P7 -1 0.4 0.1 0 -1 0 0 0 1 0 0 0 P8 -1 0.6 0 0.1 0 -1 0 0 0 1 0 0 P9 -1 2 0.1 0.2 0 0 -1 0 0 0 1 0 P10 -1 1.7 0.2 0.1 0 0 0 -1 0 0 0 1 Z -4.7 -0.4 -0.4 1 1 1 1 0 0 0 0 A variável que vai sair da base é P7 e a que entra P1. Operações intermédias Linha pivô (Linha 1): 0.4 / 0.1 = 4 0.1 / 0.1 = 1 0 / 0.1 = 0 -1 / 0.1 = -10 0 / 0.1 = 0 0 / 0.1 = 0 0 / 0.1 = 0 1 / 0.1 = 10 0 / 0.1 = 0 0 / 0.1 = 0 0 / 0.1 = 0 Linha 2: 0.6 - (0 * 4) = 0.6 0 - (0 * 1) = 0 0.1 - (0 * 0) = 0.1 0 - (0 * -10) = 0 -1 - (0 * 0) = -1 0 - (0 * 0) = 0 0 - (0 * 0) = 0 0 - (0 * 10) = 0 1 - (0 * 0) = 1 0 - (0 * 0) = 0 0 - (0 * 0) = 0 Linha 3: 2 - (0.1 * 4) = 1.6 0.1 - (0.1 * 1) = 0 0.2 - (0.1 * 0) = 0.2 0 - (0.1 * -10) = 1 0 - (0.1 * 0) = 0 -1 - (0.1 * 0) = -1 0 - (0.1 * 0) = 0 0 - (0.1 * 10) = -1 0 - (0.1 * 0) = 0 1 - (0.1 * 0) = 1 0 - (0.1 * 0) = 0 Linha 4: 1.7 - (0.2 * 4) = 0.9 0.2 - (0.2 * 1) = 0 0.1 - (0.2 * 0) = 0.1 0 - (0.2 * -10) = 2 0 - (0.2 * 0) = 0 0 - (0.2 * 0) = 0 -1 - (0.2 * 0) = -1 0 - (0.2 * 10) = -2 0 - (0.2 * 0) = 0 0 - (0.2 * 0) = 0 1 - (0.2 * 0) = 1 Linha Z: -4.7 - (-0.4 * 4) = -3.1 -0.4 - (-0.4 * 1) = 0 -0.4 - (-0.4 * 0) = -0.4 1 - (-0.4 * -10) = -3 1 - (-0.4 * 0) = 1 1 - (-0.4 * 0) = 1 1 - (-0.4 * 0) = 1 0 - (-0.4 * 10) = 4 0 - (-0.4 * 0) = 0 0 - (-0.4 * 0) = 0 0 - (-0.4 * 0) = 0 Tabela 2 0 0 0 0 0 0 -1 -1 -1 -1 Base Cb P0 P1 P2 P3 P4 P5 P6 P7 P8 P9 P10 P1 0 4 1 0 -10 0 0 0 10 0 0 0 P8 -1 0.6 0 0.1 0 -1 0 0 0 1 0 0 P9 -1 1.6 0 0.2 1 0 -1 0 -1 0 1 0 P10 -1 0.9 0 0.1 2 0 0 -1 -2 0 0 1 Z -3.1 0 -0.4 -3 1 1 1 4 0 0 0 A variável que vai sair da base é P10 e a que entra P3. Operações intermédias (mostrar/ocultar detalhes) Linha pivô (Linha 4): 0.9 / 2 = 0.45 0 / 2 = 0 0.1 / 2 = 0.05 2 / 2 = 1 0 / 2 = 0 0 / 2 = 0 -1 / 2 = -0.5 -2 / 2 = -1 0 / 2 = 0 0 / 2 = 0 1 / 2 = 0.5 Linha 1: 4 - (-10 * 0.45) = 8.5 1 - (-10 * 0) = 1 0 - (-10 * 0.05) = 0.5 -10 - (-10 * 1) = 0 0 - (-10 * 0) = 0 0 - (-10 * 0) = 0 0 - (-10 * -0.5) = -5 10 - (-10 * -1) = 0 0 - (-10 * 0) = 0 0 - (-10 * 0) = 0 0 - (-10 * 0.5) = 5 Linha 2: 0.6 - (0 * 0.45) = 0.6 0 - (0 * 0) = 0 0.1 - (0 * 0.05) = 0.1 0 - (0 * 1) = 0 -1 - (0 * 0) = -1 0 - (0 * 0) = 0 0 - (0 * -0.5) = 0 0 - (0 * -1) = 0 1 - (0 * 0) = 1 0 - (0 * 0) = 0 0 - (0 * 0.5) = 0 Linha 3: 1.6 - (1 * 0.45) = 1.15 0 - (1 * 0) = 0 0.2 - (1 * 0.05) = 0.15 1 - (1 * 1) = 0 0 - (1 * 0) = 0 -1 - (1 * 0) = -1 0 - (1 * -0.5) = 0.5 -1 - (1 * -1) = 0 0 - (1 * 0) = 0 1 - (1 * 0) = 1 0 - (1 * 0.5) = -0.5 Linha Z: -3.1 - (-3 * 0.45) = -1.75 0 - (-3 * 0) = 0 -0.4 - (-3 * 0.05) = -0.25 -3 - (-3 * 1) = 0 1 - (-3 * 0) = 1 1 - (-3 * 0) = 1 1 - (-3 * -0.5) = -0.5 4 - (-3 * -1) = 1 0 - (-3 * 0) = 0 0 - (-3 * 0) = 0 0 - (-3 * 0.5) = 1.5 Tabela 3 0 0 0 0 0 0 -1 -1 -1 -1 Base Cb P0 P1 P2 P 3 P4 P5 P6 P7 P8 P9 P10 P1 0 8.5 1 0.5 0 0 0 -5 0 0 0 5 P8 -1 0.6 0 0.1 0 -1 0 0 0 1 0 0 P9 -1 1.15 0 0.15 0 0 -1 0.5 0 0 1 -0.5 P3 0 0.45 0 0.05 1 0 0 -0.5 -1 0 0 0.5 Z -1.75 0 -0.25 0 1 1 -0.5 1 0 0 1.5 A variável que vai sair da base é P9 e a que entra P6. Linha pivô (Linha 3): 1.15 / 0.5 = 2.3 0 / 0.5 = 0 0.15 / 0.5 = 0.3 0 / 0.5 = 0 0 / 0.5 = 0 -1 / 0.5 = -2 0.5 / 0.5 = 1 0 / 0.5 = 0 0 / 0.5 = 0 1 / 0.5 = 2 -0.5 / 0.5 = -1 Linha 1: 8.5 - (-5 * 2.3) = 20 1 - (-5 * 0) = 1 0.5 - (-5 * 0.3) = 2 0 - (-5 * 0) = 0 0 - (-5 * 0) = 0 0 - (-5 * -2) = -10 -5 - (-5 * 1) = 0 0 - (-5 * 0) = 0 0 - (-5 * 0) = 0 0 - (-5 * 2) = 10 5 - (-5 * -1) = 0 Linha 2: 0.6 - (0 * 2.3) = 0.6 0 - (0 * 0) = 0 0.1 - (0 * 0.3) = 0.1 0 - (0 * 0) = 0 -1 - (0 * 0) = -1 0 - (0 * -2) = 0 0 - (0 * 1) = 0 0 - (0 * 0) = 0 1 - (0 * 0) = 1 0 - (0 * 2) = 0 0 - (0 * -1) = 0 Linha 4: 0.45 - (-0.5 * 2.3) = 1.6 0 - (-0.5 * 0) = 0 0.05 - (-0.5 * 0.3) = 0.2 1 - (-0.5 * 0) = 1 0 - (-0.5 * 0) = 0 0 - (-0.5 * -2) = -1 -0.5 - (-0.5 * 1) = 0-1 - (-0.5 * 0) = -1 0 - (-0.5 * 0) = 0 0 - (-0.5 * 2) = 1 0.5 - (-0.5 * -1) = 0 Linha Z: -1.75 - (-0.5 * 2.3) = -0.6 0 - (-0.5 * 0) = 0 -0.25 - (-0.5 * 0.3) = -0.1 0 - (-0.5 * 0) = 0 1 - (-0.5 * 0) = 1 1 - (-0.5 * -2) = 0 -0.5 - (-0.5 * 1) = 0 1 - (-0.5 * 0) = 1 0 - (-0.5 * 0) = 0 0 - (-0.5 * 2) = 1 1.5 - (-0.5 * -1) = 1 Tabela 4 0 0 0 0 0 0 -1 -1 -1 -1 Base Cb P0 P1 P2 P3 P4 P5 P6 P7 P8 P9 P10 P1 0 20 1 2 0 0 -10 0 0 0 10 0 P8 -1 0.6 0 0.1 0 -1 0 0 0 1 0 0 P6 0 2.3 0 0.3 0 0 -2 1 0 0 2 -1 P3 0 1.6 0 0.2 1 0 -1 0 -1 0 1 0 Z -0.6 0 -0.1 0 1 0 0 1 0 1 1 A variável que vai sair da base é P8 e a que entra P2. Linha pivô (Linha 2): 0.6 / 0.1 = 6 0 / 0.1 = 0 0.1 / 0.1 = 1 0 / 0.1 = 0 -1 / 0.1 = -10 0 / 0.1 = 0 0 / 0.1 = 0 0 / 0.1 = 0 1 / 0.1 = 10 0 / 0.1 = 0 0 / 0.1 = 0 Linha 1: 20 - (2 * 6) = 8 1 - (2 * 0) = 1 2 - (2 * 1) = 0 0 - (2 * 0) = 0 0 - (2 * -10) = 20 -10 - (2 * 0) = -10 0 - (2 * 0) = 0 0 - (2 * 0) = 0 0 - (2 * 10) = -20 10 - (2 * 0) = 10 0 - (2 * 0) = 0 Linha 3: 2.3 - (0.3 * 6) = 0.5 0 - (0.3 * 0) = 0 0.3 - (0.3 * 1) = 0 0 - (0.3 * 0) = 0 0 - (0.3 * -10) = 3 -2 - (0.3 * 0) = -2 1 - (0.3 * 0) = 1 0 - (0.3 * 0) = 0 0 - (0.3 * 10) = -3 2 - (0.3 * 0) = 2 -1 - (0.3 * 0) = -1 Linha 4: 1.6 - (0.2 * 6) = 0.4 0 - (0.2 * 0) = 0 0.2 - (0.2 * 1) = 0 1 - (0.2 * 0) = 1 0 - (0.2 * -10) = 2 -1 - (0.2 * 0) = -1 0 - (0.2 * 0) = 0 -1 - (0.2 * 0) = -1 0 - (0.2 * 10) = -2 1 - (0.2 * 0) = 1 0 - (0.2 * 0) = 0 Linha Z: -0.6 - (-0.1 * 6) = 0 0 - (-0.1 * 0) = 0 -0.1 - (-0.1 * 1) = 0 0 - (-0.1 * 0) = 0 1 - (-0.1 * -10) = 0 0 - (-0.1 * 0) = 0 0 - (-0.1 * 0) = 0 1 - (-0.1 * 0) = 1 0 - (-0.1 * 10) = 1 1 - (-0.1 * 0) = 1 1 - (-0.1 * 0) = 1 Tabela 5 0 0 0 0 0 0 -1 -1 -1 -1 Base Cb P0 P1 P2 P3 P4 P5 P6 P7 P8 P9 P10 P1 0 8 1 0 0 20 -10 0 0 -20 10 0 P2 0 6 0 1 0 -10 0 0 0 10 0 0 P6 0 0.5 0 0 0 3 -2 1 0 -3 2 -1 P3 0 0.4 0 0 1 2 -1 0 -1 -2 1 0 Z 0 0 0 0 0 0 0 1 1 1 1 Existe alguma solução possível para o problema, assim nós podemos passar para a Fase II para calcular. Método Simplex Operações intermédias Remover as colunas correspondentes às variáveis artificiais. Modificar a linha da função objetivo do problema original. Calcular a linha Z: -(0) + (-0.2 * 8) + (-0.08 * 6) + (0 * 0.5) + (0 * 0.4) = -2.08 -(-0.2) + (-0.2 * 1) + (-0.08 * 0) + (0 * 0) + (0 * 0) = 0 -(-0.08) + (-0.2 * 0) + (-0.08 * 1) + (0 * 0) + (0 * 0) = 0 -(0) + (-0.2 * 0) + (-0.08 * 0) + (0 * 0) + (0 * 1) = 0 -(0) + (-0.2 * 20) + (-0.08 * -10) + (0 * 3) + (0 * 2) = -3.2 -(0) + (-0.2 * -10) + (-0.08 * 0) + (0 * -2) + (0 * -1) = 2 -(0) + (-0.2 * 0) + (-0.08 * 0) + (0 * 1) + (0 * 0) = 0 Tabela 1 -0.2 -0.08 0 0 0 0 Base Cb P0 P1 P2 P3 P4 P5 P6 P1 -0.2 8 1 0 0 20 -10 0 P2 -0.08 6 0 1 0 -10 0 0 P6 0 0.5 0 0 0 3 -2 1 P3 0 0.4 0 0 1 2 -1 0 Z -2.08 0 0 0 -3.2 2 0 A variável que vai sair da base é P6 e a que entra P4. Operações intermédias Linha pivô (Linha 3): 0.5 / 3 = 0.16666666666667 0 / 3 = 0 0 / 3 = 0 0 / 3 = 0 3 / 3 = 1 -2 / 3 = -0.66666666666667 1 / 3 = 0.33333333333333 Linha 1: 8 - (20 * 0.16666666666667) = 4.6666666666667 1 - (20 * 0) = 1 0 - (20 * 0) = 0 0 - (20 * 0) = 0 20 - (20 * 1) = 0 -10 - (20 * -0.66666666666667) = 3.3333333333333 0 - (20 * 0.33333333333333) = -6.6666666666667 Linha 2: 6 - (-10 * 0.16666666666667) = 7.6666666666667 0 - (-10 * 0) = 0 1 - (-10 * 0) = 1 0 - (-10 * 0) = 0 -10 - (-10 * 1) = 0 0 - (-10 * -0.66666666666667) = -6.6666666666667 0 - (-10 * 0.33333333333333) = 3.3333333333333 Linha 4: 0.4 - (2 * 0.16666666666667) = 0.066666666666667 0 - (2 * 0) = 0 0 - (2 * 0) = 0 1 - (2 * 0) = 1 2 - (2 * 1) = 0 -1 - (2 * -0.66666666666667) = 0.33333333333333 0 - (2 * 0.33333333333333) = -0.66666666666667 Linha Z: -2.08 - (-3.2 * 0.16666666666667) = -1.5466666666667 0 - (-3.2 * 0) = 0 0 - (-3.2 * 0) = 0 0 - (-3.2 * 0) = 0 -3.2 - (-3.2 * 1) = 0 2 - (-3.2 * -0.66666666666667) = -0.13333333333333 0 - (-3.2 * 0.33333333333333) = 1.0666666666667 Tabela 2 - 0.2 - 0.08 0 0 0 0 Base Cb P0 P1 P2 P3 P4 P5 P6 P1 -0.2 4.6666666666667 1 0 0 0 3.3333333333333 -6.6666666666667 P2 - 0.08 7.6666666666667 0 1 0 0 -6.6666666666667 3.3333333333333 P4 0 0.16666666666667 0 0 0 1 - 0.66666666666667 0.33333333333333 P3 0 0.066666666666667 0 0 1 0 0.33333333333333 - 0.66666666666667 Z -1.5466666666667 0 0 0 0 - 0.13333333333333 1.0666666666667 A variável que vai sair da base é P3 e a que entra P5. Operações intermédias Linha pivô (Linha 4): 0.066666666666667 / 0.33333333333333 = 0.2 0 / 0.33333333333333 = 0 0 / 0.33333333333333 = 0 1 / 0.33333333333333 = 3 0 / 0.33333333333333 = 0 0.33333333333333 / 0.33333333333333 = 1 -0.66666666666667 / 0.33333333333333 = -2 Linha 1: 4.6666666666667 - (3.3333333333333 * 0.2) = 4 1 - (3.3333333333333 * 0) = 1 0 - (3.3333333333333 * 0) = 0 0 - (3.3333333333333 * 3) = -10 0 - (3.3333333333333 * 0) = 0 3.3333333333333 - (3.3333333333333 * 1) = 0 -6.6666666666667 - (3.3333333333333 * -2) = 0 Linha 2: 7.6666666666667 - (-6.6666666666667 * 0.2) = 9 0 - (-6.6666666666667 * 0) = 0 1 - (-6.6666666666667 * 0) = 1 0 - (-6.6666666666667 * 3) = 20 0 - (-6.6666666666667 * 0) = 0 -6.6666666666667 - (-6.6666666666667 * 1) = 0 3.3333333333333 - (-6.6666666666667 * -2) = -10 Linha 3: 0.16666666666667 - (-0.66666666666667 * 0.2) = 0.3 0 - (-0.66666666666667 * 0) = 0 0 - (-0.66666666666667 * 0) = 0 0 - (-0.66666666666667 * 3) = 2 1 - (-0.66666666666667 * 0) = 1 -0.66666666666667 - (-0.66666666666667 * 1) = 0 0.33333333333333 - (-0.66666666666667 * -2) = -1 Linha Z: -1.5466666666667 - (-0.13333333333333 * 0.2) = -1.52 0 - (-0.13333333333333 * 0) = 0 0 - (-0.13333333333333 * 0) = 0 0 - (-0.13333333333333 * 3) = 0.4 0 - (-0.13333333333333 * 0) = 0 -0.13333333333333 - (-0.13333333333333 * 1) = 0 1.0666666666667 - (-0.13333333333333 * -2) = 0.8 Tabela 3 -0.2 -0.08 0 0 0 0 Base Cb P0 P1 P2 P3 P4 P5 P6 P1 -0.2 4 1 0 -10 0 0 0 P2 -0.08 9 0 1 20 0 0 -10 P4 0 0.3 0 0 2 1 0 -1 P5 0 0.2 0 0 3 0 1 -2 Z -1.52 0 0 0.4 0 0 0.8 A solução ótima é Z = 1.52 X1 = 4 X2 = 9 Método Gráfico MINIMIZAR: Z = 0.2 X1 + 0.08 X2 0.1 X1 + 0 X2 ≥ 0.4 0 X1 + 0.1 X2 ≥ 0.6 0.1 X1 + 0.2 X2 ≥ 2 0.2 X1 + 0.1 X2 ≥ 1.7 X1, X2 ≥ 0 O problema é ilimitado, mas como um problema de minimização é possível encontrar uma solução. Ponto Coordenada X (X1) Coordenada Y (X2) Valor da função (Z) O 0 0 0 A 4 0 0.8 B 4 6 1.28 C 4 8 1.44 D 4 9 1.52 E 0 6 0.48 F 8 6 2.08 G 5.5 6 1.58 H 0 10 0.8 I 20 0 4 J 4.6666666666667 7.6666666666667 1.5466666666667 K 0 17 1.36 L 8.5 0 1.7 NOTA: Verde são os pontos em que a solução seja encontrada. Vermelho são os pontos fora da região viável. Expressar todas as condições estabelecidas implicitamente pela natureza das variáveis: que não possam ser negativas, que sejam inteiras, que somente possam ter determinados valores, ... Neste caso, a única restrição é que as quantidades de ração que fazem parte da dieta não podem ser negativas: X1 ≥ 0 X2 ≥ 0 Determinar a função objetivo. Minimizar Z = 0,2 X1 + 0,08 X2 Resolver utilizando o APPSimplex, ou outro aplicativo a sua escolha, que resolva problemas de programação linear. Para a resolução do problema foi utilizado o PHPSimplex. http://www.phpsimplex.com/pt/
Compartilhar