Next: ADIC Up: Contents Previous: IMAS

OPTIMA90 Automatic Differentiation Tools

SYNOPSIS:

OPRAD - A reverse automatic differentiation tool offering first- and second-order derivatives.

OPFAD - A general purpose forward automatic differentiation tool offering first derivatives.

Both are Fortran 90 modules from the Numerical Optimization Centre's Optima90 library (under development).

WHOM TO CONTACT:

Mike Bartholomew-Biggs
Numerical Optimization Centre
University of Hertfordshire
College Lane
Hatfield
Hertfordshire, AL10 9AB
Tel.: +44 1707 28 4762
FAX: +44 1707 284303
e-mail: M.Bartholomew-Biggs@herts.ac.uk

Bruce Christianson
Numerical Optimization Centre
University of Hertfordshire
College Lane
Hatfield
Hertfordshire, AL10 9AB
Tel.: +44 1707 28 4335
FAX: +44 1707 284303
e-mail: B.Christianson@herts.ac.uk

Stephen Brown
Numerical Optimization Centre
University of Hertfordshire
College Lane
Hatfield
Hertfordshire, AL10 9AB
Tel.: +44 1707 28 5113
FAX: +44 1707 284303
e-mail: S.Brown@herts.ac.uk

DOCUMENTATION:

FUNCTIONALITY:

Both OPRAD and OPFAD use operator overloading to facilitate the coding (or conversion of existing code) of a function to enable derivatives to be computed. Essentially this means that standard Fortran 90 statements for evaluating expressions in real arithmetic simply need to be preceded by special type declarations and initializing subroutine calls and then followed by calls to utilities to extract the value and gradient.

Both OPRAD and OPFAD can be used to produce Jacobians of vector functions as well as gradients of scalar functions. In addition OPRAD can---for scalar functions only---produce either the Hessian or the product of the Hessian with a chosen vector.

OPFAD implements the forward accumulation approach in a fairly naive way and is recommended only for problems with fewer than about 100 variables. At present it is more tolerant than OPRAD of functions whose evaluation involves branching on IF statements.

OPRAD implements reverse accumulation and builds the computational scheme of the expressions. It is more expensive than OPFAD in terms of storage, but is expected to be more efficient in terms of arithmetic. In applications in nonlinear optimization where gradients must be evaluated many times, efficiency is often more important than storage cost.

HIGHLIGHTS:

The OPRAD and OPFAD tools offers the following features:
Fortran 90 support:
OPRAD overloads all Fortran 90 array operations and includes an optimal dot product. It includes comprehensive error diagnostics.

Sparsity Support:
OPRAD is supported by two sparse array arithmetics: one is appropriate when the Jacobian is dense (or fill-in occurs early) while the other is suitable for sparse Jacobians (or where fill-in occurs late).

User-Friendly Interface:
OPFAD has been conceived as a friendly introduction to new users of automatic differentiation and has proved valuable in reducing the human time spent in setting up new optimization problems correctly.

AVAILABILITY:

Current versions of OPRAD and OPFAD may be obtained free of charge for noncommercial purposes by contacting one of the authors named above. Terms for commercial use must be negotiated with the Numerical Optimization Centre.

Ada implementations of the same techniques are also available.



Next: ADIC Up: Contents Previous: IMAS