AMPL is a language and environment for expressing and manipulating mathematical programming problems, i.e., minimizing or maximizing an algebraic objective function subject to algebraic constraints. AMPL permits separating a model, i.e., a symbolic representation of a class of problems, from the data required to specify a particular problem instance. Once AMPL has a problem instance, it can make simplifications before transmitting the problem to a solver; these simplifications sometimes benefit from use of directed roundings. Expression graphs sent to the solver can be manipulated by the AMPL/solver interface library to arrange for efficient gradient and Hessian computations. The net effect is that hidden symbolic and algebraic manipulations play a significant role in making life easier for AMPL users, who usually want to concentrate on formulating and using their intended mathematical programming problems, rather than worrying about arcane technical details. This paper was written for the proceedings of a seminar on "Symbolic-algebraic Methods and Verification Methods -- Theory and Applications", held 21-26 November 1999 at Schloss Dagstuhl.
Technical Report 00-3-03 Computing Sciences Research Center Bell Laboratories Murray Hill, NJ 07974, USA 21 July 2000