Engenharia de Sistemas AgrícolasProf. Ricardo Caetano Rezende, D.S. 1 1 • Introdução • Software LINDO • Microsoft Excel Solver • Exemplos e exercícios Usando Softwares em Programação Linear Prof. Ricardo Caetano Rezende, D.S. Capítulo 6 Curso de Graduação em Engenharia Agrícola 2 1 – Introdução A utilização da programação linear é recomendada para problemas de maior porte, em que muitas variáveis e restrições devem ser consideradas Problemas de grande porte requerem sistemas computacionais potentes e, portanto, sistemas paralelos tem sido utilizados nos últimos anos Entretanto, problemas menores podem ser resolvidos em um computador pessoal, utilizando um dos softwares desenvolvidos para a resolução de problemas de programação linear Capítulo 6 Curso de Graduação em Engenharia Agrícola 3 2 – Software LINDO O método gráfico, apresentado anteriormente, é uma excelente ferramenta de ensino, mas não tem nenhuma pretensão além desta Problemas reais são desenvolvidos no computador utilizando softwares que se baseiam no algoritmo Método Simplex ou Método Simplex Revisado, desenvolvido por George Dantzig em 1947, nos quais cada linha relaciona-se com uma restrição e cada coluna com uma variável Existem atualmente centenas de pacotes para a solução de problemas de programação linear Capítulo 6 Curso de Graduação em Engenharia Agrícola 4 2 – Software LINDO Para problemas considerados médios, é recomendável a utilização de planilhas eletrônicas, como o “What’s Best?”, o Microsoft Excel e o Borland Quattro; todos são ferramentas poderosas, apesar de sua aparência simples; um programa interessante é o LINDO O LINDO – Linear, INteractive and Discrete Optmizer é um software desenvolvido pela Lindo Systems Inc., de Chicago, Illinois, EUA, para a resolução de modelos de programação linear, quadrática ou inteira Foi desenvolvido por Linus Schrage, em 1986 Capítulo 6 Curso de Graduação em Engenharia Agrícola 5 2 – Software LINDO Os problemas resolvidos pelo software são comuns às áreas de negócios, indústrias, pesquisas, entre outros Especificamente, LINDO pode ser de grande utilidade em setores como distribuição de produtos, mistura de ingredientes, planejamento da produção e de pessoal, administração de inventário, ... A filosofia projetada no LINDO designa que, se o usuário deseja algo simples, então ele não deverá gastar muito tempo para aprender a usar o software Capítulo 6 Curso de Graduação em Engenharia Agrícola 6 2 – Software LINDO Se, por exemplo, o usuário procura: Maximizar 2x 1 + 3x 2 Sujeito a: 4x 1 + 3x 2 ≤ 10 3x 1 + 5x 2 ≤ 12 então é exatamente isto que ele deverá digitar no LINDO imediatamente após a inicialização do programa Por outro lado, LINDO tem sido utilizado para resolver problemas reais de considerável tamanho, às vezes com mais de 50.000 restrições e 200.000 variáveis! Capítulo 6 Curso de Graduação em Engenharia Agrícola Engenharia de Sistemas Agrícolas Prof. Ricardo Caetano Rezende, D.S. 2 7 2 – Software LINDO Informações sobre o software podem ser verificadas diretamente pelo site www.lindo.com, bem como o download de sua versão demonstrativa (trial version) As diferentes versões, preços e capacidades, podem ser observadas na tabela abaixo: Versão Preço, US$ comum educacional Restrições Variáveis Variáveis Inteiras Trial $0 $0 150 300 30 Super $395 $195 1.000 2.000 200 Hyper $795 $395 4.000 8.000 800 Industrial $2,395 $695 16.000 32.000 3.200 Extended $3,995 $995 ilimitadas ilimitadas Ilimitadas Fonte: www.lindo.com, setembro de 2010 Capítulo 6 Curso de Graduação em Engenharia Agrícola 8 Será ilustrado agora como adicionar e resolver pequenos problemas no LINDO Todas as demonstrações utilizarão a versão trial que, ao ser acionada (seja por meio do ícone do software no desktop ou pelo Iniciar Programas do Windows) apresentará a seguinte tela de abertura Observe que a pequena janela central é própria desta versão, designando sua capacidade, em termos de variáveis e restrições; em pouco tempo ela desaparece e a imagem seguinte é apresentada Temos a janela principal do LINDO, com seu menu de comandos e sua barra de atalhos Executando um Exemplo Capítulo 6 Curso de Graduação em Engenharia Agrícola Curso de Graduação em Engenharia de Produção 9 Curso de Graduação em Engenharia de Produção 10 É nesta janela menor, vazia, que um novo modelo será digitado Entretanto, antes de iniciarmos, é importante destacar que qualquer modelo no LINDO necessita de 3 requisitos básicos: 1. Declaração das variáveis (opcional) 2. Função objetivo 3. Restrições Menu principal Barra de atalhos 11 Temos 2 opções para o objetivo: MAX ou MIN Já sabemos que a expressão matemática adicionada depois de MAX ou MIN é chamada de função objetivo As variáveis que compõem a função objetivo são x 1 , x 2 , ..., x n , de forma que o LINDO deverá obter os valores das mesmas buscando o máximo proveito, segundo o objetivo proposto Quanto às restrições, em alguns casos, elas constituem a parte mais importante do modelo O programa assume que todas as variáveis são não negativas: não são necessárias as restrições de não negatividade Executando um Exemplo Capítulo 6 Curso de Graduação em Engenharia Agrícola 12 Vamos inserir o seguinte exemplo no LINDO: Maximizar 2x 1 + 3x 2 Sujeito a: 4x 1 + 3x 2 ≤ 10 3x 1 + 5x 2 ≤ 12 Executando um Exemplo Basta digitar os dados conforme o estabelecido abaixo: MAX 2X1 + 3X2 ST 4X1 + 3X2 < 10 3X1 + 5X2 < 12 END No LINDO, podemos iniciar a digitação de cada linha em qualquer coluna; utilizamos o sinal < para ≤ A tela a seguir mostra o resultado deste procedimento no software Capítulo 6 Curso de Graduação em Engenharia Agrícola Engenharia de Sistemas Agrícolas Prof. Ricardo Caetano Rezende, D.S. 3 13 Observe que: ! Inicia uma linha de comentário MAX é o comando que solicita maximizar uma função ST = subject to = sujeito a; informa que a seguir temos o conjunto de restrições END informa o fim dos dados Executando um Exemplo Capítulo 6 Curso de Graduação em Engenharia Agrícola 14 O modelo agora está pronto para ser resolvido O LINDO tem 3 opções para executar o exemplo: a) Clique em solve no menu principal e novamente em solve b) Tecle Crtl+S c) Pressione o ícone na barra de atalhos Inicialmente, o modelo será compilado, isto é, um teste para verificação de erros de sintaxe Após isto, não havendo erros, aparece uma tela perguntando se se deseja efetuar uma análise de sensitividade; tecle Não Executando um Exemplo Capítulo 6 Curso de Graduação em Engenharia Agrícola 15 A seguir, aparece a tela abaixo, que contém um resumo do resultado alcançado ou informações de alerta caso o modelo apresente algum problema Status – pode incluir as soluções: optimal = ótima feasible = possível infeasible = impossível unbounded = ilimitada Iterations – interações para solução Infeasibility – restrições violadas Objective – valor da função objetiva Best IP, IP Bound e Branches – referem-se à Programação Inteira Elapsed Time – tempo decorrido, s Executando um Exemplo Capítulo 6 Curso de Graduação em Engenharia Agrícola 16 Após analisar a tela anterior, clique em Close; a tela pode retornar com Window / Open Status Window Observe agora que por trás da janela <untitled> aparece uma janela maior: Report Window; esta é a tela de resultados Clique em qualquer ponto desta tela Executando um Exemplo Capítulo 6 Curso de Graduação em Engenharia Agrícola 17 Com o objetivo de visualizarmos melhor tanto a tela de entrada como a tela de resultados, façamos o seguinte: Clique em Window, no menu principal, e retorne a tela de entrada (sobre a tela de resultados) Clique novamente em Window e acione Tile A janela ao lado vai aparecer Pressione OK e veja o que vai acontecer Verticalmente, as 2 telas estarão lado a lado, facilitando a visualização e modificações Clique na janela desejada para acioná-la Executando um Exemplo Capítulo 6 Curso de Graduação em Engenharia Agrícola Curso de Graduação em Engenharia de Produção 18 Vamos agora interpretar as informações contidas na janela Reports Window, que é nossa tela de resultados Entretanto, é importante saber que, nesta tela: 1) refere-se à função objetivo 2) refere-se à 1ª restrição 3) refere-se à 2ª restrição Engenharia de Sistemas Agrícolas Prof. Ricardo Caetano Rezende, D.S. 4 19 LP OPTIMUM FOUND STEP 0 significa que o algoritmo simplex utilizado pelo programa encontrou a solução ótima no passo 0 (um passo corresponde a 1 vértice do método simplex) OBJECTIVE FUNCTION VALUE 1) 7.454545 Indica o valor ótimo encontrado para a função objetivo VARIABLE VALUE X1 1.272727 X2 1.636364 apresenta os valores ótimos das variáveis básicas Executando um Exemplo Capítulo 6 Curso de Graduação em Engenharia Agrícola 20 Quanto à coluna REDUCED COST: Representa a quantidade pela qual o coeficiente da função objetivo da variável deveria ser aumentado de modo que sua solução seja diferente de 0; assim, todas as variáveis cujas soluções já são diferentes de 0 possuem um valor 0 para o Custo Reduzido (como é o caso deste exemplo) Ou pode ser a penalidade que se deve pagar, ou seja, redução no lucro, para introduzir 1 unidade daquela variável na solução Estas observações ficarão mais claras quando tratarmos, a seguir, da Análise de Sensitividade Executando um Exemplo Capítulo 6 Curso de Graduação em Engenharia Agrícola 21 Quanto à coluna SLACK OR SURPLUS: Significa folga ou excesso Folga = 0 diz que se atingiu o limite da restrição; como 4X1 + 3X2 ≤ 10, então 4(1,27) + 3(1,64) = 10 Verifique que isto também é válido para a 2ª restrição; foi usado todo o disponibilizado DUAL PRICE relaciona-se à coluna anterior: Se é 0,091 para a 1ª restrição, representa o aumento na função objetivo se se aumentar de 1 o limite da restrição; portanto, se a restrição passar de 10 para 11, o valor da função objetivo subirá de 7,46 para 7,55 (verifique) Executando um Exemplo Capítulo 6 Curso de Graduação em Engenharia Agrícola 22 Para salvar os dados em um arquivo: Clique em File no menu principal e depois em Save as Selecione o diretório e escolha um nome adequado Clique em OK Para imprimir os resultados, ative esta tela e clique em File no menu principal e depois em Print; pode- se acrescentar também, ao final dos resultados, antes da impressão, data e horário, bastando para isso teclar Shift+F4 Para imprimir o modelo junto com resultados, “cole- os” na mesma janela e, alternativamente, tecle F8 Executando um Exemplo Capítulo 6 Curso de Graduação em Engenharia Agrícola 23 1. Max Lucro = 3ST + 4LX Restrições: Corte) 4ST + 2LX ≤ 80 Polim) 2ST + 5LX ≤ 120 Lucro = ; ST = ; LX = 2. Max Lucro = 110a + 65b Restrições: Peças) 2a + b ≤ 7 Horas) 5a + 7b ≤ 30 Lucro = ; a = ; b = 3. Max Lucro = 180A + 300B Restrições: Gab.Peq) A ≤ 60 Gab.Grd) B ≤ 50 Disco) A + 2B ≤ 120 Lucro = ; A = ; B = 4. Min Custo = 2a + 3b Restrições: Proteínas) 3a + 6b ≥ 15 Carboidratos) 10a + 5b ≥ 20 Custo = ; a = ; b = Exercícios no LINDO – Bloco 01 Capítulo 6 Curso de Graduação em Engenharia Agrícola 24 Exercícios no LINDO – Bloco 02 1) Uma pequena fábrica de papel-toalha manufatura 3 tipos de produto: A, B e C. A fábrica recebe o papel em grandes rolos. É cortado, dobrado e empacotado. Dada a pequena escala da fábrica, o mercado absorverá qualquer produção a um preço constante. O lucro unitário de cada produto é, respectivamente, R$ 1,00, R$ 1,50 e R$ 2,00. O quadro a seguir identifica o tempo requerido para operação (em horas) em cada seção da fábrica, bem como a quantidade de máquinas disponíveis. Capítulo 6 Curso de Graduação em Engenharia Agrícola Engenharia de Sistemas Agrícolas Prof. Ricardo Caetano Rezende, D.S. 5 25 Exercícios no LINDO – Bloco 02 1) Cont. Pergunta-se: a) qual é o esquema ótimo de produção semanal (40h)? b) que equipamentos ficarão ociosos e em que nível? Seção Produto A Produto B Produto C Qtd. máquinas Corte 8,0 5,0 2,0 3 Dobra 5,0 10,0 4,0 10 Empacotamento 0,7 1,0 2,0 2 Capítulo 6 Curso de Graduação em Engenharia Agrícola 26 Exercícios no LINDO – Bloco 02 2) A tabela abaixo fornece as necessidades alimentares semanais de um certo animal. Que mistura destas rações satisfaz os requisitos alimentares a um custo mínimo para o proprietário? Ração Proteínas, unidades/kg Carboidratos, unidades/kg Custo, R$/kg A 25 55 3,00 B 25 20 2,00 C 45 10 4,00 D 35 35 3,00 E 25 20 3,00 Mínimo, unidades 200 250 Capítulo 6 Curso de Graduação em Engenharia Agrícola 27 Exercícios no LINDO – Bloco 02 3) Um fazendeiro possui 200 ha cultiváveis para milho e, ou, soja. Os dados são os seguintes: Qual deve ser a alocação da terra para os vários tipos de cultura de maneira a maximizar os lucros? Atividade Milho Soja Disponível Espaço, há 1 1 200 Preparo do terreno, R$ 500 700 200.000 MDO, homens/dia 15 18 20.000 Lucro, R$ 900 1.300 Capítulo 6 Curso de Graduação em Engenharia Agrícola Curso de Graduação em Engenharia Agrícola 28 4. Considere, como exemplo, o caso de um fundo de investimentos que tem as seguintes opções de compra de ações ao lado As restrições do governo estabelecem que nenhum investimento isolado pode ultrapassar 15% do capital total do fundo; além disso, o total de investimento por categoria não pode ultrapassar 40% Empresa Categoria Lucro Esperado E1 A 10% E2 A 15% E3 B 5% E4 C 20% E5 A 12% E6 B 15% E7 A 10% E8 C 5% E9 B 5% E10 C 10% Exercícios no LINDO – Bloco 02 Capítulo 6 O programa Microsoft Excel possui a função Solver, que tem se revelado muito conveniente para a solução de pequenos e médios problemas de programação linear Normalmente esta função não é instalada automaticamente quando se instala o Microsoft Office na modalidade “Instalação Típica”; para ativar esta função vá em Suplementos e ative o Solver 29 Capítulo 6 3 – Microsoft Excel Solver Curso de Graduação em Engenharia Agrícola Seja o exemplo da fábrica de rádios que possui 2 linhas de produção: standard e luxo A linha de produção standard comporta 24 pessoas, consume 1 homem/dia/rádio e cada rádio fornece um lucro de R$ 30,00 A linha de produção luxo comporta 32 pessoas, consume 2 homens/dia/rádio e cada rádio fornece um lucro de R$ 40,00 A fábrica possui um total de 40 empregados e o desafio é alocar os empregados nas 2 linhas 30 Capítulo 6 Executando um Exemplo Curso de Graduação em Engenharia Agrícola Engenharia de Sistemas Agrícolas Prof. Ricardo Caetano Rezende, D.S. 6 O modelo de programação linear é: ST = produção de rádios standard por dia LX = produção de rádios luxo por dia MAX 30ST + 40LX SUJEITO A MAX_ST) ST <= 24 MAX_LX) LX <= 16 MDO) ST + 2LX <= 40 31 Capítulo 6 Executando um Exemplo Curso de Graduação em Engenharia Agrícola Para se criar um modelo no Microsoft Excel Solver, é necessário: a. Fornecer nomes de função objetivo, variáveis e restrições b. Fornecer fórmulas e dados c. Fornecer informações adicionais (parâmetros) ao Solver 32 Capítulo 6 Executando um Exemplo Curso de Graduação em Engenharia Agrícola a. Inicialmente, preocupe-se em registrar no Excel os nomes em seus respectivos campos: 33 Capítulo 6 Executando um Exemplo Curso de Graduação em Engenharia Agrícola b. Digite agora as fórmulas e dados iniciais correspondentes, conforme indicado abaixo: 34 Capítulo 6 Executando um Exemplo Curso de Graduação em Engenharia Agrícola c. As informações adicionais são fornecidas na tela “Parâmetros do Solver” (vá em Ferramentas + Solver ou em Dados + Solver): 35 Capítulo 6 Executando um Exemplo Curso de Graduação em Engenharia Agrícola c. Como trata-se de uma programação linear, clique em Opções e ative “Presumir modelo linear” e depois em OK (isto fará com que os resultados sejam mais completos): 36 Capítulo 6 Executando um Exemplo Curso de Graduação em Engenharia Agrícola Engenharia de Sistemas Agrícolas Prof. Ricardo Caetano Rezende, D.S. 7 Para obter a solução do problema, clique no botão Resolver; observe na tela abaixo que o resultado ótimo substituiu os valores originais (células que continham fórmulas): 37 Capítulo 6 Executando um Exemplo Curso de Graduação em Engenharia Agrícola Na janela Relatórios, clique em Resposta e depois em OK; uma nova planilha será adicionada antes daquela que contém o modelo, com o nome de Relatório de resposta 1: 38 Capítulo 6 Executando um Exemplo Curso de Graduação em Engenharia Agrícola Uma nova planilha será adicionada antes daquela que contém o modelo, com o nome de Relatório de sensibilidade 1: Voltando à planilha do modelo, resolva-o novamente e na janela Relatórios, clique em Sensibilidade e depois em OK 39 Capítulo 6 Executando um Exemplo Curso de Graduação em Engenharia Agrícola Uma nova planilha será adicionada antes daquela que contém o modelo, com o nome de Relatório de limites 1: Finalmente, voltando à planilha do modelo, resolva-o novamente e na janela Relatórios, clique em Limites e depois em OK 40 Capítulo 6 Executando um Exemplo Curso de Graduação em Engenharia Agrícola 1. Resolva o problema abaixo usando o Excel Solver: ! Problema do criador de coelhos que deseja produzir ração ! X1 = ração A utilizada na mistura, em kg ! X2 = ração B utilizada na mistura, em kg ! X3 = ração C utilizada na mistura, em kg ! X4 = ração D utilizada na mistura, em kg ! X5 = ração E utilizada na mistura, em kg MIN 0.2X1 + 0.3X2 + 0.4X3 + 0.5X4 + 0.25X5 st prot) 30X1 + 20X2 + 15X3 + 80X4 + 20X5 > 80 carboi) 60X1 + 20X2 + 60X3 + 20X4 + 20X5 > 120 gord) 5X1 + 10X2 + 5X3 + 3X4 + 2X5 > 30 end 41 Capítulo 6 Exercícios no Excel Solver Curso de Graduação em Engenharia Agrícola 2. Uma oficina mecânica deseja alocar o tempo ocioso disponível em suas máquinas para a produção de 3 produtos. A tabela abaixo dá as informações sobre as necessidades de horas de máquina para produzir uma unidade de cada produto, assim como a disponibilidade das máquinas, o lucro dos produtos e a demanda máxima existente no mercado. Pede-se o esquema de produção de lucro máximo. Use o Solver. 42 Capítulo 6 Exercícios no Excel Solver Curso de Graduação em Engenharia Agrícola