Está en la página 1de 44

(General Algebraic Modeling System)

Verano Cientfico 2012 PISIS

L.M. Nancy Maribel Arratia Martnez


L.I.A. Cristina Maya Padrn

INTRODUCCIN A GAMS
VERANO CIENTFICO 2012 PISIS
L.M. NANCY MARIBEL ARRATIA MARTNEZ
L.I.A. CRISTINA MAYA PADRN

La herramienta GAMS
Es un lenguaje, soportado por un paquete informtico, que
permite especificar un problema de programacin
matemtica independientemente del mtodo de resolucin
asociado al mismo. Los problemas a tratar han de ser de
naturaleza algebraica no pudiendo especificarse problemas de
optimizacin con ecuaciones diferenciales de forma directa.
GAMS est diseado especficamente para el modelado de
problemas de optimizacin lineales, no lineales, enteros y
mixtos. El sistema es especialmente til con problemas
grandes y complejos.

La herramienta GAMS
GAMS se utiliza en una gran variedad de reas como los son:
ingeniera agrcola, ingeniera qumica, econometra, finanzas,
economa ambiental, energa, logstica, matemticas, fsica,
comercio internacional, micro/macro economa, investigacin
de operaciones, etc.

Windows
En Windows, Gams tiene un IDE (ambiente integrado de
desarrollo) que permite, entre muchas cosas ms, editar
(escribir) el archivo y ejecutar Gams. Este archivo donde se
escribe el problema tiene extensin .gms.
El archivo .gms es de tipo ASCII y puede ser escrito con
cualquier editor para este tipo de archivos (Emacs, Bloc de
notas, ...). El editor del ambiente Gams tiene una gran
ventaja, resalta con diferente color las palabras especficas de
Gams.

Windows
Gams utiliza el archivo .gms y si est bien escrito resuelve el
problema. Creando un archivo .lst donde est la informacin
sobre la solucin.
Si en el archivo .gms hay errores, entonces en el archivo .lst
aparece una transcripcin , con numeracin de los renglones,
e inmediatamente despus de una lnea errnea, aparece
algo semejante a :
**** $409

El valor 409 (u otro valor) es un cdigo de error. Un poco ms


adelante, en el archivo .lst, aparece el significado de cada uno
de los cdigos de los errores ocurridos.

Linux
En Linux, Gams no viene con ambiente integrado. El archivo
.gms se puede escribir con cualquier editor de texto (Emacs,
vi, Kate, ... ). Para invocar Gams, desde una ventana se da la
orden
gams archivo.gms

Tambin se puede dar la orden sin explicitar la extensin


gams archivo

De nuevo, se crea un archivo .lst donde est el resultado, bien


sea la solucin, o bien informacin sobre los errores de la
misma manera que en Windows (ver seccin anterior).

EJEMPLO 1:
PRODUCCIN DE 2 ARTCULOS.

Problema
Toys enterprises produce dos tipos de juguetes: camiones y muecas.
Los camiones aportan $3 a la ganancia y las muecas $2.
De material se dispone de 100 unidades de madera, de las cuales cada
camin requiere 2 unidades y cada mueca 1. De metal se cuenta con 80
piezas de las cuales se requiere una pieza por juguete. Un anlisis de
mercado determino que el numero de camiones no puede exceder las 40
unidades.
Cuntos camiones y muecas deber producir para tener mayor ganancia?

Modelo matemtico
Funcin objetivo:
Restricciones:

X1 : # de camiones
X2 : # de muecas

Max Z=3X1 + 2X2


2X1 + X2 <=100
X1 + X2 <=80
X1
<=40
X1 , X2 >=0

Formulacin en GAMS

$TITLE Problema_Produccion_Juguetes

VARIABLES
Z ganancia total;

POSITIVE VARIABLES
X1 # de camiones
X2 # de muecas;

EQUATIONS
OBJ funcion objetivo
R1 referente a la capacidad de Madera
R2 referente a la capacidad de Metal
R3 el # de camiones no exceda 40 unidades;

OBJ .. Z=E=3*X1+2*X2;
R1 .. 2*X1+1*X2=L=100;
R2 .. 1*X1+1*X2=L=80;
R3 .. X1=L=40;

