310 likes | 477 Views
Resolvendo Programação Linear Em um Microcomputador. Conteúdos da Seção. Programação Linear Software Lindo Versão Windows e comandos Formulação do problema Solução do problema Reduced cost Sintaxe modelo Comandos opcionais File | Log output O Caso do Vendedor de Frutas.
E N D
Resolvendo Programação Linear Em um Microcomputador
Conteúdos da Seção • Programação Linear • Software Lindo • Versão Windows e comandos • Formulação do problema • Solução do problema • Reduced cost • Sintaxe modelo • Comandos opcionais • File | Log output • O Caso do Vendedor de Frutas
Programação LinearSoftware Lindo • Lindo (Linear Interactive Discrete Optimizer) é 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
LindoComandos • Comandos • MAX • Inicia um problema de maximização • MIN • Inicia um problema de minimização • END • Termina a entrada de um problema • Operadores • Menor < • Maior > • Menor ou igual <= • Maior ou igual >=
+ Max 2 x 3 y + Max 2x 3y s.t. s.t. + < 4x 3y 10 + < 4 x 3 y 10 + < 3x 5y 12 + < 3 x 5 y 12 END ³ x , y 0 LindoFormulação de Problema • A seguinte entrada é uma formulação válida de uma problema
LindoFormulação de Problema • Solve • Se a sintaxe não estiver correta, a seguinte mensagem aparecerá: • An error occured during compilation on line: n
LindoSolução do Problema • Se nenhum erro ocorrer durante a compilação, a tela ao lado aparecerá. • Se a análise de sensibilidade for desejada responda sim
LindoSolução do Problema • Quando o problema estiver resolvido, uma janela denominada Reports Window ou janela de relatórios aparecerá automaticamente. • Essa janela de relatórios é o lugar onde todos os resultados serão lançados. • Se dois problemas forem resolvidos e houver espaço na janela, suas resoluções aparecerão uma seguida da outra • Para se examinar essa janela basta clicar no menu Windows|Reports Windows (ver slide a seguir)
LindoSolução do Problema • Valor Ótimo da Função Objetivo • Valor das Variáveis Originais • Valor das Variáveis de Folga ou Excesso
Existem duas interpretações para o Reduced Cost: A quantidade que o coeficiente da função objetiva de uma variável original deve melhorar antes desta variável se tornar básica. A quantidade de penalização deverá ser paga se quisermos tornar uma variável básica Solução do ProblemaReduced Cost
Existem duas interpretações para os Dual Prices: A quantidade pela qual a função objetiva será melhorada dado um incremento de uma unidade na constante de uma restrição Quanto estaríamos dispostos a pagar por uma unidade adicional de um recurso Solução do ProblemaReduced Cost
LindoSintaxe Modelo • A função objetivo deve sempre aparecer no começo do modelo e deve ser iniciada pelo comando MAX ou MIN. • O fim da função objetivo é definido através de uma das seguintes expressões: • SUBJECT TO • S.T. • ST
LindoSintaxe Modelo • O final das restrições é determinada pelo comando END. • O Comando END só é obrigatório se após as restrições aparecerem comandos do tipo GIN ou INT discutidos mais tarde • 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: • ! )+ - = < >
LindoSintaxe Modelo • Opcionalmente podemos nomear as restrições de um modelo. O nome das restrições seguem as mesmas convenções dos nomes das variáveis • Para nomear uma restrição, inclua o nome, um parêntese, e a própria restrição em seguida • Exemplo: NOME) 2x + 4y <= 10
LindoSintaxe Modelo • O LINDO não aceita parêntesis ( ) como indicadores de preferência de ordem de precedência. Todas as operações são executadas da esquerda para a direita. • 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.
LindoComandos Opcionais • Os comandos adicionais abaixo são colocados após o comando END ao final das restrições. • FREE <Variável> - Remove os limites de não negatividade imposta a todas as variáveis por default. • GIN <Variável> - Faz a <Variável> uma variável inteira geral. • INT <Variável> - Faz a <Variável> uma variável inteira binária.
LindoFile|Log Output • Esse comando serve para se criar um arquivo contendo todos os resultados colocados na tela de resultados. • O comando é do tipo liga/desliga, isto é, a primeira vez, abre um arquivo (ativa o comando) e a segunda fecha este arquivo. • Um símbolo de check é colocado ao lado do menu do comando enquanto este estiver ativado
O Caso do Vendedor de Frutas • Um vendedor de frutas pode transportar 800 caixas de frutas para sua região de vendas. Ele necessita transportar pelo menos 200 caixas de laranja e pelo menos 100 caixas de pêssegos e no máximo 200 caixas de tangerinas O vendedor obtêm um lucro por caixa de 20, 10 e 30 reais para laranjas, pêssegos e tangerina, respectivamente. De que forma ele deverá carregar o caminhão para obter o lucro máximo?
O Caso do Vendedor de Frutas • Hipóteses • Tudo o que o vendedor levar será vendido. • Nada estragará no caminho • Função-Objetiva • Maximizar o lucro • Max 20x1 + 10x2 + 30x3
O Caso do Vendedor de Frutas • Restrições de venda • Laranjas: x1> 200 • Pêssegos: x2> 100 • Tangerinas: x3< 200 • Restrição de Transporte • x1 + x2 + x3< 800
+ + Max 20 x 10 x 30 x 1 2 3 s.r. + + £ x x x 800 1 2 3 ³ 200 x 1 ³ x 100 2 £ x 200 3 ³ , x , x 0 x 1 2 3 O Caso do Vendedor de Frutas • Este problema está visivelmente em forma não padrão. Resolveremos usando o Lindo.
Vamos verificar a solução do problema abaixo com a ajuda do Lindo, como já fizemos com o Excel na seção anterior:
O Problema no Lindo • Variáveis sem restrições de sinal