EER – Economia das Energias Renováveis
M t d em Energias
Mestrado
E
i Renováveis
R
á i (MERCEUS)
Introdução ao GAMS
General Algebraic Modeling System
Jorge Alberto Mendes de Sousa
Professor Coordenador
Webpage: pwp.net.ipl.pt/deea.isel/jsousa
MERCEUS | FCT/UNL
-1-
Agenda
g
1. Enquadramento
2. Exemplo de aplicação
3. Estrutura da programação GAMS
4. Exercício
MERCEUS | FCT/UNL
-2-
Enquadramento
q
ƒ
O GAMS ‐ General Algebraic Modeling System é uma linguagem
dedicada à modelização de problemas de optimização lineares, não
lineares e de programação inteira mista,
mista particularmente útil para
problemas de elevada dimensão e complexidade.
ƒ
O GAMS permite
it ao utilizador
tili d
concentrar‐se
t
na modelação
d l ã do
d
problema tornando fácil a sua implementação. O utilizador pode alterar
a formulação
ç de forma rápida
p e simples,
p ,p
podendo seleccionar e trocar o
método numérico de resolução e até mudar um problema linear para
não linear sem qualquer problema.
ƒ
A linguagem GAMS é formalmente idêntica a outras linguagens de
programação comuns pelo que qualquer utilizador com um mínimo de
experiência
ê
em programação
ã se sentiráá familiar
f l com o GAMS.
MERCEUS | FCT/UNL
-3-
Exemplo de aplicação
O problema de transporte: Formulação
ã
ƒ
O problema de transporte é um problema clássico de optimização que
consiste em determinar a forma mais eficiente de enviar um bem
disponível em quantidades limitadas em determinados locais (oferta) para
outros locais onde é necessário (procura).
(
)
ƒ
A formulação do problema passa por programar a distribuição óptima de
um produto homogéneo que:
a) está disponível em m origens nas quantidades fixas ai > 0 (oferta), com i
= 1, 2, …, m;
quantidades fixas bj > 0 (p
(procura),
) com j
b)) é necessário em n destinos nas q
= 1, 2, …, n;
p
os destinos,, esgotando
g
as
c)) deve ser enviado directamente para
disponibilidades em cada origem e satisfazendo as necessidades em
cada destino.
MERCEUS | FCT/UNL
-4-
Exemplo de aplicação
O problema de transporte: Formulação
ã
O problema de transporte tem por objectivo a minimização do custo total
de distribuição do produto, em que os custos unitários de transporte da
cada origem i para cada destino j, cij, são proporcionais às quantidades
transportadas, xij.
MERCEUS | FCT/UNL
-5-
Exemplo de aplicação
O problema do transporte: Formulação
ã
O problema
bl
d transporte tem assim
de
i a seguinte
i
f
formulação
l ã matemática:
ái
MERCEUS | FCT/UNL
-6-
Exemplo de aplicação
O problema do transporte: Dados de entrada
ƒ
Como concretização do exemplo de transporte vamos admitir que existem
duas fábricas e três centros de consumo, em que os valores de oferta,
procura e distâncias entre as fábricas e os centros estão indicados na
tabela abaixo.
abaixo
ƒ
Considera‐se ainda que o custo unitário de transporte é de 90 unidades
monetárias por cada unidade de produto e de distância percorrida.
percorrida
Oferta
(ai)
Distâncias (xij)
Centro 1
Centro 2
Centro 3
Fábrica 1
Fábrica 1
2.5
1.7
1.8
350
Fábrica 2
2.5
1.8
1.4
600
Procura (b
( j)
325
300
275
MERCEUS | FCT/UNL
-7-
Exemplo de aplicação
O problema do transporte: Programação
ã GAMS
(1/3)
Sets
i fabricas
f b i
j centros
/ F
Fabrica1,
b i 1 F
Fabrica2
b i 2 /
/ Centro1, Centro2, Centro3 / ;
Parameters
a(i) capacidade de producao da fabrica i
/ Fabrica1 350
Fabrica2 600 /
b(j) consumo no centro j
/ Centro1 325
Centro2 300
Centro3 275 / ;
Table d(i,j) distancia das fabricas aos centros
C t 1
Centro1
Centro2
C t 2
C
Centro3
t 3
Fabrica1
2.5
1.7
1.8
Fabrica2
2.5
1.8
1.4 ;
Scalar f custo por unidade de produto e de distancia /90/ ;
Parameter c(i,j) custo de transporte por unidade de produto;
c(i,j) = f*d(i,j);
MERCEUS | FCT/UNL
-8-
Exemplo de aplicação
O problema do transporte: Programação
ã GAMS
(2/3)
Variables
x(i,j) quantidade transportada de i para j
z custo total de transporte;
Positive variable x ;
Equations
custo
funcao objectivo
f
bj
i
custo total
l
oferta(i) limite de producao da fabrica i
procura(j) procura no centro j ;
custo
.. z =e= sum((i,j), c(i,j)*x(i,j)) ;
oferta(i) .. sum(j, x(i,j)) =l= a(i) ;
procura(j)
p
ocu a(j) .. su
sum(i,
( , x(i,j))
( ,j)) =g=
g b(j) ;
Model transporte /custo, oferta, procura/ ;
S l
Solve
t
transporte
t using
i
l
lp minimizing
i i i i
z ;
MERCEUS | FCT/UNL
-9-
Exemplo de aplicação
O problema do transporte: Programação
ã GAMS
(3/3)
Display x.l, x.m, z.l ;
* Escreve resultados no ficheiro externo "C:\transporte.txt"
File output /C:\transporte.txt/ ;
put output ;
put "Custo total = ", put z.l, put /, put / ;
put "xij: ", put / , put "
";
loop(j, put j.tl) ;
put /;
loop(i, put i.tl,
loop (j, put x.l(i,j)) ; put / ;
) ;
putclose output
MERCEUS | FCT/UNL
- 10 -
Estrutura da programação GAMS
Entradas e saídas
í
Inputs
p
(file.gms)
(f
g )
∙ Sets
Declaração
Assignação dos elementos
dos elementos
∙ Data (Parameters, Tables, Scalar)
Declaração
Assignação de valores
de valores
Outputs
p (f
(file.lst))
∙ Echo Print
∙ Equation Listing
∙ Equation
∙ Model Statistics
∙ Solution Report
∙ Variables
Declaração
Assignação do tipo
Assignação de limites e/ou valores iniciais (opcional)
∙ Results
∙ Equations
Equations
Declaração
Definição
∙ Model / Solve:
Model / Solve: definição e solução
e solução do modelo
do modelo
∙ Display (opcional)
MERCEUS | FCT/UNL
- 11 -
Exercício
O problema de transporte alterado
ƒ
Como exercício considere o exemplo do problema de transporte
apresentado onde agora existem quatro fábricas e cinco centros de
consumo, com os valores de oferta, procura e distâncias entre as fábricas e
os centros indicados na tabela abaixo.
abaixo
ƒ
Considere ainda que o custo unitário de transporte é de 5 unidades
monetárias.
monetárias
Distâncias (xij)
Oferta
(ai)
Centro 1
Centro 2
Centro 3
Centro 4
Centro 5
Fábrica 1
2.5
1.7
1.5
1.3
1.8
300
Fábrica 2
2.1
1.5
3.8
1.5
5.0
550
Fábrica 3
2.0
2.8
2.0
2.5
1.0
200
Fábrica 4
2.7
2.3
1.0
3.8
4.3
500
Procura (bj)
250
300
275
100
125
MERCEUS | FCT/UNL
- 12 -
Download

EER – Economia das Energias Renováveis