MODEL Problema_Produccion_Juguetes /ALL/;

SOLVE Problema_Produccion_Juguetes USING MIP MAXIMIZING Z;

DISPLAY Z.L, X1.L, X2.L

En GAMS, la terminologa adoptada es la siguiente:


los ndices son llamados conjuntos,
los datos dados se llaman parmetros,
variables de decisin se llaman variables,
y las restricciones y la funcin objetivo se llaman
ecuaciones.

Estructura de un
Modelo de GAMS

Componentes bsicos de un modelo GAMS

Estructura de un Modelo de GAMS


1. INPUTS

1.1 Sets: Los conjuntos son los bloques de construccin


bsicos de un modelo GAMS, que corresponde exactamente a
los ndices en las representaciones algebraica de los modelos.

Estructura de un Modelo de GAMS


1. INPUTS

1.2 Datos: Hay tres


formatos fundamentales
que son:
1.Listas

2.Tablas

3. Las asignaciones directas

Estructura de un Modelo de GAMS


1.2.1 Un escalar es considerado como un parmetro que no
tiene dominio. Se puede declarar y asignar con una declaracin
de escalar que contiene una lista degenerada de un solo valor.

Estructura de un Modelo de GAMS


1.3 Variables: Las variables de decisin (o variables
endgenas) de un modelo GAMS-expresado se debe declarar
con una declaracin de variables. Cada variable se le asigna un
nombre, un dominio en su caso, y el texto (opcional).

Tipos de variables permitidas

Estructura de un Modelo de GAMS


1.4 Equations:
Declaracin de ecuaciones:
Las ecuaciones deben ser declaradas y definidas en
declaraciones separadas.
Primero se pone la palabra clave Equations seguida por el
nombre, dominio y texto de uno o mas grupos de ecuaciones
o desigualdades han sido declaradas.

Estructura de un Modelo de GAMS


1.4 Equations:
Notacin de Sumatorias (y Productos) en GAMS:
Se puede utilizar para expresiones simples y complejas. El formato
se basa en la idea de pensar siempre en una suma como operador
con dos argumentos: Suma (ndice de la suma, sumando). Una coma
separa los dos argumentos y si el 1 argumento requiere una coma
debe estar entre parentesis. El segundo argumento puede ser
cualquier expresin matemtica incluida otra suma.

Estructura de un Modelo de GAMS


Definicin de Ecuacin:
Los componentes de una definicin de la ecuacin son:
1. El nombre de la ecuacin que se est definiendo
2. El dominio
3. Condicin de restriccin de dominio (opcional)
4. El smbolo '..'
5. La expresin Left-hand-side.
6. Operador relacional:
= l = menor que o igual a
= g = mayor que o igual a
= e = igual a
7. La expresin Right-hand-side.

Estructura de un Modelo de GAMS


- Objective Function: Esto es slo un recordatorio de que
GAMS no tiene entidad explcita que llama a la funcin
objetivo. Para especificar la funcin a ser optimizada, debe
crear una variable, que es libre (sin restricciones de signo) y el
valor escalar (no de dominio) y que aparece en una ecuacin
de definicin que equivale a la funcin objetivo.

Estructura de un Modelo de GAMS


1.5 Model : La palabra model tiene un significado muy
preciso en GAMS. Se trata simplemente de un conjunto de
ecuaciones. Al igual que otras entidades GAMS, se le debe
dar un nombre en una declaracin. El formato de la
declaracin es la palabra clave model seguido por el
nombre del modelo, seguido por una lista de nombres de
ecuacin encerradas en barras. Si todas las ecuaciones
previamente definidas se deben incluir, puede introducir /
all/ en lugar de la lista explcita.

Estructura de un Modelo de GAMS


1.7 Solve :
El formato de la instruccin Solve es el siguiente:
1. La palabra clave solve.
2. El nombre del modelo que hay que resolver
3. La palabra clave using
4. Un procedimiento de solucin disponible.
5. La palabra clave 'minimizar' o 'maximizar'
6. El nombre de la variable que se optimiza

Estructura de un Modelo de GAMS


Tipos de procedimientos de solucin:
lp :para programacin lineal
qcp : programacin con restricciones cuadrtica
nlp : para programacin no lineal
dnlp : para programacin no lineal con derivadas discontinuas
mip : para programacin entera mixta
rmip :para programacin relajada entera mixta
miqcp : para programacin entera mixta restriccin cuadrtica
minlp : para programacin no lineal entera mixta
rmiqcp :para programacin entera mixta relajada restriccin cuadrtica
rminlp : programacin no lineal entera mixta relajada
mcp: para los problemas de complementariedad mixta
mpec : para los programas matemticos con restricciones de equilibrio
cns : para limitaciones de los sistemas no lineales

Estructura de un Modelo de GAMS


1.8 Display Statements:

La declaracin solve
causar que varias cosas sucedan cuando se ejecuta. Se
generar la instancia especfica de inters del modelo, se
crearn las estructuras de datos adecuadas para la entrada de
este problema, ser invocado el editor de resolucin, y la
salida del solucionador se imprimir en un archivo.
Para obtener los valores ptimos de las variables primarias y /
o dobles, podemos mirar la salida de solucin, o, si lo
deseamos, podemos solicitar una presentacin de estos
resultados de GAMS.

Estructura de un Modelo de GAMS


GAMS se ha diseado con un sistema de base de datos pequeo
en el que se llevan registros de las variables y ecuaciones.
Los campos ms importantes de cada registro son los siguientes:
. lo : el lmite inferior
. l : el nivel o valor primal
.up : lmite superior
. m : marginal o valor dual

Ejemplo de Inputs

GAMSide
Nota: La
descripcin de
este ejemplo se
encuentra anexada
al final de la
presentacin.

ejemplo4_mochila.gms
El problema de la mochila (knapsack problem).
El problema de la mochila consiste en elegir un conjunto de
objetos que proporcionen el beneficio mximo, sin sobrepasar
la capacidad de la mochila. Considrese el siguiente modelo,
donde los coeficientes en la funcin objetivo representan los
beneficios de cada objeto y los coeficientes de la restriccin
sus respectivos pesos.
Maximizar
sujeto a

11x1 10 x2 9 x3 12 x4 10 x5 6 x6 7 x7 5 x8 3x9 8 x10


33x1 27 x2 16 x3 14 x4 29 x5 30 x6 31x7 33x8 14 x9 18 x10 100
xi {0,1} para

i 1,....10.

OPTION Optcr = 0.0001


SET
i/1*10/;

Formulacin
estructurada

BINARY VARIABLES
X(i);

VARIABLE
Z;
PARAMETERS
P(i) son los pesos de cada objeto i.
/1
33
2
27
3
16
4
14
5
29
6
30
7
31
8
33
9
14
10
18/
B(i)
/1
2
3
4
5
6
7
8
9
10

valor de beneficio de cada objeto.


11
10
9
12
10
6
7
5
3
8/;

EQUATIONS
OBJ
R1;
OBJ .. Z=E=sum((i),X(i)*B(i));
R1 .. sum((i),X(i)*P(i))=L=100;
MODEL Ejemplo/all/;
SOLVE Ejemplo using mip maximizing Z;
DISPLAY X.l,Z.l;

OPTION Optcr = 0.0001;

Formulacin
no-estructurada

BINARY VARIABLES
X1,X2,X3,X4,X5,X6,X7,X8,X9,X10;
VARIABLE
Z;
EQUATIONS
OBJ
R1;
OBJ ..
Z=E=X1*11+X2*10+X3*9+X4*12+X5*10+X6*6+X7
*7+X8*5+X9*3+X10*8;
R1 ..
X1*33+X2*27+X3*16+14*X4+X5*29+X6*30+X7*31
+X8*33+X9*14+X10*18=L=100;
MODEL Ejemplo/all/;
SOLVE Ejemplo using mip maximizing Z;
DISPLAY Z.l;

Compilacin en GAMS
Una vez que se corre un programa, GAMS crea un archivo con
el mismo nombre del programa, pero con la extension .lst .
El archivo *.lst esta compuesto las siguientes partes:
Echo print
Mensajes de Error
Mapas de Referencia
Listado de Ecuaciones
Estadsticas del Modelo
Reporte de Estatus
Reporte de Solucin

