AMPL is a comprehensive and powerful algebraic modeling language for linear and nonlinear optimization problems, in discrete or continuous variables. Developed at Bell Laboratories, AMPL lets you use common notation and familiar concepts to formulate optimization models and examine solutions, while the computer manages communication with an appropriate solver. AMPL's flexibility and convenience render it ideal for rapid prototyping and model development, while its speed and control options make it an especially efficient choice for repeated production runs.
Key modeling language features
Broad support for sets and set operators. AMPL models can use sets of pairs, triples, and longer tuples; collections of sets indexed over sets; unordered, ordered, and circular sets of objects; and sets of numbers.
General and natural syntax for arithmetic, logical, and conditional expressions; familiar conventions for summations and other iterated operators.
Nonlinear programming features such as initial primal and dual values, user-defined functions, fast automatic differentiation, and automatic elimination of "defined" variables.
Convenient alternative notations including node and arc declarations for network problems, a special syntax for piecewise-linear functions, and columnwise specification of linear coefficients.
Key modeling environment features
Interactive command environment with batch processing options. Powerful display commands let you view any model component or expression, browsing on-screen or writing to a file, using automatic formatting or your own preferences.
New looping and if-then-else commands. Simple programs in the AMPL command language can now be written to solve sequences of related problems, for sensitivity analysis and for decomposition or other iterative schemes.
Separation of model and data. AMPL models remain concise even as sets and data tables grow. Models may incorporate many kinds of conditions for validity of the data.
Interfaces to popular and sophisticated solvers including CONOPT, CPLEX, LAMPS, LANCELOT, LOQO, LSGRG, MINOS, OSL, SNOPT, and XA.