Você está na página 1de 19

LINDO:

MANUAL DE REFERNCIA

Alosio de Castro Gomes Jnior


Marcone Jamilson Freitas Souza

Projeto patrocinado pelo programa PR-ATIVA da UFOP

DEPARTAMENTO DE COMPUTAO
UNIVERSIDADE FEDERAL DE OURO PRETO
JANEIRO DE 2004

Contedo
1 LINDO
1.1

Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.1.1

O que o LINDO? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.1.2

Sintaxe de um Modelo LINDO . . . . . . . . . . . . . . . . . . . . . . . . .

Exemplos de Modelos LINDO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.2.1

Todas as variveis so no negativas . . . . . . . . . . . . . . . . . . . . . .

1.2.2

Existem variveis inteiras . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.2.3

Existem variveis limitadas superiormente e inferiormente . . . . . . . . . .

1.2.4

Existem variveis binrias . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.2.5

Existem variveis livres . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.3

Utilizando Quadros (TABLEAU) com o LINDO . . . . . . . . . . . . . . . . . . . .

1.4

Anlise de Sensibilidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11

1.2

Bibliograa

16

Lista de Figuras
1.1

Modelo LINDO para o problema da dieta . . . . . . . . . . . . . . . . . . . . . . .

1.2

Soluo para o problema da Dieta . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.3

Modelo LINDO para o problema da fbrica de mveis . . . . . . . . . . . . . . . .

1.4

Forma alternativa do Modelo LINDO para o problema da fbrica de mveis . . . .

1.5

Modelo LINDO para o problema da confeitaria . . . . . . . . . . . . . . . . . . . .

1.6

Modelo LINDO para o problema da defesa antiarea . . . . . . . . . . . . . . . . .

1.7

Modelo LINDO para o PPL usando varivel livre . . . . . . . . . . . . . . . . . . .

1.8

Modelo LINDO para o exemplo 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.9

1o quadro para o exemplo 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.10 Janela de Pivoteamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.11 2o quadro para o exemplo 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.12 3o quadro para o exemplo 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

10

1.13 Modelo LINDO para o exemplo 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . .

10

1.14 1o quadro para o exemplo 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

10

1.15 2o quadro para o exemplo 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

10

1.16 3o quadro para o exemplo 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

10

1.17 Modelo LINDO para o exemplo 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11

1.18 1o quadro para o exemplo 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11

1.19 2o quadro para o exemplo 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11

1.20 3o quadro para o exemplo 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

13

1.21 Modelo LINDO para o PPL dos Nutrientes . . . . . . . . . . . . . . . . . . . . . .

13

1.22 REPORTS WINDOW para o PPL dos Nutrientes . . . . . . . . . . . . . . . . . .

13

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.

1.1.2 Sintaxe de um Modelo LINDO


Um Modelo LINDO dever conter os seguinte itens:

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.

Para nalizar deveremos declarar o comando END.


Observao: As variveis devem ser declaradas com no mximo 8 letras e nas linhas com as
restries deve ser colocado ")"logo aps o nome da restrio.

1.2 Exemplos de Modelos LINDO


1.2.1 Todas as variveis so no negativas
Seja o seguinte 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.

Tabela de Requisitos Nutricionais e Custo dos Alimentos

Alimento/
Vitamina
A
C
D
Custo (R$)

Leite
(l)

Carne
(Kg)

2 mg
50 mg
80 mg
1,20

2 mg
20 mg
70 mg
5,00

Peixe
(Kg)

Salada
(100g)

10 mg
10 mg
10 mg
7,00

20 mg
30 mg
80 mg
1,00

Requisito Nutricional
Mnimo
11 mg
70 mg
250 mg

Modelando o problema, obtemos o seguinte PPL:

min
s.a

1, 20x1
2x1
50x1
80x1
x1

+
+
+
+
,

5, 00x2
2x2
20x2
70x2
x2

+
+
+
+
,

7, 00x3
10x3
10x3
10x3
x3

+
+
+
+
,

1, 00x4
20x4
30x4
80x4
x4

11
70
250
0

O modelo LINDO para este PPL apresentado na gura 1.1.

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.

1.2.2 Existem variveis inteiras


Seja o seguinte problema:

Problema da Fbrica de mveis


Uma grande fbrica de mveis dispe de um estoque de 250m de tbuas, 600m de prancha e
500m de painis de conglomerado. A fbrica normalmente oferece uma linha de mveis composta

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

Tbua
Prancha
Painis

1
0
3
100

Valor de
Revenda (u.m.)

1
1
2
80

1
1
4
120

Disponibilidade
do recurso (m)

4
2
0
20

250
600
500

Modelando o problema, obtemos o seguinte PPL:

max
s.a

100x1
x1

+
+

3x1
x1

+
,

80x2
x2
x2
2x2
x2

+
+
+
+
,

120x3
x3
x3
4x3
x3

+
+
+

20x4
4x4
2x4

x4

250
600
500
0

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].

1.2.3 Existem variveis limitadas superiormente e inferiormente


Seja o seguinte problema:

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.2: Soluo para o problema da Dieta

Figura 1.3: Modelo LINDO para o problema da fbrica de mveis

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.

Figura 1.5: Modelo LINDO para o problema da confeitaria

1.2.4 Existem variveis binrias


Seja o seguinte problema:

Problema do Sistema de Defesa Antiarea

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

Valor da
neutralizao (vj )
30
30
35
35
30
30
35
35

Modelando o problema obteremos o seguinte PPL:

max

m
X
j=1

s.a

m
X

n
n
X
X
vj (
xij
cij xij )
i=1

i=1

xij 1, i = 1, ..., n

j=1
n
X

xij
i=1
n X
m
X

1, j = 1, ..., m

xij = k

