« Previous « Start » Next »
3 Using TOMLAB /MAD
MAD and ADMAT can be used for automatic differentiation in TOMLAB.
MAD is the preferred toolbox to use as it is much faster.
TOMLAB features several methods for obtaining derivatives of
objective function, gradients, constraints and jacobians.
-
Supplying analytical derivatives. This is the recommended
method at almost all times, as the highest speed and robustness
are provided.
- Five methods for numerical differentiation. This is
controlled by the flags, Prob.NumDiff and
Prob.ConsDiff.
- The solver can estimate the derivatives internally. This is
not available for all solvers. TOMLAB /SNOPT also provides
derivative checking. See the TOMLAB /SNOPT manual for more
information.
- Automatic differentiation with ADMAT. This is controlled by
setting the flags Prob.ADObj and Prob.ADCons to 2.
- Automatic differentiation with MAD. This is controlled by
setting the flags Prob.ADObj and Prob.ADCons to 1 or
-1. If the flags are set to 1, only the objective function and
constraints are given. If the flags are set to -1, second
derivatives will be calculated. In this case the first
derivatives must be supplied.
3.1 Example
The following example illustrates how to use TOMLAB /MAD when the
objective function and constraints are given. MAD uses global
variables that need to be initialized.
madinitglobals;
Prob = conAssign( ... ); % A standard problem structure is created.
Prob.ADObj = 1; % First derivatives obtained from MAD for objective.
Prob.ADCons = 1; % First derivatives obtained from MAD for constraints.
Result = tomRun('snopt', Prob, [], 1) % Using driver routine tomRun.
If the user has provided first order information as well, the
following code could be used. Observe that the solver must use
second order information for this to be useful.
madinitglobals;
Prob = conAssign( ... ); % A standard problem structure is created.
Prob.ADObj = -1; % Second derivatives obtained from MAD for objective.
Prob.ADCons = -1; % Second derivatives obtained from MAD for constraints.
Result = tomRun('knitro', Prob, [], 1) % Using driver routine tomRun.
% KNITRO uses second order information.
The number of MATLAB functions that MAD supports is limited.
Please report needed additions to
support@tomlab.BIZ.
« Previous « Start » Next »