ADOL-C
A Package for Automatic Differentiation
of Algorithms Written in C/C++
Current versions:
-
For UNIX / LINUX:
-
For Windows / DOS:
|
ADOL-C 1.9.0 (May 2004)
ADOL-C 1.9.0 (Please contact us
for detailed information!) |
go to: Synopsis
- Functionality
- Availability
- Sources
and Articles - Applications - Contact
Synopsis
The package ADOL-C facilitates the evaluation of first and higher derivatives
of vector functions that are defined by computer programs written in C
or C++. The resulting derivative evaluation routines may be called from
C/C++, Fortran, or any other language that can be linked with C.
The numerical values of derivative vectors are obtained free of truncation
errors at a small multiple of the run time and randomly accessed memory
of the given function evaluation program.
Functionality
ADOL-C uses the operator overloading concept to compute in forward
and reverse mode of automatic differentiation:
-
derivatives of any order
-
and one-sided derivatives in non-smooth cases (e.g. evaluation of fabs)
for a function that is given as a C/C++ code. The user has to make a few
modifications to the evaluation code:
-
redeclare type of all variables that are involved in the evaluation code
(active variables) to the new type adouble,
-
mark the evaluation section,
-
specify independent and dependent variables and pass their values,
-
recompile the code and link the ADOL-C library.
ADOL-C provides:
-
convenient drivers for common differentiation tasks,
-
application oriented drivers, e.g.
-
for the computation of sparsity patterns
-
for ordinary differential equations
-
for the calculation of full higher-derivative tensors
-
active vector and matrix classes.
The operator overloading is used to produce the tape, an internal
representation of the evaluation section marked. For each operation on
the tape
-
truncated Taylor series are propagated in the forward mode
-
the corresponding adjoint operations are performed on the adjoint variables
in the reverse mode.
Instead of calling the routines for the forward and reverse mode directly
the user may apply appropriate drivers to get the desired derivatives for
a scalar-valued function
.
Some of these covenient drivers are listed in the following table:
| function(tag,m,n,x,y) |
 |
| gradient(tag,n,x,g) |
 |
| hessian(tag,n,x,H) |
lower triangle of  |
| hess_vec(tag,n,x,v,z) |
 |
| lagra_hess_vec(tag,m,n,x,v,u,h) |
 |
For vector-valued functions
ADOL-C provides also easy to use drivers. Again some of them are listed
below:
| function(tag,m,n,x,y) |
 |
| jacobian(tag,m,n,x,J) |
![$f^\prime(x) = J(x) = \left[\frac{\partial f_i}{\partial x_j}\right] \left. \right\vert _x$](jacobian.gif) |
| jac_vec(tag,m,n,x,v,j) |
 |
| vec_jac(tag,m,n,repeat,x,u,j) |
 |
Drivers for ODE's and routines to get full higher order derivative tensors
are available. Storage and runtime requirements are clearly predictable.
The tape is transferred to external mass storage devices and only
strictly sequentially accessed. The much smaller randomly accessed memory
can be precalculated using information on the tape.
Availability
ADOL-C is available free of charge provided under the terms of
the Common Public License.
Check the ftp sites for the source, the manual and examples.
ADOL-C was tested on
several
platforms including Sun, LinuX, and SGI.
Source and Articles
Software:
-
Version for UNIX / LINUX:
Documentation:
Recent Papers:
-
K. Röbenack:
Observer Design for Nonlinear SISO Systems by Extended Linearization
using Automatic Differentiation
Conference proceeding, Modelling, Identification, and Control (MIC
2003), Innsbruck, Austria, February 10-13, 2003
-
N. Arora and L. T. Biegler:
A Trust Region SQP Algorithm for Equality Constrained Parameter Estimation
with Simple Parameter Bounds
submitted to Computational Optimization and Applications.
-
G. Haase, U. Langer, E. Lindner, and W. Mühlhuber:
Optimal Sizing Using Automatic Differentiation
In K.-H. Hoffmann, K. Hoppe, and V. Schulz (eds.), Proceedings of Fast
Solution of Discretized Optimization Problems ,
Series on Numerical Mathematics (ISNM), vol. 138, Birkhäuser,
pp. 120 - 138 (2001).
-
Corliss et. al.,
Automatic Differentiation: From Simulation to Optimization, Springer,
2001,
Proceedings of the Third International Workshop, Nice, France
-
M. J. Huiskes:
Automatic Differentiation for Modern Nonlinear Regression
pp. 83 - 90
-
W. Klein, A. Griewank, A. Walther:
Differentiation Methods for Industrial Strength Problems
pp. 1 - 24
-
K. Röbenack, K. J. Reinschke:
Nonlinear Observer Design Using Automatic Differentiation
pp. 137 - 142
-
Olaf Vogel :
Accurate Gear Tooth Contact Determination and Sensitivity Computation
for Hypoid Bevel Gears
pp. 197 - 204
-
A. Griewank.
Evaluating Derivatives, Principles and Techniques of Algorithmic
Differentiation.
Number 19 in Frontiers in Appl. Math. SIAM, Philadelphia, 2000.
-
A. Griewank, D. Juedes, H. Mitev, J. Utke, O. Vogel, and A. Walther:
ADOL-C:
A Package for the Automatic Differentiation of Algorithms Written in C/C++;
this is the updated version of the paper published in ACM TOMS,
vol. 22(2) June 1996, pp. 131-167, Algor. 755
-
A. Griewank, J. Utke, and A. Walther
Evaluating
higher derivative tensors by forward propagation of univariate Taylor series,
Mathematics of Computation, Vol. 69, pp. 1117 - 1130 (2000).
-
T. Coleman and G. Jonsson,
The
Efficient Computation of Structured Gradients using Automatic Differentiation,
Technical Report CTC97TR272, Cornell 1997.
-
Introduction
to AD: Short Course at SIAM Optimization Conference in Toronto
Applications
DYNOPC, Department of Chemical Engineering, Carnegie Mellon University
(Solution of dynamic optimization problems)
MUSCOD-II
, Interdisciplinary Center for Scientific Computing (IWR), University of
Heidelberg
(Numerical Solution of Optimal Control Problems involving
Differential-Algebraic Equations )
NEOS Server , Argonne
National Laboratory
(Network Enabled Optimization System
for solving optimization problems remotely over the Internet)
Omuses,
Institut für Automatisierungs- und Systemtechnik, TU Ilmenau
(Optimization of Multistage Systems)
Whom to Contact
Andrea
Walther
Institut für Wissenschaftliches Rechnen
Technische Universität Dresden
Mommsenstr. 13
01062 Dresden, Germany
phone: +49 (0)351 463 35018
FAX: +49 (0)351 463 37096
email |
|
Andreas Griewank
Humboldt-Universität zu Berlin
Institut für Mathematik
Unter den Linden 6
D-10099 Berlin
phone: +49 (0)30 2093 - 5820
FAX: +49 (0)30 2093 - 8959
email |
|
Jean Utke
Mathematics and Computer Science
Argonne National Laboratory
9700 S Cass Ave
Argonne, IL
60439-4844, USA
phone: +1 630 252 4552
FAX: +1 630 252 5986
email |
A comprehensive collection of AD related news, papers and tools can be found at www.autodiff.org
email the page owner
(May/10/2004)