ADOL-C
A Package for Automatic Differentiation
of Algorithms Written in C/C++
Current versions:
- For UNIX / LINUX:
- For Windows:
|
ADOL-C
1.10.1 (September 2005)
ADOL-C 1.10.1
(September 2005) |
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 convenient 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) |
 |
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:
- Yu. A. Kuznetsov and H. G. E. Meijer:
Numerical Normal Forms for Codim 2 Bifurcations of Fixed Points with at
Most Two Critical Eigenvalues.
SIAM Journal on Scientific Computing, 2005, Vol. 26 Issue 6, p1932,
23p.
- N. Arora and L. T. Biegler:
A Trust Region SQP Algorithm for Equality Constrained Parameter
Estimation with Simple Parameter Bounds.
Computational Optimization and Applications, 28, 51 - 86 (2004).
- 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
- 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.,
- 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
Automatic Differentiation: From Simulation to
Optimization, Springer,
2001,
Proceedings of the Third International Workshop, Nice, France
- A. Griewank:
Evaluating Derivatives,
Principles and Techniques of Algorithmic
Differentiation.
Number 19 in Frontiers in Appl. Math. SIAM, Philadelphia, 2000.
- J. Guckenheimer and B. Meloon:
COMPUTING PERIODIC ORBITS AND THEIR BIFURCATIONS WITH AUTOMATIC
DIFFERENTIATION.
SIAM Journal on Scientific Computing, 2000, Vol. 22 Issue 3, p951,
35p-985;
- 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)
fREEDA,
Electrical and Computer Engineering, North Carolina State University
(Circuit simulation)
GasNetOpt,
Optimization group, Zuse Institute Berlin
(Nonlinear optimization of the load distribution
in gas networks)
MMT2,
Research Center for Multidisciplinary Analysis and Applied Systems
Optimization, University of Siegen
(Modeling and simulation of metabolic networks)
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)
UltraScan,
Department of Biochemistry, University of Texas Health Science Center
(Data analysis tool for the hydrodynamic studies)
Whom to Contact
Andrea
Walther
Technische Universität Dresden
Institut für Wissenschaftliches Rechnen
Mommsenstr. 13
D-01062 Dresden, Germany
phone: +49 (0)351 463 34082
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 |
or mail to adol-c
Institute
homepage
email
to administrator
(Jan/10/2004)