Algebraic modeling language

From Wikipedia, the free encyclopedia

Algebraic Modeling Languages (AML) are high-level programming languages for describing and solving high complexity problems for large scale mathematical computation (i.e. large scale optimization type problems). One particular advantage of AMLs like AIMMS, AMPL, GAMS and OPL is the similarity of its syntax to the mathematical notation of optimization problems. This allows for a very concise and readable definition of problems in the domain of optimization, which is supported by certain language elements like sets, indices, algebraic expressions, powerful sparse index and data handling variables, constraints with arbitrary names. The algebraic formulation of a model does not contain any hints how to process it.

An AML does not solve those problems directly; instead, it calls appropriate external algorithms to obtain a solution. These algorithms are called solvers and can handle certain kind of mathematical problems like:

  • linear problems
  • integer problems
  • (mixed integer) quadratic problems
  • mixed complementarity problems
  • mathematical programs with equilibrium constraints
  • constrained nonlinear systems
  • general nonlinear problems
  • non-linear programs with discontinuous derivatives
  • nonlinear integer problems
  • global optimization problems
  • stochastic optimization problems

[edit] Core Elements

The core elements of an AML are:

  • a modeling language interpreter (the AML itself)
  • solver links
  • user interfaces (UI)
  • data exchange facilities

[edit] Design Principles

Most AML follow certain design principles:

  • a balanced mix of declarative and procedural elements
  • open architecture and interfaces to other systems
  • different layers with separation of:
    • model and data
    • model and solution methods
    • model and operating system
    • model and interface

[edit] See also