El Sistema de modelado algebraico general ( GAMS ) es un sistema de modelado de alto nivel para la optimización matemática . GAMS está diseñado para modelar y resolver lineal , no lineal , y la optimización de enteros mixto problemas. El sistema está diseñado para aplicaciones de modelado complejas a gran escala y permite al usuario construir grandes modelos mantenibles que se pueden adaptar a nuevas situaciones. El sistema está disponible para su uso en varias plataformas informáticas. Los modelos son portátiles de una plataforma a otra.
Desarrollador (es) | Corporación de Desarrollo de GAMS |
---|---|
Lanzamiento estable | 35.1.0 / 29 de abril de 2021 [1] |
Plataforma | Multiplataforma |
Tipo | Lenguaje de modelado algebraico (AML) |
Licencia | Propiedad |
Sitio web | www |
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, COIN-OR , CONOPT, CPLEX , DICOPT, Gurobi , MOSEK , SNOPT , SULUM y XPRESS .
GAMS permite a los usuarios implementar una especie de algoritmo híbrido que combina diferentes solucionadores. Los modelos se describen en enunciados algebraicos concisos y legibles por humanos. GAMS se encuentra entre los formatos de entrada más populares para el servidor NEOS . [ cita requerida ] Aunque inicialmente se diseñó para aplicaciones relacionadas con la economía y las ciencias de la administración , tiene una comunidad de usuarios de diversos orígenes de la ingeniería y la ciencia .
Cronología
- 1976 La idea de GAMS se presenta en el Simposio Internacional de 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 .
- 1987 GAMS se convierte en un producto comercial
- 1988 Primer sistema de PC (16 bits)
- 1988 Alex Meeraus, el iniciador de GAMS y fundador de la Corporación de Desarrollo GAMS , se otorga INFORMS Sociedad Informática Premio
- 1990 Extensor Dos de 32 bits
- 1990 GAMS se traslada a Georgetown, Washington, DC
- 1991 Capacidad de programas no lineales enteros mixtos (DICOPT)
- 1994 GAMS apoya problemas mixtos de complementariedad
- 1995 Se agrega el lenguaje MPSGE para el modelado CGE
- 1996 Se abre una sucursal europea en Alemania
- 1998 Windows nativo de 32 bits
- 1998 Capacidad de programación estocástica (OSL / SE, DECIS)
- 1999 Introducción del entorno de desarrollo integrado (IDE) de GAMS
- 2000 Fin del soporte para DOS y Win 3.11
- 2000 Inicia la iniciativa GAMS World
- 2001 Se introduce el intercambio de datos GAMS (GDX)
- 2002 GAMS aparece en la lista de hitos del 50 aniversario de OR / MS
- 2003 Se agrega programación cónica
- 2003 Optimización global en GAMS
- 2004 Comienza la iniciativa de garantía de calidad
- 2004 Soporte para programas con restricciones cuadráticas
- 2005 Soporte para sistemas operativos de PC de 64 bits (Mac PowerPC / Linux / Win)
- 2006 GAMS admite la computación en cuadrícula paralela
- 2007 GAMS admite solucionadores de código abierto de COIN-OR
- 2007 Soporte para Solaris en Sparc64
- 2008 Soporte para Mac OS X de 32 y 64 bits
- 2009 GAMS disponible en Amazon Elastic Compute Cloud
- 2009 GAMS admite programas matemáticos extendidos ( EMP )
- 2010 GAMS recibe el premio de empresa 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
- 2011 Soporte para bibliotecas de funciones extrínsecas
- 2011 Fin del soporte para Win95 / 98 / ME y Win2000
- 2012 Los ganadores del premio INFORMS Impact de 2012 incluyeron a Alexander Meeraus. El premio fue otorgado a los creadores de los cinco lenguajes de modelado algebraico más importantes [1] .
- 2012 Introducción de la API orientada a objetos para .NET, Java y Python
- 2012 Los ganadores de la Coin OR Cup 2012 incluyeron a Michael Bussieck, Steven Dirkse y Stefan Vigerske para GAMSlinks.
- 2012 Fin del soporte para 32 bits en Mac OS X
- 2013 Soporte para MIP distribuido (Cplex / Gurobi)
- 2013 Extensión de la programación estocástica de GAMS EMP
- Interfaz GDXRRW 2013 entre GAMS y R
- 2014 solucionador de búsqueda local LocalSolver agregado a la cartera de solucionadores
- 2014 Fin del soporte para Linux de 32 bits y Solaris de 32 bits
- Documentación de 2015 LaTeX de la fuente GAMS ( Model2TeX )
- 2015 Fin del soporte para Win XP
- 2016 Nuevo equipo directivo
- 2017 EmbeddedCode Facilidad
- API de C ++ 2017
- 2017 Introducción de las plataformas "Core" y "Peripheral"
- 2018 GAMS Studio (Beta)
- 2018 Fin del soporte para x86-64 Solaris
- 2019 GAMS MIRO - Interfaz de modelo con orquestación rápida (Beta)
- 2019 Fin del soporte para Win7, trasladó Windows de 32 bits a plataformas periféricas
- 2019 Esquema de control de versiones modificado a XX.YZ
- 2020 Introducción del esquema de licencias de demostración y comunidad
- 2020 Lanzamiento oficial de GAMS MIRO (Model Interface with Rapid Orchestration) para la implementación de modelos GAMS como aplicaciones interactivas
- 2021 Lanzamiento oficial de GAMS Engine, la nueva solución para ejecutar trabajos de GAMS en entornos de nube
Fondo
La fuerza impulsora detrás del desarrollo de GAMS fueron los usuarios de programación matemática que creían en la optimización como un marco poderoso y elegante para resolver problemas de la vida real en ciencia e ingeniería. Al mismo tiempo, estos usuarios se sintieron frustrados por los altos costos, los requisitos de habilidades y la baja confiabilidad general de la aplicación de herramientas de optimización. La mayoría de las iniciativas del sistema y el apoyo a nuevos desarrollos surgieron en respuesta a problemas en los campos de la economía , las finanzas y la ingeniería química , ya que estas disciplinas ven y entienden el mundo como un programa matemático.
El ímpetu de GAMS por el desarrollo surgió de la experiencia frustrante de un gran grupo de modelos económicos en el Banco Mundial . En retrospectiva, se puede llamar un accidente histórico que en la década de 1970 se reunieran economistas matemáticos y estadísticos para abordar los problemas del desarrollo. Utilizaron las mejores técnicas disponibles en ese momento para resolver modelos de economía multisectorial y grandes modelos de simulación y optimización en agricultura, acero, fertilizantes, energía, uso de agua y otros sectores. Aunque el grupo produjo una investigación impresionante, el éxito inicial fue difícil de reproducir fuera de su entorno de investigación que funcionaba bien. Las técnicas existentes para construir, manipular y resolver tales modelos requirieron varias traducciones manuales, laboriosas y propensas a errores en diferentes representaciones específicas del problema requeridas por cada método de solución. Durante las presentaciones de los seminarios, los modeladores tuvieron que defender las versiones existentes de sus modelos, a veces de manera bastante irracional, debido a consideraciones de tiempo y dinero . Sus modelos simplemente no se podían mover a otros entornos, porque se necesitaban conocimientos especiales de programación 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ó viejos y nuevos paradigmas en un sistema consistente y computacionalmente manejable. El uso de matrices generadoras para programas lineales reveló la importancia de nombrar filas y columnas de manera coherente. La conexión con el modelo de datos relacionales emergente se hizo evidente. La experiencia en el uso de lenguajes de programación tradicionales para administrar esos espacios de nombres naturalmente lo lleva a uno a pensar en términos de conjuntos y tuplas , y esto lo llevó al modelo de datos relacionales.
La combinación de la notación algebraica multidimensional con el modelo de datos relacionales fue la respuesta obvia. Las técnicas de escritura de compiladores estaban ahora muy extendidas y lenguajes como GAMS podrían implementarse con relativa rapidez. Sin embargo, traducir esta rigurosa representación matemática al formato específico del algoritmo requirió el cálculo de derivadas parciales en sistemas muy grandes. En la década de 1970, TRW desarrolló un sistema llamado PROSE que tomó las ideas de los ingenieros químicos para calcular derivadas puntuales que eran derivadas exactas en un punto dado y para integrarlas en un lenguaje de modelado de cálculo consistente al estilo Fortran . El sistema resultante permitió 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 una serie de deficiencias: no podía manejar sistemas grandes, la representación del problema estaba ligada a una estructura de datos de tipo arreglo que requería cálculos de direcciones y el sistema no brindaba acceso a métodos de solución de vanguardia. De la programación lineal, GAMS aprendió que la explotación de la escasez era clave para resolver grandes problemas. Por lo tanto, la pieza final del rompecabezas fue el uso de estructuras de datos dispersas.
Las líneas que comienzan con una *
en la columna uno se tratan como comentarios. [4] : 32
Un modelo de muestra
Se utiliza un problema de transporte de George Dantzig para proporcionar un modelo GAMS de muestra. [5] Este modelo es parte de la biblioteca de modelos que contiene muchos modelos más completos de GAMS. Este problema encuentra un programa de envío de menor costo que cumple con los requisitos en los mercados y los suministros en las fábricas.
Dantzig , GB, Capítulo 3.3. En Programación Lineal y Extensiones. Princeton University Press, Princeton, Nueva Jersey, 1963.
Conjuntos i enlatadoras / seattle, san diego / j mercados / 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 los casos / nueva-york 325 Chicago 300 topeka 275 /; Tabla d (i, j) distancia en miles de millas topeka de nueva york chicago Seattle 2.5 1.7 1.8 san-diego 2,5 1,8 1,4; Flete escalar en dólares por caja por mil millas / 90 /; Parámetro c (i, j) costo de transporte en miles de dólares por caja; c (yo, j) = f * d (yo, j) / 1000; Variables x (i, j) cantidades de envío en casos 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) satisfacer 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; Pantalla 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 Arrow-Debreu y existe como un subsistema dentro de GAMS. [6]
Ver también
- Programación matemática extendida (EMP) : una extensión de los lenguajes de programación matemática disponible dentro de GAMS
- GNU MathProg : un lenguaje de programación matemática de código abierto basado en AMPL
Referencias
- ^ "Distribución 35" . gams.com . Consultado el 3 de mayo de 2021 .
- ^ Kallrath, Josef (2004). Lenguajes de modelado en optimización matemática (Primera ed.). Norwell, Estados Unidos: Kluer Academic Publishers. pag. 241. ISBN 978-1-4613-7945-4.
- ^ Hacia un sistema de modelado algebraico general (PDF) . IX. Simposio Internacional de Programación Matemática. Budapest, Hungría. 1976. p. 185.
- ^ Rosenthal, Richard E (2007). GAMS: una guía del usuario (PDF) . Washington, DC, Estados Unidos: GAMS Development Corporation . Consultado el 20 de diciembre de 2020 .
- ^ RE Rosenthal (1988). "Capítulo 2: Tutorial de GAMS". GAMS: una guía del usuario . Prensa científica, 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–4. doi : 10.1023 / A: 1008655831209 .
enlaces externos
- Corporación de Desarrollo de GAMS
- GAMS Software GmbH
- Mundo GAMS