The General Algebraic Modeling System (GAMS) is a high-level modeling system for mathematical programming and optimization. It consists of a language compiler and a stable of integrated high-performance solvers. GAMS is tailored for complex, large scale modeling applications, and allows you to build large maintainable models that can be adapted quickly to new situations. GAMS is specifically designed for modeling linear, nonlinear and mixed integer optimization problems.
Cutting Edge Modeling
Focusing on the modeler
GAMS allows its users to formulate mathematical models in a way that is very similar to their mathematical description. Take a look at this simple example that illustrates the basic structure and characteristics of a GAMS model and how it relates to the mathematical formulation. The GAMS Tutorial explains the same model in a more extensive way, or take a look at this video on our YouTube channel.
Through this, GAMS lets the user concentrate on modeling. GAMS encourages good modeling habits itself by requiring concise and exact specification of entities and relationships. The GAMS language is formally similar to common programming languages. It is therefore familiar to anyone with programming experience. But since the model is formulated in a way that is similar to its mathematical description, it can be understood and maintained not only by programmers, but also by the actual domain experts. GAMS focuses on the modeler and allows him to do all relevant things himself.
The balanced mix of declarative and procedural elements allows building complex algorithms and even the implementation of decomposition methods in GAMS. This is especially relevant for models addressing unusual problems that oftentimes come along with performance issues.
Design Principles That Make a Difference
"We make an effort to fit in, rather than take over."
GAMS focuses on its core competence: empowering our users to build readable, maintainable models and to solve them with the best solvers available anywhere. Our open architecture and the many data interfaces provided allow seamless communication with external systems.
Model, solver, data, platform and user interface are separated in independent layers, making it easy to switch a solver, use multiple data sets, run on multiple platforms, and integrate GAMS into existing applications, structures, and workflows.
Independence of Model and Solver
We offer an exceptionally extensive and diverse portfolio of more than 25 solvers, including all the expected commercial solvers.
- LP/MIP/QCP/MIQCP: CPLEX, GUROBI, MOSEK, XPRESS
- NLP: CONOPT, IPOPTH, KNITRO, MINOS, SNOPT
- MINLP: ALPHAECP, ANTIGONE, BARON, DICOPT, OQNLP, SBB
- Solvers for Mixed Complementarity Problems (MCP), Mathematical Programs with Equilibrium Constraints (MPEC), and Constrained Nonlinear Systems (CNS)
- Free alternatives bundled with every GAMS system (e.g. BONMIN (MINLP), CBC (LP, MIP), COUENNE (MINLP), IPOPT (NLP); for academic licenses also SCIP and SOPLEX
Selecting the solver to use is simple - just change one line of code or adjust one option setting. No need to reimplement anything in order to compare solver performance or see what improvements are possible. Similarly, you can switch easily between model types (e.g. linear and nonlinear), so experimenting with different formulations is easy.
With GAMS, you get one environment for a wide range of model types and solvers.
Independence of Model and Data
You can write the model independently of the data, and include data from many different kinds of sources, from plain ASCII to Excel or Access and many others, for example using the GDX (GAMS Data eXchange) file format.
A GDX file is a file that stores the values of one or more GAMS symbols such as sets, parameters variables and equations. GDX files can be used to prepare data for a GAMS model, present results of a GAMS model, store results of the same model using different parameters etc. A GDX file does not store a model formulation or executable statements.
GDX files are binary files that are portable between different platforms.
The video GAMS and Excel - Using GDX to Transfer Data on our YouTube channel illustrates this for Excel.
Independence of Model and Platform
Models are fully portable between platforms - write once, run anywhere.
GAMS runs on Windows, Linux, Mac OS X, SOLARIS, Sparc Solaris, and IBM Power AIX.
Independence of Model and User Interface
The GAMS object-oriented APIs allow the seamless integration of GAMS into an application by providing appropriate classes for the interaction with GAMS. The three versions of the object-oriented GAMS API: .NET, Java, and Python work with .NET framework 4 (Visual Studio 2010), Java SE 5 and up, as well as Python 3.4, 2.7, and 2.6 accordingly.
In addition to the object-oriented GAMS APIs, there are expert-level (or low-level) GAMS APIs whose usage requires advanced knowledge of GAMS component libraries. See our documentation for further information on the APIs.
In addition to the APIs, GAMS offers smart links to applications like MS Excel, MatLab, or R. Through these, the user can keep working in his productive tool environment, while the application accesses all optimization capabilites of GAMS through an API. This allows for example the visualization and analyses of model data and results in the application.
Large, Global User Community
GAMS is used in more than 120 countries by multinational companies, universities, research institutions and governments in many different areas, including the energy and chemical industries, for economic modelling, agricultural planning, or manufacturing.
Check out our Case Studies to see what our users are doing with GAMS around the world.