i=1 j=1

(ri dij )xij 0, i = 1, ..., n; j = 1, ..., k, ..., m


Considerando os dados da tabela dada e sendo k = m n = 2 (nmero de alvos possveis),
obtemos o modelo LINDO mostrado na gura 1.6. H neste modelo oito variveis binrias. Para
declar-las no LINDO, devemos acrescentar aps o comando END o comando INT <nome de cada
varivel> em cada linha ou simplesmente, INT <nmero de variveis>.

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

formulao matemtica acima sem simplicao.

1.2.5 Existem variveis livres


Consideremos o seguinte PPL:

min
s.a

5x1
x1
x1
x1

+
+

x2
x2
x2

qq.

x2

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.

Figura 1.7: Modelo LINDO para o PPL usando varivel livre

1.3 Utilizando Quadros (TABLEAU) com o LINDO


Para resolvermos PPL's utilizando quadros do SIMPLEX (tableaus) no LINDO devemos proceder
da maneira que se segue, levando em considerao as seguintes teclas de atalho:

Comando

Compilar (Compile Model)


Fazer Pivoteameneo (Pivot)
Exibir quadro (Tableau)

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

5x1
3x1
5x1
x1

+
+
,

3x2
5x2
2x2
x2

15
10
0

O modelo LINDO relativo esse PPL apresentado na gura 1.8.

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:

y = (0, 3) + (1 )(1.052, 2.368), onde [0, 1]

Exemplo 3:
min
s.a

2x1
x1
0.5x1
x1

+
+
,

2x2
x2
x2
x2

1
2
0

Figura 1.8: Modelo LINDO para o exemplo 1

Figura 1.9: 1o quadro para o exemplo 1

Figura 1.10: Janela de Pivoteamento

Figura 1.11: 2o quadro para o exemplo 1

Figura 1.12: 3o quadro para o exemplo 1

Figura 1.13: Modelo LINDO para o exemplo 2

Figura 1.14: 1o quadro para o exemplo 2

Figura 1.15: 2o quadro para o exemplo 2

Figura 1.16: 3o quadro para o exemplo 2

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.

Figura 1.17: Modelo LINDO para o exemplo 3

Figura 1.18: 1o quadro para o exemplo 3

Figura 1.19: 2o quadro para o exemplo 3

1.4 Anlise de Sensibilidade


Para utilizarmos a anlise de sensibilidade no LINDO, tomaremos o seguinte exemplo:
Um pecuarista tem disponveis trs tipos de rao para gado. Cada tipo tem sua composio
em termos de quatro nutrientes. O pecuarista quer misturar essas raes para obter um produto

nal que satisfaa s exigncias mnimas dos animais em termos de nutrientes. A composio e as
exigncias esto apresentadas no quadro abaixo:

Nutrientes

Rao 1

1
2
3
4

30
20
25
25
1.00

Custo/Kg

% por Kg
Rao 2 Rao 3
25
30
15
30
1.20

10
20
30
40
1.30

Exigncia mnima
em Kg por saco
de 100 Kg
6
4
4
6

O objetivo conseguir uma mistura de mnimo custo. Para este exemplo responderemos as
seguintes questes:
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

x1
0.30x1
0.20x1
0.25x1
0.25x1
x1

+
+
+
+
+
,

1.20x2
0.25x2
0.30x2
0.15x2
0.30x2
x2

+
+
+
+
+
,

1.30x3
0.10x3
0.20x3
0.30x3
0.40x3
x3

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

Figura 1.20: 3o quadro para o exemplo 3

Figura 1.21: Modelo LINDO para o PPL dos Nutrientes

Figura 1.22: REPORTS WINDOW para o PPL dos Nutrientes

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:

c1 0.18 c1 c1 + 0.11 0.82 c1 1.11


2) Para responder a 2a pergunta, vamos analisar a varivel x2 no campo REDUCED COST ou
ento o campo ALLOWABLE DECREASE desta varivel, onde apresentado o valor para o
qual o uso desta rao interessante. Para o nosso exemplo temos que o valor para o desconto
deve ser de R$0.09 de forma que o uso da Rao 2 seja interessante.
3) Para encontrar o preo mximo da 3a rao que no altera a quantidade tima encontrada,
devemos analisar o campo ALLOWABLE DECREASE da varivel x3 , l encontramos o valor
0.3000, portanto o preo mximo da rao 3 deve ser de R$1.60 para a que quantidade tima
permanea o mesmo.
4) Esta pergunta ser respondida atravs da anlise do campo DUAL PRICE referente restrio
que envolve o nutriente 1, que neste caso a restrio N1. L encontramos o valor -0.789474,
que corresponde ao valor que ser acrescido (ou diminudo) ao custo total se uma unidade a mais
(ou a menos) do nutriente for exigida. Ento se aumentarmos para 7 a exigncia do nutriente
1 o custo total ser aumentado em R$0.78.
5) Vamos responder esta pergunta utilizando o campo RIGHTHAND SIDE RANGES, que corresponde s restries do PPL, especicamente analisaremos o subcampo ALLOWABLE DECREASE referente ao nutriente 4, ou seja N4, que nos dar o valor que poder ser diminudo
para o qual a quantidade do nutriente continuar a mesma. Portanto, podemos observar que
esta informao vale at para uma diminuio de 1Kg.
6) Para respondermos esta pergunta vamos fazer as seguintes anlises:

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 =

0.30
0.25

0.20
0.25
0.25 0.25
1.05
0.25

0.13
0.065
=

0.015
0.79

0.13
0.065

1
0.015 = 0.96
0.79

1.30

Portanto,

c4 z4 = 1.10 0.96 = 0.14


Como c4 z4 > 0 no vale a pena usar esta rao.

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

Você também pode gostar