General Algebraic Modelling System (GAMS)

domingo, 2 de octubre de 2011 - Publicado por Diana Marcela Polo en 14:11
El nombre GAMS se deriva de las iníciales de General Algebraic Modelling System, que como su propio nombre indica es un lenguaje de modelización, más que un programa para resolver problemas de optimización. La ventaja que presenta este programa, 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.

El lenguaje GAMS posee diferentes versiones (estudiante, profesional, workstation, mainframe, etc.) que se diferencian básicamente en las posibilidades de resolución de problemas de diferente tamaño, así por ejemplo, en la versión básica de estudiante existen una serie de limitaciones en cuanto al tamaño del problema que admite un máximo de 1000 elementos distintos de cero en los problemas lineales y no lineales, y de 20 variables enteras. Estas limitaciones no son importantes para los ejercicios prácticos que se desarrollan en las clases.

Una de las grandes ventajas de GAMS es la facilidad de migrar a versiones superiores ya que el formato general es idéntico tanto en un PC como en un supercomputador en paralelo. Otra de las ventajas es también la capacidad de resolver diferentes versiones de un mismo modelo, tanto como problema no lineal, lineal y entero, y el poder usar diferentes solvers.
De entre ellos podemos citar los siguientes:

Problemas
Solver
NLP
CONOPT, MINOS, etc.
LP
OSL, CPLEX, MINOS, BDMLP, XA, etc.
MIP
OSL, ZOOM, CPLEX, XA; etc.
MINLP
DICOPT

Además, dentro de cada uno de estos solver, se pueden elegir diferentes opciones. Por ejemplo, para resolver los problemas lineales con la librería OSL, podemos elegir los siguientes algoritmos:                           




Características del Sistema GAMS


Los modelos pueden ser desarrollados y documentados de forma simultánea puesto que GAMS permite al usuario incluir un texto explicativo, como parte de la definición de cualquier símbolo o una ecuación.





ESPECIALISTAS EN SOLUCIÓN……




Tipos de modelos

GAMS puede modelar diferentes tipos de problemas lo que quiere decir que es muy fácil cambiar de un tipo de modelo a otro sin muchas complicaciones. Tanto es, que se puede utilizar la misma información, índices, parámetros, variables, ecuaciones, y restricciones en diferentes modelos, ¡todo al mismo tiempo!


Algunos de los modelos que se pueden hacer con GAMS son:


LP: Programación Lineal.

MIP: Programación Entera Mixta.

NLP: Programación No Lineal.

MCP: Problemas de Complementariedad Mixta.

MPEC: Programación Matemátia con Restricciones de equilibrio.

CNS: Sistemas No Lineales Restringidos

DNLP: Programación No Lineal con Derivadas Discontinuas.

MINLP: Programación No Lineal Entera Mixta.

QCP: Programación con Restricciones Cuadráticas.

MIQCP: Programación Entera Mixta con Restricciones Cuadráticas.



Esta tabla muestra que tipo de solver es capaz de hacer alguno de estos 10 tipos de modelos básicos:


          Matriz tomada de: http://www.gams.com/modtype/index.htm



Documentación en línea

En la página de GAMS, www.GAMS.com  , si lo desean pueden descargar la documentación sobre GAMS.
En la siguiente tabla se encuentran los diferentes links para descargar la información que se desea.

DOCUMENTO
link
Tutorial GAMS
GAMS-Guía de Usuario
Notas de instalación para Windows
Notas de instalación para Unix y Mac
Notas sobre la versión
Nota: los documentos se encuentran en Ingles.

A continuación se muestra una lista de Solvers con los que cuenta GAMS:



 APORTES REALIZADOS POR PERSONAS QUE TRABAJAN CON GAMS




Al trabajar con GAMS podemos ver que es muy fácil escribir texto y que este texto será ignorado por GAMS, si le decimos que es un comentario y eso lo indicamos con un asterisco (*) en el inicio de la línea. Este símbolo es de hecho nuestra primera instrucción en GAMS. Los comentarios son útiles para documentar los procedimientos que se siguen, y es una buena práctica utilizar frecuentemente comentarios aclaratorios. Si nos olvidamos de añadir un asterisco, entonces GAMS detecta un error y nos lo dice. (Ver la figura adjunta en la que añadimos otros comentarios). 
En este caso el usuario se le olvido el asterisco en la última línea. GAMS  dice que detecta errores y le informa qué tipo de error es probable que se este cometiendo, al dar click en el mensaje de error se envía a la línea donde se ha detectado el error, a fin de que el usuario intente depurarlo. 


GAMS a contribuido a la solución de diferentes problemas asociados a la economía, Rob Dellink es el autor de un importante libro, que deja en claro  la actividad económica, mediante los diferentes modelos aplicados.

Ramón Sala-Garrido; GAMS Documentation in Spanish

Ejercicios Resueltos con GAMS
              >>>    http://www.uv.es/~sala/gams/Lineal01.pdf


Implementación de GAMS para la solución de un modelo:

Subasta combinatoria

En algunas subastas los elementos aparecen agrupados por paquetes no necesariamente disyuntos y la oferta que hace el posible comprador por cada paquete no es la suma de los precios de sus elementos, puede ser mayor o menor.


                                  
En Gams:



La solución es:        x = (1,1,1,0,0,0),     z = 21     





Video guía sobre cómo manejar GAMS






GAMS Timeline



En el siguiente link  podrás encontrar  una gran variedad de presentaciones de GAMS, sobre diversas temáticas para complementar la línea de tiempo.