11 #ifndef PRIMATOLOGIST_OPTIMIZATION_GRADIENT_D_H 12 #define PRIMATOLOGIST_OPTIMIZATION_GRADIENT_D_H 22 template <
typename O,
template <
typename>
class L>
36 template <
typename O,
template <
typename>
class L>
47 template <
typename O,
template <
typename>
class L>
51 template <
typename O,
template <
typename>
class L>
72 template <
typename O,
template <
typename>
class L>
78 template <
typename O,
template <
typename>
class L>
84 template <
typename O,
template <
typename>
class L>
90 template <
typename O,
template <
typename>
class L>
99 template <
typename O,
template <
typename>
class L>
106 template <
typename O,
template <
typename>
class L>
112 template <
typename O,
template <
typename>
class L>
119 template <
typename O,
template <
typename>
class L>
126 template <
typename O,
template <
typename>
class L>
136 template <
typename O,
template <
typename>
class L>
142 template <
typename O,
template <
typename>
class L>
148 template <
typename O,
template <
typename>
class L>
154 template <
typename O,
template <
typename>
class L>
161 template <
typename O,
template <
typename>
class L>
167 template <
typename O,
template <
typename>
class L>
173 template <
typename O,
template <
typename>
class L>
179 template <
typename O,
template <
typename>
class L>
186 template <
typename O,
template <
typename>
class L>
197 template <
typename O,
template <
typename>
class L>
202 std::cout << std::string(80,
'-') << std::endl;
203 std::cout << std::setw(7) <<
"Search " 204 << std::setw(4) <<
"i " 205 << std::setw(15) <<
"f" 206 << std::setw(15) <<
"crit" 208 std::cout << std::string(80,
'-') << std::endl;
216 float previous_value;
222 std::cout << std::setw(7) <<
"G" 224 << std::setw(15) << std::setprecision(5) << current_value
225 << std::setw(15) << std::setprecision(5) <<
"" 232 previous_x = current_x;
233 previous_value = current_value;
242 crit_value = std::abs( current_value - previous_value );
244 crit_value /= std::abs( previous_value );
249 std::cout << std::setw(7) <<
"G" 251 << std::setw(15) << std::setprecision(5) << current_value
252 << std::setw(15) << std::setprecision(5) << crit_value
253 << std::string( ok ?
" OK" :
" C" )
260 std::cout <<
"Maximum number of iterations reached." << std::endl;
269 #endif // PRIMATOLOGIST_OPTIMIZATION_GRADIENT_D_H
Objective _f
objectiveFunction
void setStopCriterion(const std::string &crit="absdiff")
Can take values:
float _gamma
Fixed Gamma or initial gamma for line search.
LineSearch & lineSearch()
std::string _crit
stop criterion
GradientDescent< O, L > & operator=(const GradientDescent< O, L > &other)
int _verbose
verbosity level
int _max_it
maximum number of iterations
void setVerbose(int v=carto::verbose)
const Vector & position() const
int maxIterations() const
Matrix class implementing matrix operations.
const std::string & stopCriterion() const
void setGamma(float gamma=0.1)
GradientDescent(const Objective &f=Objective(), const Vector &x=Vector())
void setPosition(const Vector &x=Vector())
void setMaximize(bool maximize=false)
void setStopValue(float epsilon=1E-5)
void setMaxIterations(int n=- 1)
bool _maximize
maximize or minimize
void setLineSearch(const LineSearch &l=LineSearch())
void setObjectiveFunction(const Objective &f)
const Objective & objectiveFunction() const