Parameters for limited step length BFGS algorithm.
More...
#include <OptimizationParameters.hpp>
template<typename Scalar>
struct LSLOpt::OptimizationParameters< Scalar >
Parameters for limited step length BFGS algorithm.
- Warning
- You can't instantiate this class directly, but you have to use getOptimizationParameters.
- Note
- If the initialization of the scalar constants is not appropriate for your scalar you can specialize the complete parameter template.
-
We provide five different termination criteria. The first fulfilled criterion triggers the termination.
- Maximum number of iterations (default: 10000). The algorithm terminates after the given number of iterations of the Quasi-Newton method.
- Gradient norm (default for
double: 1e-6). The algorithm terminates the gradient norm fulfills ||grad|| <= tolerance * max(1.0, ||x||) This is the classical termination criterion.
- Minimum change (default for
double: 0.0). The algorithm terminates if the relative change in the function value is smaller than this value. Please note that this criterion is also active even if it is set to 0.0: In this case the algorithm terminates if the relative change in the objective function value is so small that it can't be detected anymore. To deactivate this criterion completely, set the value min_iterations_with_no_change to a large value (e.g. UINT_MAX).
- Minimum function value (default: -infinity). The algorithm terminates if the objective function value falls below the minimum function value. This criterion is turned off by default. It is mainly useful for comparing optimization algorithms.
- Minimum change of gradient or parameters (default for
double: machine epsilon). The algorithm terminates if the L2-norm of the gradient change or the parameter change is less than this parameter. If set to a small value (e.g. machine epsilon) it is rarely triggered, however, prevents numerical problems arising from very small changes of the gradient or the parameter set.
◆ getOptimizationParameters
template<typename Scalar>
template<typename U >
Get optimization parameters for this type.
- Template Parameters
-
| Scalar | Type of scalar values. |
◆ gradient_tolerance
template<typename Scalar>
parameter for convergence check; BFGS is converged if ||grad|| <= tolerance * max(1.0, ||x||)
◆ min_change
template<typename Scalar>
termination criterion for minimal change of function value; BFGS is terminated if (f_{i-1} - f_{i}) / (0.5 * (|f_{i-1}| + |f_{i}|)) <= min_change
◆ min_grad_param
template<typename Scalar>
termination criterion of minimal of gradient or parameters; BFGS is terminated if ||s|| or ||r|| are smaller than this value.
The documentation for this struct was generated from the following file: