Download - Apostila GAMS

Transcript
Page 1: Apostila GAMS

AAPPOOSSTTIILLAA DDOO UUSSOO DDOO GGAAMMSS PPAARRAA PPRROOGGRRAAMMAAÇÇÃÃOO LLIINNEEAARR

DDEETTEERRMMIINNÍÍSSTTIICCAA EE EESSTTOOCCÁÁSSTTIICCAA CCOONNSSIIDDEERRAANNDDOO RRIISSCCOO PPEELLOO

MMÉÉTTOODDOO MMOOTTAADD

Patricia Angélica Alves Marques

Piracicaba

Estado de São Paulo

Setembro de 2002

Page 2: Apostila GAMS

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

Page 3: Apostila GAMS

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.

Page 4: Apostila GAMS

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

Page 5: Apostila GAMS

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:

5003X52X31X9 ≤++

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.

LHS RHS

Page 6: Apostila GAMS

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 m3 hora-1 para a cultura A e 2.000 m3 hora-1 para a cultura B, equivalentes a 1,6 dm.ha e

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

contidas na tabela abaixo:

Cultura Rendimento esperado( t ha-1)

Preço do produto ($ t-1)

Custo de produção ($ ha-1)

Receita líquida ($ 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 $.

Page 7: Apostila GAMS

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

Page 8: Apostila GAMS

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.

Page 9: Apostila GAMS

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.

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;

Page 10: Apostila GAMS

GAMS 2.50D Windows NT/95/98 09/09/02 12:00:50 PAGE 1 G e n e r a l A l g e b r a i c M o d e l i n g S y s t e m C o m p i l a t i o n 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)

Page 11: Apostila GAMS

---- 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 S O L V E S U M M A R Y 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 .

Page 12: Apostila GAMS

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

1 2 3 4 Máximo

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

Page 13: Apostila GAMS

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;

Page 14: Apostila GAMS

GAMS 2.50D Windows NT/95/98 09/09/02 13:38:54 PAGE 1 G e n e r a l A l g e b r a i c M o d e l i n g S y s t e m C o m p i l a t i o n 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

Page 15: Apostila GAMS

---- 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 S O L V E S U M M A R Y MODEL EXE2 OBJECTIVE Z TYPE LP DIRECTION MAXIMIZE SOLVER XA FROM LINE 56

Page 16: Apostila GAMS

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

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

Page 17: Apostila GAMS

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.

50000

55000

60000

65000

70000

75000

80000

0 5000 10000 15000 20000 25000 30000 35000 40000 45000

desvios anuais em $ ha-¹

ma

rge

m b

ruta

es

pe

rad

a e

m $

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.

Page 18: Apostila GAMS

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;

Page 19: Apostila GAMS

GAMS 2.50D Windows NT/95/98 09/09/02 16:27:36 PAGE 1 G e n e r a l A l g e b r a i c M o d e l i n g S y s t e m C o m p i l a t i o n 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;

Page 20: Apostila GAMS

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)

Page 21: Apostila GAMS

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 S O L V E S U M M A R Y MODEL EXE2 OBJECTIVE Y TYPE LP DIRECTION MINIMIZE SOLVER XA FROM LINE 61

Page 22: Apostila GAMS

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


Top Related