LSLOpt  1.0
OptimizationParameters.hpp
1 #pragma once
2 
3 #include <limits>
4 
5 #include "OptimizationResult.hpp"
6 #include "ScalarTraits.hpp"
7 
8 
9 namespace LSLOpt {
10 
12 enum class Linesearch {
15 };
16 
18 enum class Alpha0Policy {
19  Constant,
22 };
23 
24 
70 template<typename Scalar>
74 
76  unsigned max_iterations = 10000;
81  Scalar alpha_min;
82 
84  Scalar wolfe_c1 {1e-4};
86  Scalar wolfe_c2 {0.9};
87 
89  Scalar sigma2 {0.6};
91  Scalar sigma3 {3.0};
93  Scalar sigma4 {0.0};
94 
96  Scalar check_epsilon;
97 
100  Scalar min_change;
102  unsigned min_iterations_with_no_change = 2;
103 
107 
109  // BFGS is terminated if f_{i} <= min_value
110  Scalar min_value;
111 
114 
116  unsigned max_linesearch_iterations = std::numeric_limits<unsigned>::max();
117 
119  unsigned m = 10;
120 
122  bool allow_restarts = true;
123 
125  Alpha0Policy alpha0 = Alpha0Policy::Constant;
126 
127  private:
128  // we prevent instantiation without meaningful default parameters
129  OptimizationParameters() = default;
130  template<typename U>
132 
133 };
134 
139 template<typename Scalar>
141 {
143 }
144 
148 template<>
150 {
152 
154  params.gradient_tolerance = 1e-6;
155  params.alpha_min = params.machine_epsilon;
156  params.check_epsilon = 1e-10;
157  params.min_change = 0.0;
159  params.min_grad_param = params.machine_epsilon * params.machine_epsilon;
160 
161  return params;
162 };
163 
164 }
Scalar min_change
Definition: OptimizationParameters.hpp:100
scale old alpha by phi&#39;_{k-1}(0) / phi&#39;_{k}(0)
Scalar min_grad_param
Definition: OptimizationParameters.hpp:106
Traits for scalar values.
Definition: ScalarTraits.hpp:16
Parameters for limited step length BFGS algorithm.
Definition: OptimizationParameters.hpp:71
Scalar min_value
termination criterion for minimal function value (stopping value);
Definition: OptimizationParameters.hpp:110
use max alpha from algorithm (or 1.0)
Scalar gradient_tolerance
Definition: OptimizationParameters.hpp:79
OptimizationParameters< double > getOptimizationParameters< double >()
Default optimization parameters for double.
Definition: OptimizationParameters.hpp:149
OptimizationParameters< Scalar > getOptimizationParameters()
Get optimization parameters for this type.
Definition: OptimizationParameters.hpp:140
Alpha0Policy
Selection of initial step length alpha0.
Definition: OptimizationParameters.hpp:18
Scalar alpha_min
minimum allowed step length
Definition: OptimizationParameters.hpp:81
Linesearch
Line search algorithm.
Definition: OptimizationParameters.hpp:12
BFGS optimizations.
Definition: BFGS.hpp:24
Scalar machine_epsilon
machine epsilon adjust if needed
Definition: OptimizationParameters.hpp:73
Scalar check_epsilon
parameter for checking the numerical stability
Definition: OptimizationParameters.hpp:96