MEN - Mercados de Energia
Mestrado em Engenharia Electrotécnica
Introdução ao GAMS
General Algebraic Modeling System
Jorge Alberto Mendes de Sousa
Professor Coordenador
Webpage: pwp.net.ipl.pt/deea.isel/jsousa
ISEL – Instituto Superior de Engenharia de Lisboa
-1-
Agenda
1. Enquadramento
2. Exemplo de aplicação
3. Estrutura da programação GAMS
4. Exercício
ISEL – Instituto Superior de Engenharia de Lisboa
-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.
ISEL – Instituto Superior de Engenharia de Lisboa
-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;
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, não excedendo o limite
disponível em cada origem e satisfazendo as necessidades em cada
destino.
ISEL – Instituto Superior de Engenharia de Lisboa
-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.
ISEL – Instituto Superior de Engenharia de Lisboa
-5-
Exemplo de aplicação
O problema do transporte: Formulação
O problema de transporte tem assim a seguinte formulação matemática:
≤
≥
ISEL – Instituto Superior de Engenharia de Lisboa
-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.

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
(dij)
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
ISEL – Instituto Superior de Engenharia de Lisboa
-7-
Exemplo de aplicação
O problema do transporte: Programação GAMS
(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);
ISEL – Instituto Superior de Engenharia de Lisboa
-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 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 ;
ISEL – Instituto Superior de Engenharia de Lisboa
-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
ISEL – Instituto Superior de Engenharia de Lisboa
- 10 -
Estrutura da programação GAMS
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)
ISEL – Instituto Superior de Engenharia de Lisboa
- 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.

Considere ainda que o custo unitário de transporte é de 5 unidades
monetárias.
Distâncias
(dij)
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
ISEL – Instituto Superior de Engenharia de Lisboa
- 12 -
MEN - Mercados de Energia
Mestrado em Engenharia Electrotécnica
Introdução ao GAMS
General Algebraic Modeling System
Jorge Alberto Mendes de Sousa
Professor Coordenador
Webpage: pwp.net.ipl.pt/deea.isel/jsousa
ISEL – Instituto Superior de Engenharia de Lisboa
- 13 -
Download

ppt - PWP