Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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
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
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
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;
Estructura de un
Modelo de GAMS
2.Tablas
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.
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
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
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;
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.
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.
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.