LSLOpt  1.0
Public Attributes | Friends | List of all members
LSLOpt::OptimizationParameters< Scalar > Struct Template Reference

Parameters for limited step length BFGS algorithm. More...

#include <OptimizationParameters.hpp>

Public Attributes

Scalar machine_epsilon
 machine epsilon adjust if needed
 
unsigned max_iterations = 10000
 maximum number of iterations of the BFGS algorithm
 
Scalar gradient_tolerance
 
Scalar alpha_min
 minimum allowed step length
 
Scalar wolfe_c1 {1e-4}
 c1 for first Wolfe condition (sufficient decrease)
 
Scalar wolfe_c2 {0.9}
 c2 for second Wolfe condition (curvature condition)
 
Scalar sigma2 {0.6}
 parameter sigma2 for damped BFGS update
 
Scalar sigma3 {3.0}
 parameter sigma3 for damped BFGS update
 
Scalar sigma4 {0.0}
 parameter sigma4 for damped BFGS update
 
Scalar check_epsilon
 parameter for checking the numerical stability
 
Scalar min_change
 
unsigned min_iterations_with_no_change = 2
 the number of iterations the criterion above must hold
 
Scalar min_grad_param
 
Scalar min_value
 termination criterion for minimal function value (stopping value);
 
Linesearch linesearch = Linesearch::Backtracking
 line search method (currently no choice)
 
unsigned max_linesearch_iterations = std::numeric_limits<unsigned>::max()
 maximum number of linesearch iterations
 
unsigned m = 10
 maximum history to store in limited memory methods
 
bool allow_restarts = true
 allow the restarting in case of errors
 
Alpha0Policy alpha0 = Alpha0Policy::Constant
 how to select alpha0 for start of line search
 

Friends

template<typename U >
OptimizationParameters< U > getOptimizationParameters ()
 Get optimization parameters for this type. More...
 

Detailed Description

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.
  1. Maximum number of iterations (default: 10000). The algorithm terminates after the given number of iterations of the Quasi-Newton method.
  2. 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.
  3. 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).
  4. 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.
  5. 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.

Friends And Related Function Documentation

◆ getOptimizationParameters

template<typename Scalar>
template<typename U >
OptimizationParameters<U> getOptimizationParameters ( )
friend

Get optimization parameters for this type.

Template Parameters
ScalarType of scalar values.

Member Data Documentation

◆ gradient_tolerance

template<typename Scalar>
Scalar LSLOpt::OptimizationParameters< Scalar >::gradient_tolerance

parameter for convergence check; BFGS is converged if ||grad|| <= tolerance * max(1.0, ||x||)

◆ min_change

template<typename Scalar>
Scalar LSLOpt::OptimizationParameters< Scalar >::min_change

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>
Scalar LSLOpt::OptimizationParameters< Scalar >::min_grad_param

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: