Vous êtes sur la page 1sur 22

APOSTILA DO USO DO GAMS PARA PROGRAMAÇÃO LINEAR

DETERMINÍSTICA E ESTOCÁSTICA CONSIDERANDO RISCO PELO

MÉTODO MOTAD

Patricia Angélica Alves Marques

Piracicaba
Estado de São Paulo
Setembro de 2002
SUMÁRIO
página

1 CARACTERÍSTICAS DO GAMS .............................................................................................. 3


2 UTILIZANDO O GAMS ............................................................................................................. 4
2.1 ESTRUTURA DE UM MODELO DE GAMS......................................................................... 6
EXEMPLO 1 ................................................................................................................................... 6
EXEMPLO 2 ................................................................................................................................. 12
1 CARACTERÍSTICAS DO GAMS

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.

O problema de otimização é independentemente dos dados que usa. Esta separação de


lógica e dados de um problema, permite que esta seja ser aumentado em tamanho sem causar um
aumento na complexidade da representação. Isto se dá pela representação matricial utilizada no
GAMS, uma forma que pode ser lida facilmente por pessoas e através de computadores.
O sistema de GAMS é projetado de forma que modelos podem ser resolvidos qualquer
tipo de computador. Um modelo desenvolvido em um computador pessoal pequeno pode ser
resolvido depois em qualquer outro. Uma pessoa pode desenvolver um modelo e depois utilizá-
lo para outros fins alternando dados. Não é necessário o uso de nenhum editor especial, o GAMS
oferece uma arquitetura aberta no qual cada usuário pode usar um processador de texto ou digitar
diretamente no programa.
Os arquivos criados no GAMS são salvos com a extensão *.GMS e os arquivos
processados no GAMS, aqueles que trazem os resultados, são salvos com a extensão *.LST.
2 UTILIZANDO O GAMS

Quando pretende-se resolver um problema de programação linear no GAMS, é necessário


criar-se o modelo deste problema e inseri-lo corretamente. Para inserir um modelo no GAMS
deve-se primeiro conhecer a tabela de inequações e de dados do modelo, os quais serão inseridos
de forma algébrica respeitando os seguintes símbolos:

=L=  menor ou igual


=G=  maior ou igual
=E=  igual
SUM  soma

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:

POSITIVE VARIABLE  0 até ∞


NEGATIVE VARIABLE  -∞ até 0
FREE VARIABLE (default) -∞ até ∞
BINARY VARIABLE  0 or 1
INTEGER VARIABLE  0,1,...., 100

As inequações utilizadas no GAMS apresentam em sua estrutura dois lados denominados


LHS e RHS. Quando na solução ótima LHS=RHS, é chamado de restrição atuante, indica que
utilizou-se todo o recurso disponível naquela restrição. Quando diferentes é chamado de
restrição não-atuante.
• LHS (left hand side) onde estão as variáveis endógenas, aquelas que são alteradas durante a
otimização, por exemplo a quantidade de área a ser plantada, entra como incógnita e depois
durante a otimização é assumido o seu valor na resolução.
• RHS (right hand side) onde estão as variáveis exógenas representadas pela constante

Exemplo:

9X1 + 3X 2 + 5X3 ≤ 500


LHS RHS

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

2,0 dm.ha respectivamente. Determinar a ocupação ótima da área, utilizando as informações


contidas na tabela abaixo:

Cultura Rendimento Preço do produto Custo de Receita líquida


esperado( t ha-1) ($ t-1) produção ($ ha-1) ($ ha-1)
A 5 1.300 3.000 3.500
B 6 1.200 3.500 3.700

Como resolver?
Primeiro deve-se transformar-se estas informações em inequações apropriadas para
solução em programação linear, resultando em:

Deseja-se maximizar o lucro, então a função a ser maximizada é:


Max Z = 3.500 X1 + 3.700 X2

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

Onde X1 = área cultivada com A em ha;


X2 = área cultivada com B em ha;
Z= receita líquida total em $.
Para identificar as variáveis envolvidas no modelo o GAMS utiliza-se Índices, no
exemplo tinha-se i culturas, sendo i = culturas  1,2
Baseado nestes índices os valores referentes são indexados no modelo:
R(I) = receita líquida da cultura i em $ ha-1
C(I) = consumo de água pela cultura i em dm ha-1
P(I) = custo de produção da cultura i em $ ha-1

As variáveis de decisão também são indexadas como:


X(I) = quantia área cultivada com a cultura i em ha

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:

R(I) receita líquida da cultura i em $ ha-1


/ A 3500
B 3700 /

C(I) consumo de água pela cultura i em dm ha-1


/ A 1.6
B 2.0 /

P(I) custo de produção da cultura i em $ ha-1


/ A 3000
B 3500 /;
Esta declaração tem vários efeitos. Ela declara a existência de dois parâmetros, lhes dá os
nomes A, C e P, e declara o seu plano de ação i. (determinação sobre a qual a equação é definida,
no exemplo sobre as duas culturas).
A lista de elementos e os valores de parâmetro respectivos devem ser incluídos por partes,
onde os elementos devem ser separados por vírgula ou entrarem em linhas separadas, como no
exemplo. Esta declaração será usada no GAMS para a criação das equações de lucro e as
restrições. Antes de iniciar a declaração das equações deve-se declarar as variáveis usadas nestas
equações, sendo:

VARIABLES
Z lucro
X(I) area cultivada

As equações são declaradas utilizando a simbologia do GAMS vista anteriormente e os


parâmetros já definidos, elas são representadas de forma matricial e indexada quando necessário.
Para nosso exemplo:

EQUATIONS
LUCRO
TERRA
AGUA
CAPITAL;

LUCRO .. Z =E= SUM(I,(R(I)* X(I)));


TERRA .. SUM(I,X(I)) =L= 150;
AGUA .. SUM(I,(C(I)*X(I))) =L= 260;
CAPITAL .. SUM(I,(P(I)*X(I))) =L= 490000;

Após inseridas todas as informações necessárias, é necessário nomear o arquivo e


selecionar o solver para o modelo sendo os mais usados:
• PL para programação linear
• NLP para programação não linear
• MIP para programação mista, que envolve inteiros e reais

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 /

C(I) consumo de agua pela cultura i


/ A 1.6
B 2.0 /

P(I) custo de producao da cultura i


/ A 3000
B 3500 /;

VARIABLES
Z lucro
X(I) area cultivada;

EQUATIONS
LUCRO
TERRA
AGUA
CAPITAL;

LUCRO .. Z =E= SUM(I,(R(I)* X(I)));


TERRA .. SUM(I,X(I)) =L= 150;
AGUA .. SUM(I,(C(I)*X(I))) =L= 260;
CAPITAL .. SUM(I,(P(I)*X(I))) =L= 490000;

MODEL EX1 /ALL/;


SOLVE EX1 USING LP MAXIMIZING Z;

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 .

A solução ótima encontrada foi de 100 ha para a cultura A e 50 ha para a cultura B.


GAMS 2.50D Windows NT/95/98 09/09/02 12:00:50 PAGE 1
General Algebraic Modeling System
Compilation

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;

COMPILATION TIME = 0.000 SECONDS 0.7 Mb WIN-19-114

---- LUCRO =E=


LUCRO.. Z - 3500*X(A) - 3700*X(B) =E= 0 ; (LHS = 0)

---- TERRA =L=


TERRA.. X(A) + X(B) =L= 150 ; (LHS = 0)

---- AGUA =L=


AGUA.. 1.6*X(A) + 2*X(B) =L= 260 ; (LHS = 0)

---- CAPITAL =L=


CAPITAL.. 3000*X(A) + 3500*X(B) =L= 490000 ; (LHS = 0)
---- Z lucro
Z
(.LO, .L, .UP = -INF, 0, +INF)
1 LUCRO

---- X area cultivada


X(A)
(.LO, .L, .UP = -INF, 0, +INF)
-3500 LUCRO
1 TERRA
1.6 AGUA
3000 CAPITAL

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

GENERATION TIME = 0.000 SECONDS 1.4 Mb WIN-19-114


EXECUTION TIME = 0.000 SECONDS 1.4 Mb WIN-19-114

SOLVE SUMMARY

MODEL EX1 OBJECTIVE Z


TYPE LP DIRECTION MAXIMIZE
SOLVER XA FROM LINE 36

**** SOLVER STATUS 1 NORMAL COMPLETION


**** MODEL STATUS 1 OPTIMAL
**** OBJECTIVE VALUE 535000.0000

RESOURCE USAGE, LIMIT 0.050 1000.000


ITERATION COUNT, LIMIT 0 10000

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 .

LOWER LEVEL UPPER MARGINAL


---- VAR Z -INF 5.3500E+5 +INF .

---- VAR X area cultivada


LOWER LEVEL UPPER MARGINAL
A -INF 100.000 +INF .
B -INF 50.000 +INF .
EXEMPLO 2
Faremos agora uma aplicação considerando risco pelo método MOTAD apresentada na
apostila. Neste exemplo utilizaremos entrada de dados por linhas e por tabelas e também 2
índices, sendo portanto um modelo mais complexo. Trata-se da determinação do plano de cultivo
ótimo maximizando o lucro. As restrições são quanto a disponibilidade de terra, horas de
trabalho e rotação de cultura. Sendo inserido posteriormente o risco como restrição. Tal projeto
dispõe de 4 atividades, 200 ha e 10.000 horas de trabalho.

As margens brutas das 4 atividades em 6 anos são:


Atividades
ano
1 2 3 4
1 292 -128 420 579
2 179 560 187 639
3 114 648 366 379
4 247 544 249 924
5 426 182 322 5
6 259 850 159 569
Média 253 443 284 516

Tendo como restrições:


Atividade
restrição Máximo
1 2 3 4
terra 1 1 1 1 200
Horas de trabalho 25 36 27 87 10.000
rotação -1 1 -1 1 0

Montando-se o problema determinista, isto é, transformando estas informações em


inequações apropriadas para solução em programação linear sem considerar o risco, resulta:

Deseja-se maximizar o lucro, então a função a ser maximizada é:


Max Z = 253X1 + 443X2 + 284X3 + 516X4

Sujeito as restrições:
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, tendo-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

As variáveis de decisão também são indexadas como:


X(J) = quantia área utilizada com a atividade J

Nos quadros seguintes são mostrados ao modelo inserido e a resolução do modelo,


obtendo como solução ótima a utilização ode 27,45 ha de X2, 100 ha de X3 e 72,55 ha de X4
obtende-se uma margem bruta esperada de $ 77.996,00.

SETS
J atividades /1*4/

PARAMETERS

M(J) margem bruta media


/1 253
2 443
3 284
4 516/

T(J) horas de trabalho


/1 25
2 36
3 27
4 87/

C(J) rotacao das culturas


/1 -1
2 1
3 -1
4 1/;

VARIABLES
X(J) quantidade produto j
Z lucro total;

POSITIVE VARIABLE X;

EQUATIONS
MARGEMBRUTA
AREA
ROTACAO
TRABALHO ;

MARGEMBRUTA .. Z =E= SUM(J, M(J)*X(J));


AREA .. SUM(J, X(J)) =L= 200;
ROTACAO..SUM(J,(C(J)*X(J))) =L= 0;
TRABALHO .. SUM(J,(T(J)*X(J))) =L= 10000;

MODEL EXE2 /ALL/;


SOLVE EXE2 USING LP MAXIMIZING Z;
GAMS 2.50D Windows NT/95/98 09/09/02 13:38:54 PAGE 1
General Algebraic Modeling System
Compilation

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

56 SOLVE EXE2 USING LP MAXIMIZING Z;

COMPILATION TIME = 0.000 SECONDS 0.7 Mb WIN-19-114


---- MARGEMBRUTA =E=
MARGEMBRUTA.. - 253*X(1) - 443*X(2) - 284*X(3) - 516*X(4) + Z =E= 0 ;

(LHS = 0)

---- AREA =L=


AREA.. X(1) + X(2) + X(3) + X(4) =L= 200 ; (LHS = 0)

---- ROTACAO =L=


ROTACAO.. - X(1) + X(2) - X(3) + X(4) =L= 0 ; (LHS = 0)

---- TRABALHO =L=


TRABALHO.. 25*X(1) + 36*X(2) + 27*X(3) + 87*X(4) =L= 10000 ; (LHS = 0)

---- X quantidade produto j

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

REMAINING ENTRY SKIPPED

---- Z lucro total


Z
(.LO, .L, .UP = -INF, 0, +INF)
1 MARGEMBRUTA

MODEL STATISTICS
BLOCKS OF EQUATIONS 4 SINGLE EQUATIONS 4
BLOCKS OF VARIABLES 2 SINGLE VARIABLES 5
NON ZERO ELEMENTS 17

GENERATION TIME = 0.000 SECONDS 1.4 Mb WIN-19-114


EXECUTION TIME = 0.000 SECONDS 1.4 Mb WIN-19-114
SOLVE SUMMARY
MODEL EXE2 OBJECTIVE Z
TYPE LP DIRECTION MAXIMIZE
SOLVER XA FROM LINE 56
**** SOLVER STATUS 1 NORMAL COMPLETION
**** MODEL STATUS 1 OPTIMAL
**** OBJECTIVE VALUE 77996.0784

RESOURCE USAGE, LIMIT 0.000 1000.000


ITERATION COUNT, LIMIT 3 10000

LOWER LEVEL UPPER MARGINAL

---- EQU MARGEMBRU~ . . . 1.000


---- EQU AREA -INF 200.000 200.000 318.412
---- EQU ROTACAO -INF . . 73.059
---- EQU TRABALHO -INF 10000.000 10000.000 1.431

---- VAR X quantidade produto j

LOWER LEVEL UPPER MARGINAL


1 . . +INF -28.137
2 . 27.451 +INF .
3 . 100.000 +INF .
4 . 72.549 +INF .

LOWER LEVEL UPPER MARGINAL


---- VAR Z -INF 77996.078 +INF .
Z lucro total

**** REPORT SUMMARY : 0 NONOPT


0 INFEASIBLE
0 UNBOUNDED

EXECUTION TIME = 0.000 SECONDS 0.7 Mb WIN-19-114

**** FILE SUMMARY


INPUT C:\RASCUNHO7\PATRICIA\2002\EXERCICIOS PL\GAMS\EXERISCO APOSTILA.GMS
OUTPUT C:\RASCUNHO7\PATRICIA\2002\EXERCICIOS PL\GAMS\EXERISCO APOSTILA.LST

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

As variáveis de decisão também são indexadas como:


X(J) = quantia área utilizada com a atividade J em ha
D(I) = desvios dos anos I 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-¹

Nos quadros seguintes são mostrados ao modelo inserido e a resolução do modelo,


obtendo como solução ótima para a margem bruta esperada de $62.770,00 a utilização de
72,26 ha de X1, 26,80 ha de X2, 83,92 ha de X3 e 17,02 ha de X4 obtende-se um desvio anual de
$ 8.237,70.
Note-se que quando utilizou-se a minimização na linha final de comando pediu-se para
minimizing Y using LP. È importante sempre observar-se Qua l o objetivo da otimização e
atentar-se aos solvers e procedimentos utilizados.
SETS
J atividades /1*4/
I anos /1*6/;

PARAMETERS
M(J) margem bruta media
/1 253
2 443
3 284
4 516/

T(J) horas de trabalho


/1 25
2 36
3 27
4 87/

C(J) rotacao das culturas


/1 -1
2 1
3 -1
4 1/;

TABLE R(I,J) margem bruta simulada das culturas


1 2 3 4
1 39 -570 136 63
2 -74 117 -97 123
3 -138 205 82 -137
4 -6 101 -35 408
5 173 -261 38 -510
6 6 408 -124 53;

VARIABLES
X(J) quantidade produto j
D1(I) desvios anuais negativos
D2(I) desvios anuais positivos
Y desviototal;

POSITIVE VARIABLE X,D1;


NEGATIVE VARIABLE D2;

EQUATIONS
DESVIOT
MARGEMBRUTA
AREA
ROTACAO
TRABALHO
DESVIO(I) ;

DESVIOT .. Y =E= SUM(I,D1(I));


MARGEMBRUTA .. SUM(J, M(J)*X(J)) =E= 62770;
AREA .. SUM(J, X(J)) =L= 200;
ROTACAO..SUM(J,(C(J)*X(J))) =L= 0;
TRABALHO .. SUM(J,(T(J)*X(J))) =L= 10000;
DESVIO(I)..SUM(J,(R(I,J)*X(J)))+D1(I) + D2(I) =G= 0;

MODEL EXE2 /ALL/;


SOLVE EXE2 USING LP MINIMIZING Y;
GAMS 2.50D Windows NT/95/98 09/09/02 16:27:36 PAGE 1
General Algebraic Modeling System
Compilation

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;

COMPILATION TIME = 0.000 SECONDS 0.7 Mb WIN-19-114

---- DESVIOT =E=


DESVIOT.. - D1(1) - D1(2) - D1(3) - D1(4) - D1(5) - D1(6) + Y =E= 0 ;

(LHS = 0)

---- MARGEMBRUTA =E=


MARGEMBRUTA.. 253*X(1) + 443*X(2) + 284*X(3) + 516*X(4) =E= 62770 ;

(LHS = 0, INFES = 62770 ***)

---- AREA =L=


AREA.. X(1) + X(2) + X(3) + X(4) =L= 200 ; (LHS = 0)

---- ROTACAO =L=


ROTACAO.. - X(1) + X(2) - X(3) + X(4) =L= 0 ; (LHS = 0)

---- TRABALHO =L=


TRABALHO.. 25*X(1) + 36*X(2) + 27*X(3) + 87*X(4) =L= 10000 ; (LHS = 0)

---- DESVIO =G=


DESVIO(1).. 39*X(1) - 570*X(2) + 136*X(3) + 63*X(4) + D1(1) + D2(1) =G= 0 ;
(LHS = 0)
DESVIO(2).. - 74*X(1) + 117*X(2) - 97*X(3) + 123*X(4) + D1(2) + D2(2) =G= 0 ;
(LHS = 0)
DESVIO(3).. - 138*X(1) + 205*X(2) + 82*X(3) - 137*X(4) + D1(3) + D2(3) =G= 0
; (LHS = 0)
REMAINING 3 ENTRIES SKIPPED

---- X quantidade produto j


X(1)
(.LO, .L, .UP = 0, 0, +INF)
253 MARGEMBRUTA
1 AREA
-1 ROTACAO
25 TRABALHO
39 DESVIO(1)
-74 DESVIO(2)
-138 DESVIO(3)
-6 DESVIO(4)
173 DESVIO(5)
6 DESVIO(6)
X(2)
(.LO, .L, .UP = 0, 0, +INF)
443 MARGEMBRUTA
1 AREA
1 ROTACAO
36 TRABALHO
-570 DESVIO(1)
117 DESVIO(2)
205 DESVIO(3)
101 DESVIO(4)
-261 DESVIO(5)
408 DESVIO(6)

REMAINING ENTRY SKIPPED

---- D1 desvios anuais negativos


D1(1)
(.LO, .L, .UP = 0, 0, +INF)
-1 DESVIOT
1 DESVIO(1)

D1(2)
(.LO, .L, .UP = 0, 0, +INF)
-1 DESVIOT
1 DESVIO(2)

REMAINING 4 ENTRIES SKIPPED

---- D2 desvios anuais positivos


D2(1)
(.LO, .L, .UP = -INF, 0, 0)
1 DESVIO(1)

D2(2)
(.LO, .L, .UP = -INF, 0, 0)
1 DESVIO(2)

REMAINING 4 ENTRIES SKIPPED

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

GENERATION TIME = 0.000 SECONDS 1.4 Mb WIN-19-114


EXECUTION TIME = 0.000 SECONDS 1.4 Mb WIN-19-114

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

RESOURCE USAGE, LIMIT 0.060 1000.000


ITERATION COUNT, LIMIT 7 10000

LOWER LEVEL UPPER MARGINAL


---- EQU DESVIOT . . . 1.000
---- EQU MARGEMBRU~ 62770.000 62770.000 62770.000 0.131
---- EQU AREA -INF 199.961 200.000 .
---- EQU ROTACAO -INF -112.169 . .
---- EQU TRABALHO -INF 6521.351 10000.000 .

---- EQU DESVIO


LOWER LEVEL UPPER MARGINAL
1 . . +INF 0.221
2 . . +INF 1.000
3 . . +INF 0.202
4 . 6324.202 +INF .
5 . . +INF 0.347
6 . . +INF EPS

---- VAR X quantidade produto j


LOWER LEVEL UPPER MARGINAL
1 . 72.484 +INF .
2 . 26.792 +INF .
3 . 83.581 +INF .
4 . 17.104 +INF .

LOWER LEVEL UPPER MARGINAL


---- VAR Y -INF 8232.707 +INF .

Y desviototal

**** REPORT SUMMARY : 5 NONOPT ( NOPT)


0 INFEASIBLE
0 UNBOUNDED

EXECUTION TIME = 0.000 SECONDS 0.7 Mb WIN-19-114