Você está na página 1de 30

USP – São Carlos

Introdução ao uso do
GAMS

Programação Matemática

Junho de 2008
GAMS - General Algebric
Modelling System
 O GAMS é uma linguagem de alto nível para
a formulação de modelos de Pesquisa
Operacional.

 É uma ferramenta computacional útil para o


desenvolvimento, documentação e testes de
modelos de otimização.

 Este software tem uma versão free para


estudante na internet.

 O GAMS possui uma forma própria de


organização e apresentação dos modelos.
Para baixar a versão de estudante
FREE do GAMS

http://www.gams.com/
 Clique em Download Current GAMS System

 Clique no sistema operacional adequado da


sua máquina.

Limitações da versão DEMO:


• Number of constraints and variables:
variables: 300
• Number of nonzero elements:
elements: 2000
• Number of discrete variables:
variables: 50
Para escolher seu solver default
• clique em file -> options -> solvers
• clique em CPLEX
O problema do transporte –
modelo geral
 m pontos de fornecimento e n pontos de
demanda.
 fábrica i pode remeter, no máximo, Si itens e
o ponto de demanda j necessita de, pelo
menos, Dj itens.
 O custo de remeter cada unidade da fábrica i
ao ponto de demanda j é cij .
 O objetivo do problema é escolherum plano
de rotas que minimize os custos totais de
transporte.
O problema do transporte –
modelo de redes
O problema do transporte –
modelagem
n m
Minimizar f(x) = ∑ ∑ c ij x ij
j =1 i =1

n
 ∑ x ij ≤ S i , para i = 1,..., m
 j =1
m
Sujeito a  ∑ x ij ≥ D j , para j = 1,..., n
 i =1
 x ij ≥ 0 , para i = 1,..., m e j = 1,..., n.


O problema do transporte –
exemplo e modelagem
 Considere o problema de transporte com 3
fábricas e 4 clientes.
 Capacidades das fábricas, necessidades
mínimas e custos de transporte são dados.
O problema do transporte –
exemplo e modelagem
Minimizar f(x) = 132 x11 + 87 x12 + 97 x13 + 103 x14 + 85 x 21 + 91 x 22 +
+ 19 x 23 + 215 x 24 + 106 x 31 +89 x 32 + 100 x 33 + 98 x 34
 x11 + x12 + x13 + x14 ≤ 135

 x 21 + x 22 + x 23 + x 24 ≤ 56
 x 31 + x 32 + x 33 + x 34 ≤ 93

 x11 + x 21 + x 31 ≥ 62
Sujeito a 
 x12 + x 22 + x 32 ≥ 83
 x13 + x 23 + x 33 ≥ 39

 x14 + x 24 + x 34 ≥ 91
 x ≥ 0 , para i = 1, 2, 3 e j = 1, 2, 3, 4.
 ij
Implementação em GAMS do
problema do transporte
Modelo Geral:
1. Definição dos índices ou SETS.
2. Entrada de dados: PARAMETER, TABLE
ou SCALAR.
3. Definição das variáveis e seus tipos:
VARIABLES e tipo VARIABLE x.
4. Definição e declaração das equações:
EQUATIONS.
5. Definição do modelo: MODEL nome.
6. Resolução do modelo: SOLVE nome do
modelo USING.
Resolução de problemas de
otimização usando GAMS

Para resolver um problema de otimização


linear, inteiro ou binário no GAMS é
preciso realizar as seguintes etapas:

1. Construir o modelo.
2. Utilizar os recursos do sistema para
resolver o modelo.
Construção do modelo
no formato GAMS

Estrutura básica
SETS
 Índices referentes ao modelo e fundamentais
na modelagem dos outros elementos.
 Duas maneiras de declarar os conjuntos:
/fab1, fab2, fab3/ ou /fab1*fab3/.
 Pode-se declarar cada SET separadamente.
 Elementos de SETS são strings de caracteres
e não números.
 Exemplo: SETS
i fabricas/fab1, fab2, fab3/
j clientes/cli1, cli2, cli3, cli4/;
Entrada de dados

PARAMETER
 Lista com 1 domínio.
 Exemplo:

PARAMETER
S(i) capacidade da fabrica i
/fab1 135
fab2 56
fab3 93/;
TABLE
 Lista com 2 domínios.
 Exemplo:

TABLE c(i,j) custos unitarios de transporte


cli1 cli2 cli3 cli4
fab1 132 87 97 103
fab2 85 91 19 215
fab3 106 81.9 100 98;
SCALAR
 Lista sem domínio.
 Exemplo:

