Professional Documents
Culture Documents
Contedo
1 LINGO
1.1 1.2 O que o LINGO? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Exemplos de como Modelar usando o LINGO . . . . . . . . . . . . . . . . . . . . . 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 Problema da Otimizao de Padres de Produo . . . . . . . . . . . . . .
1
1 1 1 5 7 12 13
Problema da Agncia de Propaganda . . . . . . . . . . . . . . . . . . . . . . Problema da Carteira de Investimento . . . . . . . . . . . . . . . . . . . . . Problema da Mochila . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Problema da Fbrica de Brinquedos . . . . . . . . . . . . . . . . . . . . . .
Bibliograa
17
Lista de Figuras
1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 Padres de Corte para o exemplo da seo 1.2.1 . . . . . . . . . . . . . . . . . . . . Tela Inicial do LINGO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Modelo LINGO para o exemplo da seo 1.2.1 . . . . . . . . . . . . . . . . . . . . . Janela de Resultados do LINGO . . . . . . . . . . . . . . . . . . . . . . . . . . . . Relatrio de Soluo do LINGO para o Exemplo da seo 1.2.1 . . . . . . . . . . . Modelo LINGO para o exemplo da seo 1.2.2 . . . . . . . . . . . . . . . . . . . . . Modelo LINGO para o exemplo da seo 1.2.3 . . . . . . . . . . . . . . . . . . . . . Janela de Opes de Congurao do LINGO . . . . . . . . . . . . . . . . . . . . . Anlise de Sensibilidade para o exemplo da seo 1.2.3 . . . . . . . . . . . . . . . . 3 3 3 4 8 8 10 11 11 15 15 16
1.10 Modelo LINGO para o exemplo da seo 1.2.4 . . . . . . . . . . . . . . . . . . . . . 1.11 Modelo LINGO para o exemplo da seo 1.2.5 . . . . . . . . . . . . . . . . . . . . . 1.12 Planilha do Excel usada no Exemplo seo 1.2.5 . . . . . . . . . . . . . . . . . . .
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
+ +
x4 3x4
500 350
min
j=1 n
cj xj aij xj bi i = 1, 2 xj 0 , j = 1, . . . , 4 e xj Z +
j=1
s.a
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
lizada pelo LINDO. Primeiramente devemos abrir o LINGO, depois de aberto o LINGO mostrar uma tela em branco, parecida com o da gura 1.2 onde ser digitado o modelo. Um modelo LINGO muito parecido com o LINDO, conforme podemos observar atravs da gura 1.3. Aqui neste modelo estamos declarando a Funo-Objetivo (FO) a qual deve ser minimizada, da o comando MIN. Caso este PPL fosse de maximizao o comando a acompanhar a FO deveria ser o comando MAX. Nas duas linhas abaixo esto sendo declaradas as restries do problema. Note que no nal de cada comando devemos colocar ";". No h necessidade de digitar END ao nal do modelo. As quatro ltimas linhas esto informando ao LINGO que as variveis so do tipo inteiro, o que feito atravs do comando @GIN(nome da varivel). Os tipos de variveis que podem ser usadas com o LINGO so apresentadas na tabela a seguir. Vale lembrar que os nomes das variveis tm que ser iniciados por letras e podem ser seguidos por qualquer caracter alfanumrico.
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
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.
No nosso exemplo todas as variveis so inteiras, da a necessidades da incluso das ltimas quatro linhas ao modelo. Agora s falta resolv-lo, para isto basta clicar no menu "LINGO" e logo em seguida em "SOLVE", ou simplesmente clique no boto "SOLVE" na barra de ferramentas. Se tudo estiver digitado corretamente aparecer uma janela como a mostrada na gura 1.4.
Figura 1.4: Janela de Resultados do LINGO Clique no boto "CLOSE" para fechar esta janela, aparecer na tela uma janela com os resultados do problema obtidos pelo LINGO, conforme pode ser observado na gura 1.5. Em um relatrio de soluo do LINGO voc encontrar uma parte denominada REDUCED COST (custo reduzido) para cada varivel do problema. Ela pode ser interpretada da seguinte maneira: O custo reduzido de uma varivel do tipo real pode ser interpretado como a quantia de penalidade (positiva ou negativa, dependendo do problema) que voc teria que pagar para introduzir uma unidade daquela varivel na soluo. No nosso exemplo, a varivel x2 (caso ela fosse do tipo real) teria como custo reduzido 1, signicando que se diminuirmos uma unidade do coeciente da varivel na FO, seu uso se tornaria interessante. J a coluna SLACK or SURPLUS, indica o excesso em restries do tipo ou a folga em
restries do tipo . No nosso exemplo podemos observar que temos uma folga de 4 unidades na
Rdio
30.000 500.000 200.000
Revistas
15.000 200.000 100.000
400.000 300.000
900.000 400.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
+ + + ;
Onde xj nmero de unidades de propaganda a serem veiculadas no meio de comunicao j=(1: horrio comum na TV; 2: horrio nobre na TV; 3: rdio; 4: revista). Outra forma de representar o modelo de deciso deste problema :
n
max
j=1 n
cj xj aij xj bi i = 1, 2
j=1 n
s.a
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 40.000 75.000 30.000 15.000 800.000 onde: n=4; c= ; b= d= 500.000 ; a= 40.000 75.000 0 0 500.000 200.000 x1 x e x= 2 . 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 de lista de membros de um grupo de objetos Exemplo Membros do grupo 1..5 TR3..TR204 MON..FRI OCT..JAN OCT2001..DEZ2001 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
+ + + +
+ + +
+ +
1, 06x4 x4 x4 0, 06x4
4, 05x3
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 :
n
max
j=1 n
cj xj aj xj = 18.000
j=1 n
s.a
bj xj 0
j=1 n
; e=
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.
Figura 1.7: Modelo LINGO para o exemplo da seo 1.2.3 Para resolv-lo, devemos proceder conforme foi explicado no exemplo da seo 1.2.1. Neste exemplo mostraremos como fazer a anlise de sensibilidade no LINGO. Inicialmente necessrio ativar esta opo. Para tanto, clique no menu LINGO e logo em seguida em OPTIONS. V at a aba GENERAL SOLVER e escolha a opo PRICES & RANGES no campo DUAL
Referncias sobre anlise de sensibilidade so encontradas no captulo referente ao estudo do software LINDO.
max
i=1 n
pi xi wi xi b xj {0, 1} i = 1, ..., n
i=1
s.a
Objeto(xi ) Peso (wi ) (em kg) Importncia (pi ) Objeto(xi ) Peso (wi ) (em kg) Importncia (pi ) Objeto(xi ) Peso (wi ) (em kg) Importncia (pi ) Objeto(xi ) Peso (wi ) (em kg) Importncia (pi ) Objeto(xi ) Peso (wi ) (em kg) Importncia (pi )
01 2 7 11 3 4 21 1 1 31 9 4 41 2 2
02 3 4 12 4 2 22 2 3 32 8 7 42 3 4
03 4 4 13 8 9 23 5 5 33 7 9 43 4 5
04 5 6 14 9 8 24 4 3 34 6 7 44 5 6
05 1 2 15 2 3 25 3 2 35 5 7 45 1 1
06 5 3 16 4 5 26 7 6 36 4 7 46 5 8
07 4 7 17 5 6 27 9 8 37 3 5 47 4 9
08 2 3 18 5 7 28 2 3 38 2 3 48 2 5
09 3 2 19 6 7 29 4 3 39 1 2 49 3 5
10 7 8 20 9 9 30 3 1 40 5 2 50 7 8
Capacidade da mochila (b) = 150 kg A modelagem LINGO deste PPL apresentado na gura 1.10. Aqui podemos observar que a nica diferena que os parmetros usados nos SETS so lidos atravs de arquivos textos com base no comando @FILE(`nome do arquivo') e as solues so geradas em arquivo texto atravs do comando @TEXT(`nome do arquivo'). Para ler os parmetros m e n em um nico arquivo, basta separ-los por til, no caso, 50 150. Notamos que este PPL seria de difcil modelagem usando a forma apresentada no exemplo da seo 1.2.1, da a comodidade da utilizao da seo SETS em problemas deste porte.
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
+ + + +
+ + + +
10x1A
20x2A
16x3A
x2F
min
j=1 n
cj xj aij xj 49.200 i = 1, 2, 3
j=1 n
s.a
dij xj 6.100 i = 1, 2, 3 xj 0 , j = 1, . . . , 6
j=1
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 , x3A =x6 .
O modelo LINGO para este PPL apresentado na gura 1.11.
1 0 0
0 1 0
0 0 1
x3F =x3 ,
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