2 (Algebraic) Modeling Languages

Algebraic Modeling Languages are computer executable specialized language to represent mathematical models. Their syntax is similar to the mathematical notation of optimization problems: They use sets, indices, multi-dimensional data-cube, variables, algebraic expressions to specify constraints and objectives. The model representation is purely declarative and does not give any indication on how to process or solve the model. The language has an interface to one or several separate “solvers” – procedures or libraries that can solve the model. The main task of the language is to create a complete model instance (model structure + data), to call a solver, and then to output an appropriate result. Depending on the model type (linear, integer, non-linear, etc.) the model must be solved by a different solver. Some solvers are limited (but eventually efficient) to solve linear model, others are specialized on non-linear differentiable problems, still others on Boolean problems, or others. Normally, an (existing) algebraic language is not a full-fledged programming language, or it includes a limited number of procedures to manipulate data or to output results.

One of the first algebraic modeling language was GAMS, developed in the 1980’s, and is still a major and prominent player on the market. Shortly after, a first version of AMPL, a powerful tool, came out and is one of the most widespread language.

  2.1 GAMS
   2.1.1 Coexisting Armies of Queens (coexx)
  2.2 AMPL
   2.2.1 Transshipment Problem with fixed costs (multmip1)
   2.2.2 Anti-Assignment Problem (balAssign0)
  2.3 LINDO/LINGO
   2.3.1 Data Envelopment Analysis (deamod)
  2.4 LocalSolver
   2.4.1 Capacitated Vehicle Routing Problem (cvrp2)
  2.5 MiniZinc
   2.5.1 Sudoku Puzzle (sudokuM)
   2.5.2 Light Up Puzzle (lightup1)
  2.6 AIMMS
   2.6.1 A non-transitive relation (dice)
  2.7 MOSEL
   2.7.1 A Tiny Planning Model (tiny-initial)
  2.8 OPL
   2.8.1 Multi-commodity Transportation (transp3)
  2.9 MATLAB
   2.9.1 Steel Blending (mixing)
  2.10 Other Modeling Language Tools