Taller gams
GENERALIDADES DEL LENGUAJE DE PROGRAMACIÓN GAMS
GAMS es un lenguaje de programación matemática. Los lenguajes de programación son lenguajes que permiten la formulación de problemas de optimización complejos. Son muy potentes por su capacidad de resolución y la indexación de las variables y ecuaciones. Entre los lenguajes de modelado más conocidos sepueden mencionar: GAMS (www.gams.com) y AMPL (www.ampl.com) de origen estadounidense y AIMMS (www.aimms.com) y XPRESS-MP (www.dash.co.uk) de origen europeo, por citar algunos.
GAMS es el lenguaje más ampliamente difundido comercialmente con su propia lista de discusión de usuarios (gams-l@listserv.gmd.de) mientras que AMPL se está potenciando mucho en las universidades estadounidenses. Existe unproyecto denominado NEOS (www.neos.mcs.anl.gov) para el cálculo distribuido que permite el envío de problemas de optimización escritos en AMPL o GAMS a través de internet y éstos son resueltos en servidores de la red devolviendo los resultados de la optimización. GAMS es un lenguaje de modelización, más que un programa para resolver problemas de optimización. La ventaja que presenta este programaGAMS, es que junto al módulo de modelización (base) incorpora diferentes solver (algoritmos de resolución de problemas) tanto de programación no lineal, como lineal y entera.
INFORMACION BASICA
Para resolver un problema de optimización mediante GAMS es necesario preparar un proyecto. Para ello elige “file” “Project” “New Project”. A este proyecto se vincularán todos los archivos que tengan quever con el proyecto: archivo de modelos, archivos de datos, archivos de opciones, etc que se deberán almacenar todos en la misma carpeta.
Los modelos se editan en un “input file” en donde se definen todos los elementos básicos: VARIABLES, EQUATIONS, MODEL, SOLVE, etc.
En este archivo pueden ir todos los datos y opciones, o estos pueden estar en otros archivos a los que se vincula con elcódigo: $include Nombredelarchivo
Para construir el archivo, se abre GAMSIDE y en la página en blanco que ofrece, se escribe, no el problema de forma explicita sino la siguiente información porque luego, cuando se compila, GAMS formula el problema en forma explicita (estándar). En la página en blanco es necesario declarar:
1. Los sets (subíndices: i, j, etc.)
2. scalars, parámetros delproblema
3. Parameters , datos en matrices de una dimensión
4. table, datos en matrices de varias dimensiones
5. Las variables que aparecen en el problema
6. tipo de las variables (no negativas, enteras, binarias, etc.).
7. El nombre de las ecuaciones: función objetivo y restricciones (equations)
8. la expresión matemática de estas ecuaciones (incluye a la función objetivo y a las restricciones)9. El nombre del modelo general y las ecuaciones que forman el modelo (all si son todas).
10. La declaración de resolución, el solver (NLP, LP, MIP, ...que significan no lineal, lineal programación mixta, respectivamente) y si se quiere maximizar o minimizar la variable correspondiente a la función objetivo
11. Declaración de cómo se desea que muestre los resultados.
En las ecuaciones lossignos relacionales usados son: =e= (igual), =l= (menor o igual que), =g= (mayor o igual que), =lt= (menor que). Los tipos de variables posibles son: Free, positive, negative, binary e integer. Para expresar el tipo de variable debe colocarse, en la sección de tipo de variables, por ejemplo: “Positive variable X”; o” Binary Variable Y”.
Los operadores más usados son: + (suma), - (resta), *(multiplicación), / (división) y **(Exponenciación).
sum (i,función) o sum((i,j), función), prod()
Complementos del lenguaje:
1. Cuando se desea introducir en una función todos los valores de un subíndice, en la función correspondiente se introduce el nombre del subíndice, por ejemplo x(i)
2. Cuando se desea introducir un subíndice específico se pone entre comillas, por ejemplo x(‘3’)....
Regístrate para leer el documento completo.