Escolar Documentos
Profissional Documentos
Cultura Documentos
Manual Lindo
Manual Lindo
Contedo
1 LINDO
1.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.1 1.1.2 1.2 O que o LINDO? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sintaxe de um Modelo LINDO . . . . . . . . . . . . . . . . . . . . . . . . .
1
1 1 1 1 1 2 3 5 7 7 11
Exemplos de Modelos LINDO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 Todas as variveis so no negativas . . . . . . . . . . . . . . . . . . . . . . Existem variveis inteiras . . . . . . . . . . . . . . . . . . . . . . . . . . . . Existem variveis limitadas superiormente e inferiormente . . . . . . . . . . Existem variveis binrias . . . . . . . . . . . . . . . . . . . . . . . . . . . . Existem variveis livres . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3 1.4
Bibliograa
16
Lista de Figuras
1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 Modelo LINDO para o problema da dieta . . . . . . . . . . . . . . . . . . . . . . . Soluo para o problema da Dieta . . . . . . . . . . . . . . . . . . . . . . . . . . . Modelo LINDO para o problema da fbrica de mveis . . . . . . . . . . . . . . . . Forma alternativa do Modelo LINDO para o problema da fbrica de mveis . . . . Modelo LINDO para o problema da confeitaria . . . . . . . . . . . . . . . . . . . . Modelo LINDO para o problema da defesa antiarea . . . . . . . . . . . . . . . . . Modelo LINDO para o PPL usando varivel livre . . . . . . . . . . . . . . . . . . . Modelo LINDO para o exemplo 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 4 4 4 5 6 7 9 9 9 9 10 10 10 10 10 11 11 11 13 13 13
1.10 Janela de Pivoteamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.11 2o quadro para o exemplo 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.12 3o quadro para o exemplo 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.13 Modelo LINDO para o exemplo 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.14 1o quadro para o exemplo 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.15 2o quadro para o exemplo 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.16 3o quadro para o exemplo 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.17 Modelo LINDO para o exemplo 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.18 1o quadro para o exemplo 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.19 2o quadro para o exemplo 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.20 3o quadro para o exemplo 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.21 Modelo LINDO para o PPL dos Nutrientes . . . . . . . . . . . . . . . . . . . . . . 1.22 REPORTS WINDOW para o PPL dos Nutrientes . . . . . . . . . . . . . . . . . .
ii
Captulo 1
LINDO
1.1 Introduo
1.1.1 O que o LINDO?
LINDO (Linear, INteractive, and Discrete Optimizer) uma conveniente, mas poderosa ferramenta para resolver Problemas de Programao linear, inteira e quadrtica.
Funo objetivo (fo) que dever iniciar com os comandos MAX para maximizar e MIN para
Minimizar e frente dever ser colocada a funo objetivo.
A declarao SUBJECT TO (sujeito a) que pode ser substitudo por st ou s.t. e logo aps
sero declaradas as restries do problema.
Problema da Dieta
Um nutricionista precisa estabelecer uma dieta contendo, pelo menos, 11mg de vitamina A, 70mg de vitamina C e 250 mg de vitamina D. A tabela abaixo resume a quantidade de cada
vitamina em disponibilidade nos alimentos leite, carne, peixe e salada e apresenta, tambm, a necessidade diria dessas vitaminas e os custos de cada alimento. Calcular as quantidades dos quatro alimentos que devem ser includos na dieta diria, a m de que os seguintes requisitos nutricionais sejam satisfeitos a custo mnimo.
Leite (l)
Carne (Kg)
2 mg 20 mg 70 mg 5,00
Peixe (Kg)
10 mg 10 mg 10 mg 7,00
Salada (100g)
20 mg 30 mg 80 mg 1,00
min s.a
+ + + + ,
+ + + + ,
+ + + + ,
11 70 250 0
Figura 1.1: Modelo LINDO para o problema da dieta Depois de digitado o modelo clique no menu SOLVE COMPILE MODEL(CTRL+E), em seguida clique novamente em SOLVE SOLVE(CTRL+S). Aparecer uma tela parecida como na gura 1.2.
por um modelo de escrivaninha, uma mesa de reunio, um armrio e uma prateleira. Cada tipo de mvel consome uma certa quantidade de matria-prima, conforme a tabela abaixo. A escrivaninha vendida por 100 u.m., a mesa por 80 u.m.,o armrio por 120 u.m. e a prateleira por 20 u.m. Pede-se exibir um modelo de programao linear que maximize a receita com a venda dos mveis. Matria-prima consumida por cada mvel
Quantidade de material em metros consumidos por unidade de produto Escrivaninha Mesa Armrio Prateleira
1 0 3 100 1 1 2 80 1 1 4 120 4 2 0 20
max s.a
100x1 x1 3x1 x1
+ + + ,
80x2 x2 x2 2x2 x2
+ + + + ,
120x3 x3 x3 4x3 x3
+ + + ,
Para este PPL temos duas formas de model-lo no LINDO. Em ambas deve ser acrescentado o comando GIN [nome da varivel], indicando que aquela varivel do tipo inteiro, como na gura 1.3. Quando vrias variveis so inteiras o comando GIN pode ser utilizado como mostrado na gura 1.4, ou seja, GIN [nmero de variveis inteiras].
Problema da Confeitaria
Uma confeitaria produz dois tipos de bolos de sorvete: chocolate e creme. Cada lote de bolo de chocolate vendido com um lucro de 3 u.m. e os lotes de creme com o lucro de 1 u.m. Contratos com vrias lojas impem que sejam produzidos no mnimo 10 lotes de bolo de chocolate por dia e que o total de lotes fabricados nunca seja menor do que 20. O mercado s capaz de consumir at 40 bolos de creme e 60 de chocolate. As mquinas de preparao de sorvete disponibilizam 180 horas de operao, sendo que cada lote de bolos de chocolate consome 2 horas de trabalho e cada lote de bolos de creme 3 horas. Determinar o esquema de produo que maximize os lucros com a venda dos bolos de sorvete. Modelando o problema, obtemos o seguinte PPL:
Figura 1.4: Forma alternativa do Modelo LINDO para o problema da fbrica de mveis
max s.a
x1 3x1 x1 x1 x1
+ + +
3x2 2x2 x2 x2 x2 x2
180 20 40 60 10 0
Neste modelo podemos observar a presena de variveis limitadas superiormente e inferiormente. Neste caso, para evitar a ampliao da dimenso da base, devemos colocar aps o comando END, os comandos SUB [nome da varivel] [valor limite] para limitar a varivel superiormente e SLB [nome da varivel] [valor limite] para limitar a varivel inferiormente. A gura 1.5 ilustra a utilizao de variveis canalizadas.
Um determinado conjunto de armas antiareas est distruibudo de forma a defender uma cidade de um ataque. So n plataformas de msseis. Sabe-se que dij a distncia entre a plataforma da arma i e a ameaa j (avio inimigo ou mssil), que o alcance mximo dos msseis de ri , que o custo de cada tiro sobre uma ameaa j de cij e o valor de neutralizao da ameaa vj . Em cada ataque, o sistema de defesa deve selecionar, dentre m ameas, apenas k possveis alvos. Elaborar o modelo matemtico de alocao arma x alvo que minimiza o custo de defesa. Para este problema tomaremos a seguinte varivel de deciso: 1 Caso a arma i seja designada ameaa j, xij = , i = 1, ..., n e j = 1, ..., m 0 Caso contrrio. Consideraremos ainda os seguintes dados:
Plataforma i P1
P2
Dados sobre as Plataformas antiareas Ameaa Distncia da Alcance Custo j ameaa j (dij ) (ri ) (cij ) Avio1 200 150 5 Avio2 100 4 Mssil1 150 2 Mssil2 200 1 Avio1 150 200 5 Avio2 100 5 Mssil1 20 3 Mssil2 80 2
max
j=1 m
vj (
i=1
xij
i=1
cij xij )
s.a
j=1 n
1, j = 1, ..., m xij = k
Figura 1.6: Modelo LINDO para o problema da defesa antiarea Deve ser observado que o modelo apresentado na gura 1.6 o resultado da aplicao da
min s.a
5x1 x1 x1 x1
+ +
x2 x2 x2 x2
qq.
5 7 0
Neste exemplo estamos tomando como exemplo que a varivel x2 livre, ou seja, pode assumir qualquer valor. Para modelarmos este PPL utilizando o LINDO devemos acrescentar aps o comando END, o comando FREE <nome da varivel ou nmero de variveis>, conforme mostra a gura 1.7.
Comando
Teclas de atalho
CT RL + E CT RL + N ALT + 7
Exemplo 1:
Primeiramente devemos digitar o PPL. Vamos tomar como exemplo o PPL abaixo:
min s.a
+ + ,
15 10 0
Antes de gerarmos o 1o quadro devemos compilar o modelo (CT RL + E ). Para gerarmos o primeiro quadro para este modelo pressionamos as teclas ALT + 7. O quadro gerado apresentado na gura 1.9. Agora vamos fazer o pivoteamento. Pressione as teclas CT RL + N para a aparecer a janela da gura 1.10. Nesta janela, selecionamos a opo USE MINE e escolhemos a varivel que vai entrar na base (Variable Selection) e a varivel que vai sair da base (Row Selection), onde SLK 2 e 3 so as variveis de folga. Clique em CLOSE e depois em CANCEL. Gere o novo quadro usando as teclas ALT + 7. O segundo quadro mostrado na gura 1.11. Pela anlise do quadro vemos que ainda no obtemos a melhor soluo, ento devemos repetir os passos citados acima at encontrar a melhor soluo para o PPL, ou seja, fazemos um novo pivoteamento e geramos um novo quadro. Para isto devemos pressionar novamente CT RL + N e selecionar a varivel que deve entrar na base e aquela que deve sair, feito isso geramos o novo quadro. Para o nosso exemplo o novo quadro (ALT + 7) apresentado na gura 1.12. Como podemos observar este quadro timo, portanto encontramos a melhor para o problema.
Exemplo 2:
min s.a 6x1 3x1 5x1 x1 + + , 10x2 5x2 2x2 x2
15 10 0
Para este exemplo temos o modelo LINDO apresentado na gura 1.13. Vamos resolver este problema utilizando quadros tableau para isto vamos seguir os seguintes passos:
1o ) Geramos o primeiro quadro pressionando as teclas ALT + 7. (Figura 1.14) 2o ) Atravs da anlise do quadro decidimos qual varivel deve entrar na base e qual deve sair
(CT RL + N ). (Figura 1.10)
3o ) Geramos um novo quadro (ALT + 7). (Figura 1.15) 4o ) Analisamos este novo quadro. Observamos para este exemplo que no existe cj < 0, mas
a varivel X1 que no est na base tem coeciente igual a 0. Portanto colocando X1 na base obtemos uma outra soluo tima, como mostra a gura 1.16. Para este exemplo temos vrias solues timas e elas so dadas pela seguinte equao:
Exemplo 3:
min s.a 2x1 x1 0.5x1 x1 + + , 2x2 x2 x2 x2
1 2 0
Aps digitarmos o modelo e o compilarmos, geraremos o 1o quadro (Figura 1.18). Logo aps utilizaremos o quadro de pivoteamento e decidiremos qual varivel entra e qual varivel sai da base (gura 1.10) e analisamos o novo quadro (gura 1.19), decidimos qual varivel entra e qual varivel. Analisando o 3o quadro (gura 1.20 observamos que se a varivel SLK 2 entrar na base encontraremos uma soluo melhor ( cj < 0), mas os coecientes das restries so negativos, portando nenhuma varivel pode entrar na base, portanto este problema no tem soluo.
nal que satisfaa s exigncias mnimas dos animais em termos de nutrientes. A composio e as exigncias esto apresentadas no quadro abaixo:
Nutrientes
1 2 3 4
Rao 1
30 20 25 25 1.00
Custo/Kg
seguintes questes:
O objetivo conseguir uma mistura de mnimo custo. Para este exemplo responderemos as
1) Qual o intervalo de estabilidade para o custo da primeira rao? 2) Qual o desconto, em reais, no preo segunda rao a partir do qual seu uso interessante? 3) Qual o preo mximo da terceira rao que no altera a quantidade tima encontrada? 4) Se a exigncia do nutriente 1 passasse de 6 para 7 Kg em cada 100 Kg de mistura, qual a variao de preo que ocorreria? 5) Para cada diminuio de 1 Kg de nutriente 4 na mistura, o custo desta cai em R$ 3,05. Essa informao vale at para quantos quilos diminudos? 6) Suponha que o pecuarista pudesse usar um quarto tipo de rao ao custo de R$ 1,10/Kg, e que essa rao tivesse 25% de cada nutriente. Valeria a pena usar esse tipo de rao? Para responder estas questes primeiramente vamos modelar este PPL:
min s.a
+ + + + + ,
+ + + + + ,
6 4 4 6 0
O modelo LINDO para este PPL apresentado na gura 1.21. Depois de digitado o modelo, vamos compil-lo (CT RL+E ) e depois resolv-lo (CT RL+S ), mas desta vez vamos responder sim a pergunta DO RANGE(SENSITIVITY)ANALYSIS?, ou seja, vamos fazer a anlise de sensibilidade deste PPL. A janela REPORTS WINDOW mostrar a tela mostrada na gura 1.22 e a partir desta janela que responderemos as perguntas para este PPL. 1) Para responder esta pergunta vamos analisar o campo OBJ COEFICIENT RANGES da janela REPORTS WINDOW. O campo "OBJ COEFICIENT RANGES"nos apresenta os subcampos
ALLOWABLE INCREASE E ALLOWABLE DECREASE que se referem ao quanto o custo pode aumentar ou pode diminuir para que os valores timos de cada rao permaneam o mesmo, respectivamente. Ento para o nosso exemplo vamos analisar a varivel x1 , a qual se refere Rao 1. Podemos observar que o custo desta rao pode aumentar at R$0.117857 e diminuir em at R$0.187500 que a quantidade tima da rao continuar a mesma. Ou seja:
c4 - z4 z4 = (cB )t y4 y4 = B 1 a4
A matriz B 1 pode ser encontrada atravs do TABLEAU nal do PPL. Ento pressionamos as teclas ALT + 7 para aparecer o TABLEAU na janela REPORTS WINDOW, a matriz B 1 se encontra abaixo das variveis de folga e como no nosso PPL todas as restries so de ento devemos multiplicar cada coluna da matriz por -1. Portanto temos que: 2.63 0 0 0.30 0.32 1 0 0.20 B 1 = 0.26 0 1 0.25 4.21 0 0 1.05 Portanto, temos que: 2.63 0 0 0.32 1 0 y4 = 0.26 0 1 4.21 0 0 Da,
z4 =
1.30
Portanto,
Bibliograa
[1] M. C .Goldbarg e H. P. L. Luna. Otimizao Combinatria e Programao Linear: Modelos e Algoritmos. Editora Campus, Rio de Janeiro, 2000. [2] Helmut Kopka and Patrick W. Dale. A Guide to LATEX. Addison-Wesley, Harlow, England, 3rd edition, 1999. [3] Gerson Lachtermacher. Pesquisa Operacional na Tomada de Decises. Editora Campus, Rio de Janeiro, 2002. [4] Lindo Systems Inc., Chicago. LINDO: User's Manual, 1996.
16