Compilacin en GAMS
El echo print, es solo una versin copiada del modelo que estamos
resolviendo. Gams numera los renglones, lo cual es til para cuando
indica errores.
Los mensajes de error, aparecen al final del programa del echo, una lista
con los errores con su cdigo, indicando que error es y en que rengln se
encuentra.
Los mapas de referencia indican las variables, su nombre, tipo y referencia
de donde se utilizaron.
El listado de ecuaciones presenta en orden las ecuaciones utilizadas en el
modelo con sus variables en especifico. Esta es la mejor herramienta til
cuando no se estn obteniendo resultados esperados.

Compilacin en GAMS
Las estadsticas del modelo se refieren a su tamao, numero de variables,
numero de ecuaciones, etc.
Una vez que el modelo haya corriendo satisfactoriamente , se generan dos
reportes. El reporte de estatus indica bajo que condiciones se detuvo la
corrida. Es decir, si encontr solucin, si es nica, si no es factible, si llega
al limite de memoria o de iteraciones, etc.
El reporte de solucin es seguramente lo de mas inters para el usuario
puesto que es donde se presentan los resultados de la corrida. Se
presentan los resultados primero por ecuacin, segundo por variable y por
ultimo por peticin del usuario.

Ejemplo de Outputs

Observaciones generales:
Un modelo GAMS es una coleccin de declaraciones en el
lenguaje GAMS. La nica regla que rige la ordenacin de las
declaraciones es que una entidad del modelo no se puede
hacer referencia antes de que se declara que existe.

Se debe terminar cada sentencia con un punto y coma.


El compilador de GAMS no distingue entre maysculas y
minsculas.

Limites de modelo:
Number of constraints and variables: 300
Number of nonzero elements: 2000 (of which 1000 nonlinear)
Number of discrete variables: 50
Global solver limits:
Number of constraints and variables: 10

EJEMPLO
PROBLEMA DE TRANSPORTE

Problema de transporte
Consideremos un problema clsico de transporte con 3 fbricas y 4
destinos. En la siguiente tabla estn los costos unitarios de transporte (en
miles de pesos), las capacidades mximas de produccin de cada fbrica y
los pedidos o demandas de cada destino.

Usualmente el planteamiento de este problema se hace con las variables


xij , i = 1, ..., 3, j =1, ..., 4 que indican en nmero de unidades que van de la
fbrica i al destino j. Denotemos por cij los costos unitarios de transporte,
dj las demandas en los destinos y pi las capacidades mximas de
produccin en las fbricas.

Xij = Cantidad de producto para enviar


de la planta i al cliente j.

El modelo matemtico es:

Minimizar
Z= 23X11 +29X12 +19X13 + 31X14 +12X21 +
16X22 + 20X23 + 10X24 + 11X31 + 13X32 +
17X33 + 19X34
SUJETO A:
(1) X11 + X12 + X13 + X14 <=200
(2) X21 + X22 + X23 + X24 <=180
(3) X31 + X32 + X24 + X34 <=100
(4) X11 + X21 + X31 = 105
(5) X12 + X22 + X32 = 180
(6) X13 + X23 + X33 = 99
(7) X14 + X24 + X34 = 135
(8) X11,X12,X13,X14,X21,X22,X23,X24,X31,X32
,X33,X34 >=0

Referencias de consulta:
PAGINA OFICIAL DE GAMS
http://www.gams.com/
PARA DESCARGA DE SOFTWARE
http://www.gams.com/download/
TUTORIAL DE GAMS por Richard E. Rosenthal
http://www.gams.com/dd/docs/gams/Tutorial.pdf

Dudas o comentarios:
Lic. Nancy Maribel Arratia Martnez
nancyamtz@gmail.com
Lic. Cristina Maya Padrn
kerstin.maya@gmail.com

Bibliografa
1.
2.
3.

Hctor Manuel Mora Escobar, GAMS, ejemplos introductorios, Marzo


de 2009.
Jose Ignacio Marn Alberdi, Introduccin al lenguaje Gams, 2000.
Richard E. Rosenthal, GAMS - A User's Guide, January 2012.

PROBLEMA DE ENVIO DE MERCANCIA DE LA PLANTA AL MERCADO

También podría gustarte