Next: COSY Up: Contents Previous: ADOL-C

AD with AMPL, a Modeling Language for Mathematical Programming

SYNOPSIS:

AMPL is a language and computing environment for working with mathematical programming problems (i.e., constrained optimization). AMPL can be viewed as a means of obtaining expression graphs. Separate C or C++ programs can read expression-graph files translated by AMPL and evaluate the expressions and their derivatives for arbitrary purposes. The AMPL/solver interface library has routines for computing first derivatives by backwards automatic differentiation (AD); routines for computing Hessians and Hessian-vector products are forthcoming.

WHOM TO CONTACT:

David M. Gay
Bell Labs, Lucent Technologies
Room 2C-463
600 Mountain Avenue
Murray Hill, NJ 07974-0636
U.S.A.
Tel.: 1-908-582-5623
FAX: 1-908-582-5857
WWW: http://www.cs.bell-labs.com/~dmg
e-mail: dmg@research.bell-labs.com

DOCUMENTS:

FUNCTIONALITY:

AMPL is both a language and a computing environment for expressing, solving, and analyzing mathematical programming problems (minimizing or maximizing a function of decision variables, subject to constraints on the variables). AMPL does not solve problems by itself. Instead, it translates problems to a sparse matrix (for the linear parts of constraints and objectives) and expression graphs (for the nonlinear parts), and invokes separate solver programs, which compute solutions (if they can) and return them to AMPL for possible further manipulation. A library of routines for interfacing solvers with AMPL is available from netlib (see below), as are examples and a report, ``Hooking Your Solver to AMPL'', that discusses various details. The solver interface library offers routines that compute first derivatives of nonlinear expressions by backward automatic differentiation (AD). We intend to augment the solver interface library with routines that recognize partially separable structure and compute Hessian matrices (second derivatives) and Hessian times vector products; this is work in progress.

AMPL can be viewed as a means of obtaining expression graphs. AMPL passes problems to solvers by writing files, and it is easy to use the solver interface routines in C or C++ programs that read AMPL expression files and evaluate the expressions and their derivatives for arbitrary purposes. It is also possible to convert the expression files into C or Fortran subroutines that evaluate the expressions and their derivatives. Source for a program, nlc, that makes this conversion, is available from netlib.

AVAILABILITY:

AMPL and modeling are described in detail in the AMPL book, details of which appear above. An MS-DOS student version of AMPL accompanies the book, and the Web pages shown above have pointers to vendors of commercial versions of AMPL that run on various platforms. The AMPL/solver interface routines are freely available from netlib. For details, send the e-mail message

send readme from ampl

to netlib@research.bell-labs.com. This material is also available at ftp://netlib.bell-labs.com/netlib/ampl and its subdirectories.


Next: COSY Up: Contents Previous: ADOL-C