Formação Galp Energia
Modelação e Simulação de Mercados de Energia Eléctrica
:: Sessão #2 ::
Introdução ao GAMS
General Algebraic Modeling System
Jorge de Sousa
Professor Coordenador
ISEL - Instituto Superior de Engenharia de Lisboa
Webpage: pwp.net.ipl.pt/deea.isel/jsousa
Sessão #2 | 28 Abril 2010
-1-
Agenda
•
Enquadramento
•
Exemplo de aplicação
•
Programação em GAMS
•
Exercício
Sessão #2 | 28 Abril 2010
-2-
Enquadramento

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, particularmente útil para
problemas de elevada dimensão e complexidade.

O GAMS permite ao utilizador concentrar-se na modelação do
problema tornando fácil a sua implementação. O utilizador pode alterar
a formulação de forma rápida e simples, 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 com o GAMS.
Sessão #2 | 28 Abril 2010
-3-
Agenda
•
Enquadramento
•
Exemplo de aplicação
•
Programação em GAMS
•
Exercício
Sessão #2 | 28 Abril 2010
-4-
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 é consumido (procura).

A formulação do problema passa por determinar 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;
b) é necessário em n destinos nas quantidades fixas bj > 0 (procura),
com j = 1, 2, …, n;
c) deve ser enviado directamente para os destinos, esgotando as
disponibilidades em cada origem e satisfazendo as necessidades
em cada destino.
Sessão #2 | 28 Abril 2010
-5-
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.
Sessão #2 | 28 Abril 2010
-6-
Exemplo de aplicação
O problema do transporte: Formulação
O problema de transporte tem assim a seguinte formulação matemática:
Sessão #2 | 28 Abril 2010
-7-
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.

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.
Distâncias
(xij)
Oferta
(ai)
Centro 1
Centro 2
Centro 3
Fábrica 1
2.5
1.7
1.8
350
Fábrica 2
2.5
1.8
1.4
600
Procura (bj)
325
300
275
Sessão #2 | 28 Abril 2010
-8-
Agenda
•
Enquadramento
•
Exemplo de aplicação
•
Programação em GAMS
•
Exercício
Sessão #2 | 28 Abril 2010
-9-
Programação em GAMS
Ambiente de desenvolvimento
Sessão #2 | 28 Abril 2010
- 10 -
Programação em GAMS
O problema do transporte
(1/3)
Sets
i fabricas
j centros
/ Fabrica1, Fabrica2 /
/ 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
Centro1
Centro2
Centro3
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);
Sessão #2 | 28 Abril 2010
- 11 -
Programação em GAMS
O problema do transporte
(2/3)
Variables
x(i,j) quantidade transportada de i para j
z custo total de transporte;
Positive variable x ;
Equations
custo
funcao objectivo custo total
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) .. sum(i, x(i,j)) =g= b(j) ;
Model transporte /custo, oferta, procura/ ;
Solve transporte using lp minimizing z ;
Sessão #2 | 28 Abril 2010
- 12 -
Programação em GAMS
O problema do transporte
(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
Sessão #2 | 28 Abril 2010
- 13 -
Programação em GAMS
Estrutura: Entradas e saídas
Inputs (file.gms)
· Sets
Declaração
Assignação dos elementos
· Data (Parameters, Tables, Scalar)
Declaração
Assignação de valores
Outputs (file.lst)
· Echo Print
· Equation Listing
· Model Statistics
· Solution Report
· Variables
Declaração
Assignação do tipo
Assignação de limites e/ou valores iniciais (opcional)
· Results
· Equations
Declaração
Definição
· Model / Solve: definição e solução do modelo
· Display (opcional)
Sessão #2 | 28 Abril 2010
- 14 -
Agenda
•
Enquadramento
•
Exemplo de aplicação
•
Programação em GAMS
•
Exercício
Sessão #2 | 28 Abril 2010
- 15 -
Exercício
O problema de transporte alterado
Considere o exemplo do problema de transporte apresentado
anteriormente adaptado agora a uma situação de quatro fábricas e cinco
centros de consumo. Os valores de oferta, procura e distâncias entre as
fábricas e os centros encontram-se indicados na tabela abaixo e o custo
unitário de transporte é de 5 unidades 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
Sessão #2 | 28 Abril 2010
- 16 -
Formação Galp Energia
Modelação e Simulação de Mercados de Energia Eléctrica
:: Sessão #2 ::
Introdução ao GAMS
General Algebraic Modeling System
Jorge de Sousa
Professor Coordenador
ISEL - Instituto Superior de Engenharia de Lisboa
Webpage: pwp.net.ipl.pt/deea.isel/jsousa
Sessão #2 | 28 Abril 2010
- 17 -
Download

Sessão #2