El sistema general de modelado algebraico ( GAMS ) es un sistema de modelado de alto nivel para la optimización matemática . GAMS está diseñado para modelar y resolver problemas de optimización lineal , no lineal y de enteros mixtos . El sistema está adaptado a aplicaciones de modelado complejas y a gran escala, y permite al usuario construir modelos grandes y mantenibles que pueden adaptarse a nuevas situaciones. El sistema está disponible para su uso en diversas plataformas informáticas. Los modelos son portátiles entre plataformas.
GAMS fue el primer lenguaje de modelado algebraico (AML) [ 2 ] y es formalmente similar a los lenguajes de programación de cuarta generación de uso común . GAMS contiene un entorno de desarrollo integrado (IDE) y está conectado a un grupo de solucionadores de optimización de terceros . Entre estos solucionadores se encuentran BARON , los solucionadores COIN-OR , CONOPT, COPT Cardinal Optimizer , CPLEX , DICOPT, IPOPT , MOSEK , SNOPT y XPRESS .
GAMS permite a los usuarios implementar un algoritmo híbrido que combina diferentes solucionadores. Los modelos se describen mediante enunciados algebraicos concisos y fáciles de entender. GAMS es uno de los formatos de entrada más populares para el servidor NEOS . Aunque inicialmente se diseñó para aplicaciones relacionadas con la economía y la administración , cuenta con una comunidad de usuarios de diversas disciplinas de ingeniería y ciencias.
Cronología
- La idea de GAMS de 1976 se presenta en el Simposio Internacional sobre Programación Matemática (ISMP), Budapest [ 3 ].
- 1978 Fase I: GAMS admite programación lineal . Plataformas compatibles: Mainframes y estaciones de trabajo Unix.
- 1979 Fase II: GAMS admite programación no lineal .
- En 1987, GAMS se convierte en un producto comercial.
- 1988 Primer sistema PC (16 bits)
- 1988 Alex Meeraus, iniciador de GAMS y fundador de GAMS Development Corporation, recibe el Premio de la Sociedad de Computación INFORMS.
- 1990 32 bits Dos Extender
- En 1990, GAMS se traslada a Georgetown, Washington, DC.
- Capacidad de programación no lineal de enteros mixtos (DICOPT) de 1991
- GAMS de 1994 admite problemas de complementariedad mixta
- En 1995 se añadió el lenguaje MPSGE para el modelado CGE.
- En 1996 se inaugura la sucursal europea en Alemania.
- Windows nativo de 32 bits de 1998
- 1998 Capacidad de programación estocástica (OSL/SE, DECIS)
- 1999 Introducción del entorno de desarrollo integrado (IDE) GAMS
- 2000 Fin del soporte para DOS y Win 3.11
- Se inició la iniciativa mundial de GAMS en el año 2000.
- En 2001 se introdujo el Intercambio de Datos GAMS (GDX).
- GAMS 2002 figura en la lista de hitos del 50.º aniversario de OR/MS.
- Se añade la programación cónica de 2003.
- Optimización global en GAMS (2003)
- En 2004 se inicia la iniciativa de garantía de calidad.
- Soporte para programas con restricciones cuadráticas en 2004
- Compatibilidad con sistemas operativos de PC de 64 bits (Mac PowerPC / Linux / Windows) desde 2005.
- GAMS 2006 admite computación en malla paralela
- GAMS 2007 admite solucionadores de código abierto de COIN-OR.
- Soporte para Solaris en Sparc64 (2007)
- Compatibilidad con Mac OS X de 32 y 64 bits (2008)
- Los Juegos Olímpicos de 2009 (GAMS) están disponibles en la nube elástica de Amazon.
- GAMS 2009 admite programas matemáticos extendidos ( EMP ).
- En 2010, GAMS recibió el premio empresarial de la Sociedad Alemana de Investigación Operativa (GOR).
- Interfaz GDXMRW 2010 entre GAMS y Matlab
- 2010 Fin del soporte para Mac PowerPC / Dec Alpha / SGI IRIX / HP-9000 / HP-UX
- Soporte para bibliotecas de funciones extrínsecas en 2011
- 2011: Fin del soporte para Win95 / 98 / ME y Win2000.
- 2012 Entre los ganadores del Premio INFORMS Impact 2012 se encontraba Alexander Meeraus. El premio se otorgó a los creadores de los cinco lenguajes de modelado algebraico más importantes.
- Introducción en 2012 de la API orientada a objetos para .NET, Java y Python.
- 2012 Los ganadores de la Copa Coin OR 2012 fueron Michael Bussieck, Steven Dirkse y Stefan Vigerske por GAMSlinks.
- 2012 Fin del soporte para 32 bits en Mac OS X
- Soporte para MIP distribuido (Cplex) en 2013
- Extensión de programación estocástica de GAMS EMP (2013)
- Interfaz GDXRRW de 2013 entre GAMS y R
- En 2014, se añadió LocalSolver, un solucionador de búsqueda local, a la cartera de solucionadores.
- 2014 Fin del soporte para Linux de 32 bits y Solaris de 32 bits.
- Documentación LaTeX de 2015 procedente de la fuente GAMS (Model2TeX)
- 2015 Fin del soporte para Windows XP
- Nuevo equipo directivo de 2016
- Instalación de código embebido 2017
- API de C++ 2017
- Introducción de las plataformas "Core" y "Peripheral" en 2017.
- GAMS Studio 2018 (Beta)
- 2018 Fin del soporte para Solaris x86-64
- GAMS MIRO 2019 - Interfaz de modelo con orquestación rápida (Beta)
- 2019 Fin del soporte para Win7, se trasladó Windows de 32 bits a plataformas periféricas [ 4 ]
- 2019 Se modificó el esquema de versiones a XX.YZ
- Introducción del programa de licencias para demos y para la comunidad en 2020.
- Lanzamiento oficial en 2020 de GAMS MIRO (Interfaz de modelos con orquestación rápida) para el despliegue de modelos GAMS como aplicaciones interactivas.
- Lanzamiento oficial de GAMS Engine en 2021, la nueva solución para ejecutar trabajos de GAMS en entornos de nube.
- Lanzamiento oficial en 2022 de GAMS Engine SaaS, la versión alojada de GAMS Engine.
- Lanzamiento en 2023 de GAMSPy, un paquete de Python que permite el modelado algebraico en Python, utilizando GAMS como backend.
- Certificación ISO 27001 para 2024
- Adquisición en 2024 de la propiedad intelectual del solucionador no lineal CONOPT por parte de GAMS.
Fondo
Los principales impulsores del desarrollo de GAMS fueron los usuarios de programación matemática que creían en la optimización como un marco potente y elegante para resolver problemas reales en ciencia e ingeniería. Al mismo tiempo, estos usuarios se sentían frustrados por los altos costos, los requisitos de habilidades y la baja fiabilidad general de las herramientas de optimización. La mayoría de las iniciativas del sistema y el apoyo a su desarrollo surgieron en respuesta a problemas en los campos de la economía, las finanzas y la ingeniería química , ya que estas disciplinas conciben y comprenden el mundo como un programa matemático.
El impulso para el desarrollo de GAMS surgió de la frustrante experiencia de un gran grupo de modelización económica en el Banco Mundial . En retrospectiva, podría considerarse una casualidad histórica que en la década de 1970 se reuniera a economistas matemáticos y estadísticos para abordar problemas de desarrollo. Utilizaron las mejores técnicas disponibles en ese momento para resolver modelos multisectoriales de la economía en su conjunto y grandes modelos de simulación y optimización en agricultura, acero, fertilizantes, energía, uso del agua y otros sectores. Si bien el grupo produjo investigaciones impresionantes, el éxito inicial fue difícil de reproducir fuera de su entorno de investigación, que funcionaba a la perfección. Las técnicas existentes para construir, manipular y resolver dichos modelos requerían varias traducciones manuales, laboriosas y propensas a errores, a diferentes representaciones específicas para cada problema, necesarias para cada método de solución. Durante las presentaciones en seminarios, los modeladores tenían que defender las versiones existentes de sus modelos, a veces de forma bastante irracional, debido a limitaciones de tiempo y dinero. Sus modelos simplemente no podían trasladarse a otros entornos, porque se necesitaban conocimientos de programación especiales, y los formatos de datos y los métodos de solución no eran portátiles.
La idea de un enfoque algebraico para representar, manipular y resolver modelos matemáticos a gran escala fusionó paradigmas antiguos y nuevos en un sistema coherente y computacionalmente viable. El uso de matrices generadoras para programas lineales reveló la importancia de nombrar filas y columnas de manera consistente. La conexión con el emergente modelo de datos relacional se hizo evidente. La experiencia con lenguajes de programación tradicionales para gestionar esos espacios de nombres llevó naturalmente a pensar en términos de conjuntos y tuplas , lo que condujo al modelo de datos relacional.
Combinar la notación algebraica multidimensional con el modelo de datos relacional era la respuesta obvia. Las técnicas de escritura de compiladores ya estaban muy extendidas, y lenguajes como GAMS podían implementarse con relativa rapidez. Sin embargo, traducir esta rigurosa representación matemática al formato específico del algoritmo requería el cálculo de derivadas parciales en sistemas muy grandes. En la década de 1970, TRW desarrolló un sistema llamado PROSE que tomaba las ideas de los ingenieros químicos para calcular derivadas puntuales exactas en un punto dado y las integraba en un lenguaje de modelado de cálculo consistente, al estilo Fortran . El sistema resultante permitía al usuario utilizar derivadas exactas de primer y segundo orden generadas automáticamente. Este fue un sistema pionero y una importante demostración de un concepto. Sin embargo, PROSE tenía varias deficiencias: no podía manejar sistemas grandes, la representación del problema estaba ligada a una estructura de datos de tipo matriz que requería cálculos de direcciones, y el sistema no proporcionaba acceso a métodos de solución de vanguardia. De la programación lineal, GAMS aprendió que la explotación de la dispersión era clave para resolver problemas grandes. De este modo, la última pieza del rompecabezas fue el uso de estructuras de datos dispersas.
Las líneas que comienzan con una *en la primera columna se tratan como comentarios. [ 5 ] : 32
Un modelo de muestra
Se utiliza un problema de transporte de George Dantzig para proporcionar un modelo GAMS de ejemplo. [ 6 ] Este modelo forma parte de la biblioteca de modelos, que contiene muchos más modelos GAMS completos. Este problema busca un programa de envío de menor costo que satisfaga las necesidades de los mercados y los suministros de las fábricas.
Dantzig , GB, Capítulo 3.3. En Programación lineal y extensiones. Princeton University Press, Princeton, Nueva Jersey, 1963.
Conjuntos plantas de enlatado / Seattle, San Diego / Mercados j / Nueva York, Chicago, Topeka / ; Parámetros a(i) capacidad de la planta i en los casos / Seattle 350 San Diego 600 / b(j) demanda en el mercado j en casos / Nueva York 325 Chicago 300 Topeka 275 / ; Tabla d(i,j) distancia en miles de millas Nueva York Chicago Topeka Seattle 2.5 1.7 1.8 San Diego 2.5 1.8 1.4; Tarifa f flete en dólares por caja por cada mil millas /90/ ; Parámetro c(i,j) costo de transporte en miles de dólares por caja; c(i,j) = f * d(i,j) / 1000 ; Variables x(i,j) cantidades de envío en cajas z costos totales de transporte en miles de dólares; Variable positiva x; Ecuaciones El costo define la función objetivo suministro(i) observar el límite de suministro en la planta i demanda(j) satisface la demanda en el mercado j; costo .. z =e= suma((i,j), c(i,j)*x(i,j)) ; suministro(i) .. suma(j, x(i,j)) =l= a(i) ; demanda(j) .. suma(i, x(i,j)) =g= b(j) ; Modelo de transporte /todos/ ; Resuelva el transporte usando lp minimizando z; Mostrar xl, xm;
Subsistemas
El Sistema de Programación Matemática para el Análisis de Equilibrio General (MPSGE) es un lenguaje utilizado para formular y resolver modelos de equilibrio económico de Arrow-Debreu y existe como un subsistema dentro de GAMS. [ 7 ]
Véase también
- Programación matemática extendida (EMP) : una extensión de los lenguajes de programación matemática disponible en GAMS.
- GNU MathProg : un lenguaje de programación matemática de código abierto basado en AMPL.
Referencias
- ↑ "54 Distribución" . gams.com . Consultado el 16 de julio de 2026 .
- ↑ Kallrath, Josef (2004). Modeling Languages in Mathematical Optimization (Primera ed.). Norwell, EE. UU.: Kluer Academic Publishers. pág. 241. ISBN 978-1-4613-7945-4.
- ↑ Hacia un sistema general de modelado algebraico (PDF) . IX Simposio Internacional sobre Programación Matemática. Budapest, Hungría. 1976. pág. 185.
- ↑ "Eliminación gradual del soporte para 32 bits con GAMS 30" .
- ↑ Rosenthal, Richard E (2007). GAMS — Guía del usuario (PDF) . Washington, DC, EE. UU.: GAMS Development Corporation . Recuperado el 20 de diciembre de 2020 .
- ↑ RE Rosenthal (1988). "Capítulo 2: Un tutorial de GAMS". GAMS: Guía del usuario . The Scientific Press, Redwood City, California.
- ↑ Rutherford, TF (1999). "Modelado de equilibrio general aplicado con MPSGE como subsistema GAMS: una descripción general del marco de modelado y la sintaxis". Economía Computacional . 14 (1/2): 1– 4. doi : 10.1023/A:1008655831209 . S2CID 60954697 .
Enlaces externos
- Corporación de Desarrollo GAMS
- GAMS Software GmbH
- Mundo de los Juegos
- Sistemas de álgebra computacional
- Software de optimización matemática