LP Solve Albert Einstein Fernandes Muritiba albert.fernandes@unibo.it Fortaleza, 2010
Agenda 1 Introdução. 2 Componentes. 3 Instalação. 4 Arquivos LP. 5 Comando lp solve 6 LPSolve IDE 7 lp solve API C 8 Exercírcios
Introdução. LP Solve. LP Solve é uma ferramenta solve para problemas de Programação Linear Inteira Mista (MILP). OpenSource disponível sob licença LGPL (GNU Lesser General Public License). Trata problemas lineares puros, mistos, inteiros, binários, semi-contínuos e de conjunto ordenado. É capaz de ler arquivos no formato.lp.mps. Possui API para várias linguagens: C, VB,.NET, Delphi, Excel, Java,... Possui extenções para vários aplicativos: AMPL, MATLAB, O-Matrix, Scilab, Octave, R. Não possui limites para o tamanho do modelo.
Componentes. Componentes. O frame-work LP Solve é formato pelas seguintes componentes. Solve implementado em ANSI C pode ser compilado para várias plataformas. Utiliza o algoritmo Simplex Revisado e o método Branch and Bound para soluções inteiras. API para utilização do solve por programadores de diversas linguagens(c, VB,.NET, Delphi, Excel, Java). Extenções para utilização do solve por aplicativos como AMPL, MATLAB, O-Matrix, Scilab, Octave, R. Comando lp solve que permite ao usuário carregar e resolver arquivos do tipo.lp. LPSolve IDE, uma interface amigável para resolução de problemas (apenas para Windows).
Instalação. Instalação Windows. Na página http://sourceforge.net/projects/lpsolve/ Para utilizar o comando lp solve, faça o download do arquivo lp solve 5.5.0.15 exe win32.zip e extraia o arquivo lp solve.exe. Para utilizar a LPSolve IDE, faça o download do arquivo lp solve 5.5.0.15 IDE Setup.exe e execute-o. Para utilizar sua API em C, deve-se baixar os arquivos marcados como dev. Exemplo lp solve 5.5.0.15 dev win32.zip. Para utilizar API s para outras linguagens, baixe os respectivos arquivos: lp solve 5.5 vb.net.zip, p solve 5.5 cs.net.zip, lp solve 5.5.0.15 java.zip, etc.
Arquivos LP. Formato de Arquivos LP Os arquivos.lp definem um problema de programação linear de forma bem semelhante a um MPL. Um arquivo.lp é composto por 3 partes: Função Objetivo. È a combinação linear de variáveis de decição e constantes terminando com ponto-e-vírgula. Opcionalmente precedido por max: ou min:, a omissão significará maximização. Exemplo: min : x1 + x2; É possível comentar linhas com \\ ou intervalos com \*... *\.
Arquivos LP. Formato de Arquivos LP Os arquivos.lp definem um problema de programação linear de forma bem semelhante a um MPL. Um arquivo.lp é composto por 3 partes: Função Objetivo. È a combinação linear de variáveis de decição e constantes terminando com ponto-e-vírgula. Opcionalmente precedido por max: ou min:, a omissão significará maximização. Exemplo: min : x1 + x2; Restrições. É composto por um nome opcional para uma restrição seguido por dois-pontos (:) mais uma combinação linear de variáveis de decição e constantes, seguido por um operador relacional (=, >=, <=) e seguido novamente por uma combinação linear de variáveis de decição e constantes. Terminando em ponto-e-vírgula. Exemplo: myrow: x1 + 2x2 >= 2; As restrições também podem ser da forma: 1 <= x1 <= 3; 2 <= x1 + x2 <= 6; É possível comentar linhas com \\ ou intervalos com \*... *\.
Arquivos LP. Formato de Arquivos LP Os arquivos.lp definem um problema de programação linear de forma bem semelhante a um MPL. Um arquivo.lp é composto por 3 partes: Função Objetivo. È a combinação linear de variáveis de decição e constantes terminando com ponto-e-vírgula. Opcionalmente precedido por max: ou min:, a omissão significará maximização. Exemplo: min : x1 + x2; Restrições. É composto por um nome opcional para uma restrição seguido por dois-pontos (:) mais uma combinação linear de variáveis de decição e constantes, seguido por um operador relacional (=, >=, <=) e seguido novamente por uma combinação linear de variáveis de decição e constantes. Terminando em ponto-e-vírgula. Exemplo: myrow: x1 + 2x2 >= 2; As restrições também podem ser da forma: 1 <= x1 <= 3; 2 <= x1 + x2 <= 6; Declarações. Declara o tipo de um dado conjunto de variáveis de decição. Exemplo: int x1, x2, x3; bin x4, x5; free x6, x7;. É possível comentar linhas com \\ ou intervalos com \*... *\.
Arquivos LP. Exemplo. exemplo.lp \* Objective function *\ max: +3 money +3 C3 +3 C4; \* Constraints *\ speed: +4 money +C3 +2 C4 >= 3; +2 money +4 C3 +2 C4 = 8; \* Variable bounds *\ money >= 2; C3 <= 5.3;
Comando lp solve Comando lp solve.
LPSolve IDE LPSolve IDE.
lp solve API C API. *Veja demo.c e demo.java
Exercírcios Exercírcio 1 Uma empresa produz dois tipos de cadeira reclinável. Há duas etapas no processo de fabricação das cadeiras montagem e acabamento. Uma unidade da cadeira top de linha requer 3/2 horas na montagem, 1 hora no acabamento e é vendida gerando lucro de R$20,00. Uma unidade da cadeira mais simples requer 1/2 hora na montagem e 1/2 hora no acabamento e é vendida gerando lucro de R$12,00. A disponibilidade atual é de 100 horas para montagem e 80 horas para acabamento. A empresa está envolvida em negociações com o sindicato em relação a modificações salariais para o próximo ano e pediram que você determinasse (quantificasse) o valor da hora de montagem e de acabamento. Se você puder comprar uma unidade adicional do primeiro recurso pagando 5/2, você faria a compra? Porque? Outra empresa gostaria de comprar uma unidade do terceiro recurso de você. Qual o valor dessa unidade?
Exercírcios Exercírcio 2 Um fabricante de bebidas pretende lançar um novo refrigerante que é obtido misturando refrigerante sabor laranja e suco de laranja. Análises executadas pelo fabricante mostraram que cada ml de refrigerante sabor laranja tem 0,5 ml de açúcar e 1 mg de vitamina C e que cada 1 ml de suco de laranja tem 0,25 ml de açúcar e 3 mg de vitamina C. O custo de produção de 1 ml de refrigerante sabor laranja é de R$0,002 e de 1 ml de suco de laranja é de R$0,004. O departamento de marketing da empresa decidiu que o novo refrigerante será comercializado em embalagens de 300 ml por R$2,00 e que cada unidade do produto deve conter no mínimo 600 mg de vitamina C e no máximo 120 ml de açúcar. A partir desses dados responda:
Exercírcios Formule o problema como um PPL (problema de programação linear) sabendo que o objetivo da empresa é obter uma composição que minimize o custo de produção do novo produto (e que conseqüentemente maximizará o lucro do fabricante). Qual será o efeito no valor da função objetivo e nas variáveis de decisão se a empresa decidir comercializar o produto em embalagens de 290 ml? Qual será o efeito no valor da função objetivo e nas variáveis de decisão se a empresa decidir que o produto deve ter no máximo 115 ml de açúcar? Existe a possibilidade de colocar no novo produto um aditivo que custa R$0,015 por ml, e que tem 0,1 ml de açúcar e 9 mg de vitamina C por ml de aditivo. Vale a pena incluir esse aditivo? Qual será o efeito no valor da função objetivo se o custo de produção de 1 ml de suco de laranja aumentar de R$0,004 para R$0,005(e mostre graficamente)?
Exercírcios Referências. Download http://sourceforge.net/projects/lpsolve/ Guia http://lpsolve.sourceforge.net/5.5/