Escolar Documentos
Profissional Documentos
Cultura Documentos
Manual Lingo
Manual Lingo
MANUAL DE REFERNCIA
DEPARTAMENTO DE COMPUTAO
UNIVERSIDADE FEDERAL DE OURO PRETO
JANEIRO DE 2004
Contedo
1 LINGO
1.1
O que o LINGO? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2
1.2.1
. . . . . . . . . . . . . .
1.2.2
1.2.3
1.2.4
Problema da Mochila . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
1.2.5
13
Bibliograa
17
Lista de Figuras
1.1
1.2
1.3
1.4
1.5
1.6
1.7
10
1.8
11
1.9
11
15
15
16
ii
. . . . . . . . . . . . . . . . . . .
Captulo 1
LINGO
1.1 O que o LINGO?
O LINGO uma ferramenta simples para utilizar o poder da otimizao linear ou no-linear para
formular problemas grandes concisamente, resolv-los e analisar a soluo.
Neste curso aprenderemos algumas noes bsicas de utilizao deste poderoso software, trabalheremos com modelos simples e modelos comlexos, onde a leitura dos dados poder ser feita
diretamente no LINGO ou num arquivo do bloco de notas e at mesmo em uma planilha do Excel.
min
s.a
x1
8x1
+
+
x2 +
x3 +
4x2 + 2x3
x2 + 2x3 +
xi 0, i=1,. . . ,4 e xj Z +
x4
3x4
500
350
min
s.a
n
X
j=1
n
X
cj xj
aij xj bi i = 1, 2
j=1
xj 0 , j = 1, . . . , 4 e xj Z +
1
x1
2
x2
8 4 2 0
500
onde: n=4; c=
3 ; a= 0 1 2 3 ; b= 350 e x= x3 .
2
x4
Para este exemplo, usaremos uma modelagem simples, parecida muito com a modelagem uti
Observao:
1. Caso queira fazer algum comentrio basta digitar "!"seguido do comentrio.
2. Voc pode dar nome s linhas das restries, para isto, basta digitar o nome da restrio
entre colchetes. Ex.: [Rest1]
Tabela de tipos de variveis do LINGO
COMANDO
@GIN(VAR)
@BIN(VAR)
@FREE(VAR)
@BND(LI,VAR,LS)
EXPLICAO
usado para designar variveis inteiras
usado para designar variveis binrias
usado para designar que a varivel livre
usado para designar os valores pelos quais a varivel VAR
limitada inferiormente e superiormente. Aqui temos que LI
valor mnimo da varivel e LS o valor mximo, ou seja,
LI VAR LS.
restries do tipo . No nosso exemplo podemos observar que temos uma folga de 4 unidades na
Meios de Comunicao \
Itens
Custo de uma unidade
de propaganda
no de fregueses em potencial alcnados por
unidade de propaganda
no de fregueses do sexo
feminino alcanados
por unidade de propaganda
TV
Horrio Horrio
Comum Nobre
Rdio
Revistas
40.000
75.000
30.000
15.000
400.000
900.000
500.000
200.000
300.000
400.000
200.000
100.000
A empresa que encomendou a campanha no quer gastar mais que $800.000 com propaganda.
Alm disso, requer:
a) que pelo menos 2 milhes de pessoas alcanadas sejam do sexo feminino;
b) que a propaganda vinculada pela TV seja limitada a um custo de $500.000;
c) que pelo menos 3 unidades de propaganda sejam vinculadas no horrio comum e pelo menos 2
durante horrio nobre;
d) que o nmero de unidades de propaganda no rdio e na revista que individualmente entre 5
e 10.
A modelagem para este PPL apresentada a seguir:
max
s.a
400.000x1 + 900.000x2 +
40.000x1 +
75.000x2 +
300.000x1 + 400.000x2 +
40.000x1 +
75.000x2
x1 3 ;
x2 2 ;
xj 0, j =1,. . . ,4 e xj Z +
500.000x3
30.000x3
200.000x3
+
+
+
200.000x4
15.000x4
100.000x4
5 x3 10
5 x4 10
800.000
2.000.000
500.000
max
s.a
n
X
j=1
n
X
j=1
n
X
cj xj
aij xj bi i = 1, 2
dj xj 2.000.000
j=1
x1 3 ; x2 2 ; 5 x3 10 ; 5 x4 10
xj 0 , j = 1, . . . , 4 e xj Z +
400.000
900.000
onde: n=4; c=
; b=
d=
500.000 ; a= 40.000 75.000
0
0
500.000
200.000
x1
x2
e x=
x3 .
x4
Para modelarmos este PPL no LINGO, usaremos uma forma diferente da proposta no
300.000
400.000
200.000
100.000
exem-
plo anterior. Usaremos neste problema o conceito de SETS (grupos de objetos relacionados) que
normalmente so utilizados em problemas de grande porte. Em um modelo LINGO, uma seo
SETS denida da seguinte forma:
SETS:
setname [/ member_list /] [: variable_list];
ENDSETS
onde:
setname o nome que voc escolhe para designar o grupo de objetos.
[/member_list/] lista de membros que constituem o grupo de objetos.
Tabela de exemplos
Lista de Membros
na forma implcita
1..n
StringM..StringN
dayM..dayN
monthM..monthN
monthYearM..monthYearN
1, 2, 3, 4, 5
TR3, TR4,. . . ,TR204
MON,TUE,WED,THU,FRI
OCT, NOV,DEC,JAN
OCT2001,NOV2001,DEC2001
[:variable_list] lista de variveis (ou constantes) que tem as mesmas caractersticas do grupo
de objetos. Quando h mais de uma varivel (ou constante), elas devem ser separadas por vrgula.
Observao: os colchetes indicam que essas informaes so opcionais.
Exemplo:
v1 / 1..4 /: x, C, D ;
Neste exemplo estamos denindo um grupo de objetos com nome v1, cujos membros so 1, 2,
3 e 4. x, C e D so variveis (ou constantes) que tm esses membros em seu domnio de denio
(x(1),. . . ,x(4),C(1),. . . ,C(4),D(1),. . . ,D(4)).
Um grupo de objetos tambm pode ser derivado de outros grupos, como o caso do exemplo
abaixo, onde temos o grupo Matriz que depende dos grupos v1 e v2 e A uma constante (no
caso, uma matriz) que tem como domnio o conjunto dos membros dos grupos anteriores(A(1,1),
A(1,2),. . . ).
matriz(v2, v1): A;
Observao: Um SET pode ser entendido, fazendo uma analogia com a linguagem PASCAL,
como uma estrutura de dados do tipo vetor (SETS simples) ou matriz (SETS derivado), onde cada
posio um membro do grupo de objetos.
Tambm usaremos os comando @SUM e @FOR, que so utilizados em conjunto com os grupos
de objetos denidos na seo SETS. @SUM utilizado para calcular um somatrio e @FOR um
comando de repetio.
Usaremos tambm a seo DATA para ler os valores das constantes denidas na seo SETS.
Exemplos dos comandos @FOR e @SUM e da seo DATA so mostrados na gura 1.6, onde
apresentado a modelagem LINGO para este PPL.
Vale notar que as variveis x1 e x2 so limitadas apenas inferiormente. Neste caso, o limite
superior representado por um nmero arbitrariamente grande, por exemplo, 1E19 (1 1019 ).
Para resolver o problema procede-se da mesma forma do exemplo da seo 1.2.1.
anual de 32%.
ALTERNATIVA 3: Comprar Obrigaes do Tesouro, cujo preo unitrio $1,50 e cuja rentabilidade anual de 8%.
Supondo que o investidor no desaja adquirir mais do que 1.750 aes e/ou letras de cmbio;
que seu corretor s possa conseguir at 1.000 aes e 1.500 letras de cmbio; que o investidor
queira - por medida de segurana quanto liquidez - deixar, pelo menos, $2.000 no banco; que o
investimento feito em obrigaes do Tesouro no ultrapasse 1,7 vezes o depsito deixado no banco,
que quantidades o investidor deve alocar a cada alternativa, considerando que o seu objetivo
maximizar o seu capital no m do ano? Formule um modelo de Programao Linear para responder
esta pergunta.
A modelagem para este PPL apresentada a seguir:
max
s.a
6, 62x1
4, 50x1
+
+
3, 96x2
3, 00x2
+
+
1, 62x3
1, 50x3
+
+
2, 12x1
x1
x1
+
+
0, 96x2
x2
0, 12x3
4, 05x3
x2
7, 65x1 + 5, 10x2
xj 0, j =1,. . . ,4
1, 06x4
x4
x4
0, 06x4
18.000
2.000
0
1.750
1.000
1.500
30.600
Onde x4 total deixado no banco e xj nmero de opes do tipo j=(1: aes; 2: letras de
cmbio; 3: obrigaes do tesouro).
Outra forma de representar o modelo de deciso deste problema :
max
s.a
n
X
j=1
n
X
j=1
n
X
j=1
n
X
cj xj
aj xj = 18.000
bj xj 0
dij xj ei i = 1, 2
j=1
6, 62
4, 50
3, 96
3, 00
onde: n=4; c=
1, 62 ; a= 1, 50
1, 06
1, 00
x1
x2
e x=
x3 .
x4
2, 12
1
1
0 0
1.750
; b= 0, 96 ; d=
;
e=
0, 12
7, 65 5, 1 4, 05 0
30.600
0, 06
A diferena da modelagem deste PPL para os anteriores, reside no fato de que aqui os parmetros so lidos atravs do comando DATA em um arquivo de texto j previamente digitado. Utiliza-se
para isto o comando @FILE(`nome do arquivo'). O nome do arquivo deve estar entre aspas simples
e estar no diretrio onde foi salvo o modelo. Caso contrrio, dever ser informado o caminho completo onde o mesmo se encontra (ex.: c=@FILE(`C:\LINGO\SAMPLES\teste.txt'). Os valores
nestes arquivos devem ser digitados um em cada linha.
Na gura 1.7 apresentado a modelagem LINGO para este PPL usando este comando.
max
n
X
i=1
n
X
s.a
pi xi
wi xi b
i=1
xj {0, 1} i = 1, ..., n
Para este problema da mochila vamos considerar a seguinte tabela de dados:
Objeto(xi )
Peso (wi ) (em kg)
Importncia (pi )
01
2
7
02
3
4
03
4
4
04
5
6
05
1
2
06
5
3
07
4
7
08
2
3
09
3
2
10
7
8
Objeto(xi )
Peso (wi ) (em kg)
Importncia (pi )
11
3
4
12
4
2
13
8
9
14
9
8
15
2
3
16
4
5
17
5
6
18
5
7
19
6
7
20
9
9
Objeto(xi )
Peso (wi ) (em kg)
Importncia (pi )
21
1
1
22
2
3
23
5
5
24
4
3
25
3
2
26
7
6
27
9
8
28
2
3
29
4
3
30
3
1
Objeto(xi )
Peso (wi ) (em kg)
Importncia (pi )
31
9
4
32
8
7
33
7
9
34
6
7
35
5
7
36
4
7
37
3
5
38
2
3
39
1
2
40
5
2
Objeto(xi )
Peso (wi ) (em kg)
Importncia (pi )
41
2
2
42
3
4
43
4
5
44
5
6
45
1
1
46
5
8
47
4
9
48
2
5
49
3
5
50
7
8
Custo de Aquisio
(em R$)
10
20
16
Custo de Produo
(em R$)
8
20
10
A fbrica da Companhia Coelho S.A. tem trs departamentos. O requisito de tempo em minutos
que cada componente consome em cada departamento est resumido na tabela a seguir. O tempo
disponvel na companhia para cada componente est listado na ltima linha.
Componente
Corpo
Base
Blindagem
Disponibilidade
Tempo de Preparao
(em minutos)
2
5
4
49200
Tempo de molde
(em minutos)
4
2
5
49200
Tempo de fabricao
(em minutos)
2
4
5
49200
O modelo de deciso do problema dado abaixo, onde xij representa a quantidade de componentes i=(1=se o componente for o Corpo, 2=se o componente for a Base e 3=se o componente
for a Blindagem) a serem utilizados no modo j = (A=se o componente for adquirido e F=Se o
componente for fabricado).
min
s.a
8x1F
2x1F
4x1F
2x1F
x1F
+
+
+
+
20x2F
5x2F
2x2F
4x2F
+
+
+
+
10x3F
4x3F
5x3F
5x3F
10x1A
x1F
x2F
20x2A
x2A
x2A
x1A
min
s.a
n
X
j=1
n
X
j=1
n
X
j=1
16x3A
x1A
x2F
x3F
x3F
cj xj
aij xj 49.200 i = 1, 2, 3
dij xj 6.100 i = 1, 2, 3
xj 0 , j = 1, . . . , 6
+
,
x3A
x3A
49200
49200
49200
6100
6100
6100
0
8
20
2 5 4 0 0 0
1 0 0
10
; a= 4 2 5 0 0 0 ; d= 0 1 0
onde: n=6; c=
10
2 4 5 0 0 0
0 0 1
20
16
Para efeito de clculo, estamos adotando que x1F =x1 , x2F =x2 ,
x1
x2
e x= x3 .
x4
x5
x6
x1A =x4 , x2A =x5 e
1
0
0
0
1
0
0
0
1
x3F =x3 ,
x3A =x6 .
O modelo LINGO para este PPL apresentado na gura 1.11.
A diferena deste modelo para os outros est no fato de estarmos lendo as constantes da
seo SETS atravs de uma planilha do Excel e depois exportando o resultado para a mesma,
utilizando a seo DATA. Tanto a leitura quanto a exportao dos dados para a planilha feita
atravs do comando @OLE(`nomearq.xls',`nome do conjunto de clulas'). Para a utilizao de uma
planilha do Excel, devemos denir um nome para cada conjunto de clulas referenciadas no modelo.
Considerando a planilha apresentada na gura 1.12, temos os seguintes conjuntos de clulas com
seus respectivos nomes:
Conjunto de clulas
B3 a G3
I5 a I7
I8 a I10
C16
B5 a G7
B8 a G10
B14 a G14
Nome
custo
Coef1
Coef2
FO
Rest1
Rest2
x
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. LINGO: the modeling language and optmizer, 2001.
17