SCALAR v penalidade por demanda nao


atendida/160/;
VARIABLES
 Indicam quais variáveis deverão ser
determinadas pelo modelo.
 Exemplo:

VARIABLES
x(i,j) quantidade de produto
transportado de i para j
z custo total em $;
POSITIVE VARIABLE x;
VARIABLES
 Variável z não tem domínio: entidade escalar.

 Modelos em GAMS precisam ter uma


variável do tipo FREE como z para receber o
valor da função objetivo.

 Se a variável for FREE, não é necessário


declarar seu tipo.
Tipos de VARIABLES
(default)

Tipos Valores assumidos


FREE -infinito a +infinito
POSITIVE 0 a +infinito
NEGATIVE -infinito a 0
INTEGER 1, 2, ..., 100.
BINARY 0 ou 1
EQUATIONS-componentes
 O nome da equação que se quer definir.
 O domínio (caso haja algum).
 A condição de restrição de domínio.
 O símbolo “..”.
 O lado esquerdo da expressão.
 O operador relacional: =g=, =l= ou =e=, para
designar maior ou igual, menor ou igual e
igual.
 O lado direito da expressão.
EQUATIONS-exemplo
EQUATIONS
custo funcao objetivo
capacidade(i) capacidade da fabrica i
demanda(j) necessidade de
suprimento do cliente j;
definição
custo..z=e=sum((i,j), c(i,j)*x(i,j));
capacidade(i)..sum(j, x(i,j))=l=S(i);
demanda(j)..sum(i, x(i,j))=g= D(j); declaração
EQUATIONS
 As duas últimas linhas são geradas 3
desigualdades capacidade e quatro
desigualdades demanda.
 O símbolo =(designação direta) dá o valor
ao parâmetro antes do problema ser
resolvido. O símbolo =e= também expressa
uma relação de igualdade, mas que só pode
ser satisfeita depois do problema ter sido
resolvido.
 As variáveis podem aparecer tanto no lado
direito como no esquerdo de uma equação.
Somatórios em EQUATIONS
Expressão Notação em GAMS

Σj xij sum(j, x(i,j))

Σi Σj xij cij sum((i,j), c(i,j)*x(i,j));


Declaração MODEL
 Define-se o modelo a partir do conjunto de
equações do problema. Ao modelo é
designado um nome.

 Exemplos:

MODEL Transporte /all/;

MODEL Transporte1 /custo, demanda/;


Declaração SOLVE
 O comando SOLVE resolve o modelo e tem o
seguinte formato:
 A palavra-chave “SOLVE ”.
 O nome do modelo a ser resolvido.
 A palavra-chave “USING”.
 O procedimento de resolução adequado:
– lp para programação linear;
– nlp para programação não-linear;
– mip para programação inteira mista.
 A palavra-chave minimizing ou maximizing.
 O nome da variável a ser otimizada.
Declaração SOLVE-exemplos
MODEL Transporte /all/;
SOLVE Transporte using lp minimizing z;

MODEL Transporte /all/;


SOLVE Transporte using mip minimizing z;

MODEL Transporte /all/;


MODEL Transporte1 /custo, demanda/;
SOLVE Transporte1 using lp minimizing z;
Comando DISPLAY
 O comando DISPLAY fornece os valores das
variáveis básicas (x.l) e dos custos marginais
(x.m) de x(i,j).
 Exemplo:

DISPLAY x.l, x.m;


Tarefa para entregar
• Implementar o problema da dieta no
GAMS;
• enviar o arquivo *.gms (sem erros!);
• colocar no próprio arquivo
• Nome, No. Usp

Enviar para
dougepai@yahoo.com.br até dia 12/06/2008
Problema da Dieta
 Tabela nutricional

Ingredientes Pote de lata de Pacote Quantidade


Nutela Cerveja Miojo Mínima diária
Cacau 5 0 0 13,5
Carboidrato 25 11 13,7 37,k
Potássio 0,k 7,2 3,4 7,5
Álcool 0 12 0 20
Custo($) 4,90 3,k 1,20
k = último algarismo do número usp
Deseja-se:

1. Calcular as quantidades desses alimentos a


fim de satisfazer as quantidades diárias
mínimas destas vitaminas a um custo
mínimo;

2. Restrição adicional: limitação da quantidade


de álcool consumido por dia.

3. Duas situações: a) 20g; b) 25g.

4. Analise o que acontece em ambas


situações.

Você também pode gostar