Documentos de Académico
Documentos de Profesional
Documentos de Cultura
MÉTODO MOTAD
Piracicaba
Estado de São Paulo
Setembro de 2002
SUMÁRIO
página
O GAMS é um programa que resolve modelos de programação linear, não linear, inteira e
inteira mista utilizando teoria de banco de dados e relações com programação matemática e tenta
fundir estas idéias para atender as necessidades dos modelos estratégicos. Os princípios seguintes
são usados nos projetos:
• Algoritmo: Algoritmo é uma seqüência lógica e geral de regras e operações bem
definidas cada passo a ser realizado pelo modelo para otimização com numero finito
de etapas.
• Métodos: permite a solução de problemas de programação linear, não linear, mista,
inteira e outras, sem requerer mudanças em modelos existentes.
Onde :
• A to Z alfabeto a to z alfabeto
• 0 to 9 números
• * asterisco função multiplicador
• @ marca um ponto
• ; ponto e vírgula (semicolon) encerra linhas de comando
• - menos
• ( ) parênteses
• $ dollar, marca uma comparação
• + mais
Alguns caracteres são de uso exclusivo do GAMS não podendo serem utilizados no modelo
com qualquer outra função. O único lugar onde qualquer caráter é legal é em um comentário, o
qual não é considerado como comando pelo GAMS. A pontuação não deve ser usada no modelo,
mas pode ser usado livremente em comentários. Os principais caracteres exclusivos são listados
a seguir:
Abort Acronym table Alias Else Sos1 All
And Assign binary Card Putpage Using Diag
Display Eps Eq Equation For Sos2 X
Ge no inf Integer until variable Le
Loop table maximizing minimizing Semicont files Model
Models na Ne negative then solve Not
Option options or Ord while system File
Parameters Positive prod sameas semiint xor Scalar
Scalars Set Sets smax free if Repeat
No GAMS para definir o domínio de uma variável, isto é, se ela apresentava valores
positivos, negativos ou é livre apresentando tanto valores positivos como negativos, utiliza-se das
seguintes atribuições na montagem do modelo:
Exemplo:
Pode-se dizer então que uma restrição atuante é aquela que apresenta folga nula utilizando
todo recurso disponível, o que implica em preço sombra, isto é, o quanto alteraria a solução ótima
com o acréscimo de uma unidade no RHS da inequação. E uma restrição não atuante , apresenta
folga e não possui preço sombra.
No GAMS são permitidas linhas em branco, porém ao final de comando é necessário
colocar ; (ponto e vírgula), caso contrário o programa não entenderá o comando e não aceitará o
modelo. Qualquer linha que comece com um asterisco (*) é desconsiderada pelo compilador do
GAMS. Os nomes dados no modelo devem começar com uma letra e ter no máximo 9 letras.
2.1 ESTRUTURA DE UM MODELO DE GAMS
Para aprendermos a utilizar o GAMS serão dados 2 exemplos, onde a complexidade será
incrementada para cada modelo.
EXEMPLO 1
Para aprendermos com o inserir e rodar um modelo no GAMS, utilizaremos o exemplo da
apostila onde um agricultor dispõe de 150 ha de terra e uma vazão de 97 L s-1 equivalente
260 dm.ha. Pretende-se neste exemplo cultivar as culturas A e B, tendo disponíveis
$ 490.000,00. No mês de agosto ocorre a maior demanda de água pelas culturas, sendo
1.600 m hora para a cultura A e 2.000 m3 hora-1 para a cultura B, equivalentes a 1,6 dm.ha e
3 -1
Como resolver?
Primeiro deve-se transformar-se estas informações em inequações apropriadas para
solução em programação linear, resultando em:
Sujeito as restrições:
Terra) X1 + X2 ≤ 150
Agua) 1,6 X1 + 2,0 X2 ≤ 260
Capital) 3000 X1 + 3500 X2 ≤ 490000
X1 ≥0 e X2 ≥0
Note que este exemplo simples revela algumas práticas consideradas bons hábitos.
Primeiro, todas as entidades do modelo são identificado (e agrupadas) através de tipo. Segundo,
utilizamos símbolos diferentes para cada grupo. Terceiro, são especificadas as unidades de todas
as entidades.
Para montar a estrutura do modelo, deve-se declarar no GAMS quais são os fatores que
ele usará, para isto determina-se o SET (conjunto de informações sobre índices e dados do
modelo) logo no início do modelo, para nosso exemplo será informado para o GAMS que
teremos 2 culturas na tomada de decisão sendo uma denominada A e a outra denominada B:
SET
i culturas /A,B/;
Neste exemplo utilizaremos a entrada de dados por lista, onde declara-se o parâmetro
inicialmente e depois seus valores correspondentes:
VARIABLES
Z lucro
X(I) area cultivada
EQUATIONS
LUCRO
TERRA
AGUA
CAPITAL;
No quadro a seguir tem-se a entrada real de dados deste exemplo no GAMS, onde o
modelo é nomeado como ex1 e utilizado o solver PL.
SET
I culturas /A,B/;
PARAMETERS
R(I) receita liquida da cultura i
/ A 3500
B 3700 /
VARIABLES
Z lucro
X(I) area cultivada;
EQUATIONS
LUCRO
TERRA
AGUA
CAPITAL;
No quadro seguinte tem-se a saída deste modelo EX1 no GAMS, neste texto é repetido a
entrada de dados, formuladas as equações com os parâmetros fornecidos, e realizado a otimização
requerida. Os resultados são mostrados como este retirado do texto de saída, ele indica que
utilizou-se toda a terra disponível (150 ha) e o custo marginal dela é de $ 2.700, 00; o que
significa que a cada unidade de terra que forneçamos a mais representa um aumento do lucro em
$ 2.700,00 o que indica uma restrição atuante. O mesmo ocorre com a água com um custo
marginal de $ 500,00. Já o capital não foi uma restrição atuante foi utilizou-se $475.000,00
deixando uma folga de $15.000,00, isto indica que se o valor do capital fosse superior a esta não
alteraria a resolução, portanto não apresenta custo marginal (ou preço sombra).
LOWER LEVEL UPPER MARGINAL
EQU LUCRO . . . 1.000
---- EQU TERRA -INF 150.000 150.000 2700.000
---- EQU AGUA -INF 260.000 260.000 500.000
---- EQU CAPITAL -INF 4.7500E+5 4.9000E+5 .
1 SET
2 I culturas /A,B/;
3
4 PARAMETERS
5 R(I) receita liquida da cultura i
6 / A 3500
7 B 3700 /
8
9 C(I) consumo de agua pela cultura i
10 / A 1.6
11 B 2.0 /
12
13 P(I) custo de producao da cultura i
14 / A 3000
15 B 3500 /;
16
17
18 VARIABLES
19 Z lucro
20 X(I) area cultivada;
21
22 EQUATIONS
23 LUCRO
24 TERRA
25 AGUA
26 CAPITAL;
27
28 LUCRO .. Z =E= SUM(I,(R(I)* X(I)));
29 TERRA .. SUM(I,X(I)) =L= 150;
30 AGUA .. SUM(I,(C(I)*X(I))) =L= 260;
31 CAPITAL .. SUM(I,(P(I)*X(I))) =L= 490000;
32 MODEL EX1 /ALL/;
33
34 SOLVE EX1 USING LP MAXIMIZING Z;
X(B)
(.LO, .L, .UP = -INF, 0, +INF)
-3700 LUCRO
1 TERRA
2 AGUA
3500 CAPITAL
MODEL STATISTICS
BLOCKS OF EQUATIONS 4 SINGLE EQUATIONS 4
BLOCKS OF VARIABLES 2 SINGLE VARIABLES 3
NON ZERO ELEMENTS 9
SOLVE SUMMARY
Sujeito as restrições:
TERRA) X1 + X2 + X3 + X4 ≤ 200
TRABALHO) 25X1 + 36X2 + 27X3 + 87X4 ≤ 10000
ROTACAO) -1X1 + 1X2 –1X3 + 1 X4 ≤ 0
SETS
J atividades /1*4/
PARAMETERS
VARIABLES
X(J) quantidade produto j
Z lucro total;
POSITIVE VARIABLE X;
EQUATIONS
MARGEMBRUTA
AREA
ROTACAO
TRABALHO ;
1 SETS
2 J atividades /1*4/
3 I anos /1*6/;
4
5 PARAMETERS
6
7 M(J) margem bruta media
8 /1 253
9 2 443
10 3 284
11 4 516/
12
13 T(J) horas de trabalho
14 /1 25
15 2 36
16 3 27
17 4 87/
18
19 C(J) rotacao das culturas
20 /1 -1
21 2 1
22 3 -1
23 4 1/;
24
25
26 VARIABLES
27 X(J) quantidade produto j
28 Z lucro total;
29
30 POSITIVE VARIABLE X;
31
32 EQUATIONS
33 MARGEMBRUTA
34 AREA
35 ROTACAO
36 TRABALHO ;
37
38 MARGEMBRUTA .. Z =E= SUM(J, M(J)*X(J));
39 AREA .. SUM(J, X(J)) =L= 200;
40 ROTACAO..SUM(J,(C(J)*X(J))) =L= 0;
41 TRABALHO .. SUM(J,(T(J)*X(J))) =L= 10000;
42
43
44 MODEL EXE2 /ALL/;
45
(LHS = 0)
X(1)
(.LO, .L, .UP = 0, 0, +INF)
-253 MARGEMBRUTA
1 AREA
-1 ROTACAO
25 TRABALHO
X(2)
(.LO, .L, .UP = 0, 0, +INF)
-443 MARGEMBRUTA
1 AREA
1 ROTACAO
36 TRABALHO
X(3)
(.LO, .L, .UP = 0, 0, +INF)
-284 MARGEMBRUTA
1 AREA
-1 ROTACAO
27 TRABALHO
MODEL STATISTICS
BLOCKS OF EQUATIONS 4 SINGLE EQUATIONS 4
BLOCKS OF VARIABLES 2 SINGLE VARIABLES 5
NON ZERO ELEMENTS 17
Para incluir risco neste exemplo utilizaremos a entrada de dados por tabelas, onde forma-
se um par ordenado entrando-se primeiramente o índice que representa as colunas e como
segundo fator o índice que representa as linhas. Outra modificação é necessária para utilização
deste método, a antiga função objetivo das margens brutas torna-se agora uma restrição a ser
parametrizada e a nova função objetivo é minimizar os desvios anuais, para tanto tem-se a novas
inequações:
Deseja-se minimizar o desvio , então a função :
Min Y = D1 + D2 + D3 + D4 + D5 + D6
Sujeito as restrições:
MARGEMBRUTA) 253X1 + 443X2 + 284X3 + 516X4 = λ
TERRA) X1 + X2 + X3 + X4 ≤ 200
TRABALHO) 25X1 + 36X2 + 27X3 + 87X4 ≤ 10000
ROTACAO) -1X1 + 1X2 –1X3 + 1 X4 ≤ 0
Sendo o índice J referente as atividades e utilizando agora o índice I para os anos, tem-se
então:
M(J) = margem bruta média da atividade J em $ ha-1
T(J) horas de trabalho da atividade J em horas ha-1
C(J) rotação da atividade J sem unidade
TABLE R(I,J) margem bruta simulada das culturas em $ ha-1
Estes desvios são a diferença da margem bruta do ano I e a média de margem bruta para cada
ano e para cada atividade. Note-se que agora obteremos duas respostas, sendo o desvio mínimo e
a distribuição das atividades para este desvio, em função da margem bruta esperada (λ) podendo-
se assim simular para diversas margens brutas esperadas (λ) e obtermos um gráfico com a
margem bruta esperada versus o desvio anual como mostrado a seguir.
80000
margem bruta esperada em $ ha-¹
75000
70000
65000
60000
55000
50000
0 5000 10000 15000 20000 25000 30000 35000 40000 45000
desvios anuais em $ ha-¹
PARAMETERS
M(J) margem bruta media
/1 253
2 443
3 284
4 516/
VARIABLES
X(J) quantidade produto j
D1(I) desvios anuais negativos
D2(I) desvios anuais positivos
Y desviototal;
EQUATIONS
DESVIOT
MARGEMBRUTA
AREA
ROTACAO
TRABALHO
DESVIO(I) ;
1 SETS
2 J atividades /1*4/
3 I anos /1*6/;
4
5 PARAMETERS
6
7 M(J) margem bruta media
8 /1 253
9 2 443
10 3 284
11 4 516/
12
13 T(J) horas de trabalho
14 /1 25
15 2 36
16 3 27
17 4 87/
18
19 C(J) rotacao das culturas
20 /1 -1
21 2 1
22 3 -1
23 4 1/;
24
25 TABLE R(I,J) margem bruta simulada das culturas
26 1 2 3 4
27 1 39 -570 136 63
28 2 -74 117 -97 123
29 3 -138 205 82 -137
30 4 -6 101 -35 408
31 5 173 -261 38 -510
32 6 6 408 -124 53;
33
34 VARIABLES
35 X(J) quantidade produto j
36 D1(I) desvios anuais negativos
37 D2(I) desvios anuais positivos
38 Y desviototal;
39
40 POSITIVE VARIABLE X,D1;
41 NEGATIVE VARIABLE D2;
42
43 EQUATIONS
44 DESVIOT
45 MARGEMBRUTA
46 AREA
47 ROTACAO
48 TRABALHO
49 DESVIO(I) ;
50
51 DESVIOT .. Y =E= SUM(I,D1(I));
52 MARGEMBRUTA .. SUM(J, M(J)*X(J)) =E= 62770;
53 AREA .. SUM(J, X(J)) =L= 200;
54 ROTACAO..SUM(J,(C(J)*X(J))) =L= 0;
55 TRABALHO .. SUM(J,(T(J)*X(J))) =L= 10000;
56 DESVIO(I)..SUM(J,(R(I,J)*X(J)))+D1(I) + D2(I) =G= 0;
57
58
59 MODEL EXE2 /ALL/;
60
61 SOLVE EXE2 USING LP MINIMIZING Y;
(LHS = 0)
D1(2)
(.LO, .L, .UP = 0, 0, +INF)
-1 DESVIOT
1 DESVIO(2)
D2(2)
(.LO, .L, .UP = -INF, 0, 0)
1 DESVIO(2)
---- Y desviototal
Y
(.LO, .L, .UP = -INF, 0, +INF)
1 DESVIOT
MODEL STATISTICS
BLOCKS OF EQUATIONS 6 SINGLE EQUATIONS 11
BLOCKS OF VARIABLES 4 SINGLE VARIABLES 17
NON ZERO ELEMENTS 59
SOLVE SUMMARY
MODEL EXE2 OBJECTIVE Y
TYPE LP DIRECTION MINIMIZE
SOLVER XA FROM LINE 61
**** SOLVER STATUS 1 NORMAL COMPLETION
**** MODEL STATUS 1 OPTIMAL
**** OBJECTIVE VALUE 8232.7068
Y desviototal