| Version 4.1 (R2008b) Optimization Toolbox™ Software Release Notes | ![]() |
This table summarizes what's new in Version 4.1 (R2008b):
| New Features and Changes | Version Compatibility Considerations | Fixed Bugs and Known Problems | Related Documentation at Web Site |
|---|---|---|---|
| Yes Details below | Yes Summary | Bug
Reports Includes fixes | Printable Release Notes: PDF |
The Levenberg-Marquardt algorithm was refactored in the solvers fsolve, lsqcurvefit and lsqnonlin. It is now a more standard implementation, that accepts and preserves sparse Jacobians.
Choose between the algorithms used in fsolve, lsqcurvefit and lsqnonlin using the new Algorithm option.
There is a new ScaleProblem option that can sometimes help the Levenberg-Marquardt algorithm converge.
The default fsolve algorithm, 'trust-region-dogleg', has been validated to work with sparse Jacobians.
The refactored Levenberg-Marquardt algorithm can cause fsolve, lsqcurvefit and lsqnonlin to yield different answers than before.
The previous way of choosing the algorithm at the command line was to set the LargeScale option to 'on' or 'off', and, for all solvers but fsolve, to set the LevenbergMarquardt option to 'on' or 'off'. For fsolve, in addition to the LargeScale option, you needed to set the NonlEqnAlgorithm option appropriately. LargeScale, NonlEqnAlgorithm, and LevenbergMarquardt are now ignored, except when choosing to use the Gauss-Newton algorithm.
The Gauss-Newton algorithm warns that soon it may no longer be available.
The default value of the MaxFunEvals option in the refactored Levenberg-Marquardt algorithm is now 200*numberOfVariables; the previous value was 100*numberOfVariables.
You can now access built-in parallel functionality in Optimization Tool for relevant Optimization Toolbox™ solvers and, if licensed, Genetic Algorithm and Direct Search Toolbox™ solvers. The option is available when you have a license for Parallel Computing Toolbox™ functions.
The following solvers can now use central finite differences for gradient estimation:
The fmincon active-set algorithm and fminunc medium-scale algorithm gained central finite differences this release. The fmincon interior-point algorithm already had them, and the trust-region-reflective algorithm for both solvers requires a user-supplied gradient, so does not use finite differences.
To use central finite differences, use optimset to set the FinDiffType option to 'central' instead of the default 'forward'. This causes the solver to estimate gradients by formulae such as
![]()
instead of
![]()
Central finite differences take twice as many function evaluations as forward finite differences, but are usually much more accurate.
Central finite differences can work in parallel for gradient estimation in fgoalattain, fmincon active-set algorithm, and fminimax. For details on how to use this parallel gradient estimation, see the Parallel Computing for Optimization chapter in the User's Guide.
lsqnonneg was refactored. It can now use sparse matrices, and it preserves sparsity during its execution.
A subroutine for gradient estimation by forward finite differences in nonlinear solvers had a bug that affected it when the current point x had a component with the value 0. Forward finite differences are typically calculated with a step size proportional to sqrt(eps), which is about 1.5*10–8. When a component of x was 0, the step size would instead be proportional to DiffMinChange, which has a default value of 10–8. There is now no difference in step size when x is 0.
Nonlinear solvers can run slightly differently whenever an iteration causes a component of x to be zero, and gradients are estimated by forward finite differences.
The DerivativeCheck option enables you to ascertain whether the derivative (gradient) functions that you supply for objective or constraint functions give approximately the same values as those estimated by a solver using finite differences. The meaning of "approximately" has changed. Now it means the relative error of each component of the gradient is less than 10–6, unless the size of an analytically given component is smaller than 1, in which case it means the absolute difference is less than 10–6. Previously, the gradients were considered approximately equal if the maximum absolute error in any component of the gradient was less than (10–6 * norm of analytic gradient) + 10–5.
Some problems will now report violations of the DerivativeCheck condition, when previously they would not.
![]() | Optimization Toolbox Release Notes | Version 4.0 (R2008a) Optimization Toolbox Software | ![]() |
| © 1984-2009- The MathWorks, Inc. - Site Help - Patents - Trademarks - Privacy Policy - Preventing Piracy - RSS |