Pesquisa Operacional II 3. Software LINDO Faculdade de Engenharia Eng. Celso Daniel Engenharia de Produção Problemas em forma não padrão São 4 características de um problema na forma padrão, lembram-se? Maximizar Z = c1x1 + c2x2 +... + cnx sujeito a: a11x1 + a12x2 +... + a1nxn b1 a21x1 + a22x2 +... + a2nxn b2 : am1x1 + am2x2 +... + amnxn bm x, x, x,... x 0 1 2 3 n n não negativos
Problemas em forma não padrão Portanto, se qualquer uma das 4 características não puder ser observada, o problema não está na sua forma padrão. Max 5x + 5x + 3x sa.. x + 3 x + x 3 x + 3x 2 xxx,, 0 1 2 3 1 2 3 1 3 1 2 3 Min 5x + 5x + 3x sa.. x + 3 x + x 3 x + 3x 2 x, x, x 0 1 2 3 1 2 3 1 3 1 2 3 Resolvendo problemas em forma não padrão O Simplex não resolve problemas em forma não padrão! Mas, existem técnicas de reduzir problemas em formas genéricas para a forma padrão. Para resolver problemas em forma não padrão, usaremos softwares específicos: Solver do Excel (já visto) LINDO
O problema do vendedor de frutas Um vendedor de frutas pode transportar 800 caixas de frutas para sua região de vendas. Ele necessita transportar 200 caixas de laranja a R$20,00 de lucro por caixa, pelo menos 100 caixas de pêssegos a R$10,00 de lucro por caixa, e no máximo 200 caixas de tangerinas a R$30,00 de lucro por caixa. De que forma ele deverá carregar o caminhão para obter o lucro máximo? Max 20x1 + 10x2 + 30x3 s.a. x1 + x2 + x3 800 x1 = 200 x2 100 x3 200 x, x, x 0 1 2 3 O modelo do vendedor de frutas Este é claramente um problema em forma não padrão. Resolveremos usando o LINDO.
Programação Linear Software LINDO LINDO (Linear, Interative e Discrete Optimizer; www.lindo.com) é um software interativo para resolução de problemas de programação: Linear; Quadrática; Inteira. Utilizado para resolução de problemas reais de mais de 10.000 variáveis, dispõe de características que mostram os passos e quadros intermediários do método simplex. Software LINDO - Versão windows
Entrando com um modelo no LINDO Escreve-se um modelo simples no LINDO exatamente como se escreveria no Word. As diferenças só existem para modelos mais elaborados. Trataremos disso posteriormente. E, é claro, o LINDO têm sintaxe em língua inglesa, e não em portuguesa. Entrando com o modelo do vendedor de frutas Subject To opcional
LINDO - Comandos Comandos: MAX- inicia um problema de maximização; MIN- inicia um problema de minimização; ST, S.T., Subject To ou Such That - indica o final da função objetivo e inicio das restrições; END - termina a entrada de um problema; é facultativo para modelos simples que não exigem comandos especiais. LINDO - Operadores de comparação O LINDO não aceita modelos com restrição de estritamente menor (<), pois no mundo real problemas assim não acontecem. Portanto são operadores de comparação: Igual =; Menor ou igual <= ou <; Maior ou igual >= ou >.
Resolvendo um problema Solve Se a sintaxe não estiver correta alguma mensagem de erro aparecerá LINDO - Solução do problema Se nenhum erro ocorrer durante a compilação a tela ao lado aparecerá. Se a analise de sensibilidade for desejada (ainda não vimos nada sobre isso) responda sim.
LINDO - Janela de respostas Quando o problema estiver resolvido outra janela denominada Reports Window ou janela de relatórios aparecerá automaticamente. Esta janela de relatórios é o lugar aonde todos os resultados serão lançados. LINDO - Janela de respostas Se dois problemas forem resolvidos, ou mesmo se um problema for resolvido mais de uma vez, as resoluções aparecerão uma seguida da outra na Janela de Respostas. Para se examinar esta janela basta clicar na menu Windows Reports Windows. Você pode salvar a janela de respostas como texto. Fechando-a você apaga seu conteúdo.
LINDO - Solução do problema Valor Ótimo da Função Objetivo Valor das Variáveis Originais (Solução Ótima) Valor das Variáveis de Folga ou Excesso Reduced Cost e Dual Price Estes valores serão entendidos oportunamente, quando falarmos de análise de sensibilidade.
LINDO - Sintaxe modelo A função objetivo deve sempre aparecer no começo do modelo e deve ser iniciada pelo comando MAX ou MIN. O nome de uma variável no LINDO pode conter até 8 caracteres: Começar por uma letra; Não conter um dos seguintes caracteres:! ) + - = < >. LINDO - Inserindo comentários Todas as linhas do LINDO que começarem com uma exclamação são chamadas comentários. Comentários não são interpretados pelo LINDO. Servem apenas para facilitar a leitura do modelo.
LINDO - Sintaxe modelo Pode ser útil nomear as restrições de um modelo - pode facilitar a leitura do resultado. O nome das restrições seguem as mesmas convenções dos nomes das variáveis. Para nomear uma restrição basta iniciá-la com o nome seguido de um) e restrição propriamente dita. EX.: NOME) 2x+4y<=10 Exemplo usando nome nas restrições comentários restrições nomeadas máximo de 8 letras
A resposta com as restrições nomeadas Fica mais rápido identificar os valores LINDO - Sintaxe modelo O LINDO não aceita parênteses ( ) como indicadores de preferência de ordem de precedência. Todas as operações são executadas da esquerda para a direita. Além disso, só são permitidas operações de multiplicação entre constantes e variáveis, não entre duas constantes. Somente constantes (não variáveis) são permitidas do lado direito das restrições. Somente variáveis e seus coeficientes (não constantes) podem ser colocados do lado esquerdo das restrições.
Exemplo de modelagem no LINDO Suponha que você fabrica dois produtos: cadernos e blocos de notas. Cada caderno é vendido por R$ 7,00 e cada bloco por R$3,00. O caderno consome 500 gramas de papel e cada bloco apenas 100 gramas, e você só possui disponíveis 60 kg de papel. Estabeleça um modelo de PPL, para determinar seu faturamento ótimo, sabendo que o departamento de marketing disse que o total de blocos fabricados não deve ser maior que o total de cadernos. O modelo da fábrica de papel Chamando de x 1 : total de cadernos fabricados, e x 2 : total de blocos fabricados, obtemos o seguinte modelo: Max 7x1 + 3x2 sa.. 0,5x1 + 0,1x2 60 x2 x1 x, x 0 1 2 Esta restrição, como está, não pode ser colocada no LINDO! Vamos ver como ficaria no LINDO
O modelo no LINDO Variáveis sempre à esquerda! Problemas de aproximação no LINDO Como o LINDO não admite operadores entre constantes, inserir uma dízima no LINDO exige um certo cuidado. Por exemplo, como colocar 1 6 no LINDO, sem perda de precisão? Quando tivermos frações que resultem em dízimas periódicas, é necessário tirar o MMC da expressão, eliminando as frações.
Um modelo que exige o MMC Um sapateiro trabalha 10 horas por dia e faz 6 sapatos por hora, se fizer somente sapatos, e 5 cintos por hora, se fizer somente cintos. Ele gasta 2 peças de couro para fabricar 1 unidade de sapato e 1 peça de couro para fabricar 1 unidade de cinto. O total disponível de couro é 60 peças diárias, e o lucro unitário por sapato é de R$5,00 e R$2,00 por cinto. O objetivo é maximizar o lucro diário do sapateiro. Chamando de x 1 : total de sapatos fabricados por dia, e x 2 : total de cintos fabricados por dia, obtemos o seguinte modelo: Max 5x1 + 2x2 sa.. 2x1 + x2 60 1 1 x1 + x2 10 6 5 x, x 0 1 2 Um modelo que exige o MMC tirando o MMC restrição a ser inserida no LINDO 5x + 6x 300 1 2
Problemas com a folga Uma folga de 150 horas? Efeitos da modificação Os problemas estão basicamente na folga. A folga de 150 unidades na restrição que foi alterada representa uma folga de 5 horas! A solução ótima é mantida. 150 = 5 30 Folga relatada MMC usado Atenção para a análise de sensibilidade que também será alterada, de maneira análoga à folga.
LINDO - Comandos opcionais Alguns comandos adicionais são colocados após o comando END ao final das restrições. Vamos examinar agora um deles: FREE <Variável> - Remove os limites de não negatividade imposta a todas as variáveis por default. É possível usar FREE com um número inteiro, indicando o número de variáveis a ser considerado livre, contados na ordem que aparecem