11 #ifndef PRIMATOLOGIST_OPTIMIZATION_WOLFE_DECL_H
12 #define PRIMATOLOGIST_OPTIMIZATION_WOLFE_DECL_H
15 #include <cartobase/config/verbose.h>
113 bool wolfe1(
float a )
const;
116 bool wolfe2(
float a )
const;
Once an ascent direction is given, this class performs a line search that respects wolfe conditions.
WolfeLineSearch(const Objective &f=Objective(), const Vector &x=Vector(), const Vector &p=Vector())
void setMaxIterations(int n=- 1)
WolfeLineSearch< O > & operator=(const WolfeLineSearch< O > &other)
Objective _f
objectiveFunction
bool wolfe1(float a) const
Armijo (= Wolfe 1st) condition.
void setSearchDirection(const Vector &p=Vector())
void setObjectiveFunction(const Objective &f)
void setMaximize(bool maximize=false)
bool wolfe2w(float a) const
weak 2nd Wolfe condition
float _previous_value
f(x)
bool checkDirection()
Compute f(x) and <p, g(x)>.
const Objective & objectiveFunction() const
void setStrongWolfe(bool strong=false)
void setPosition(const Vector &x=Vector())
float _previous_scalarprod
<p, g(x)>
int maxIterations() const
void setC1(float c1=1E-4)
bool _maximize
maximize or minimize
int _max_it
maximum number of iterations
bool wolfe2s(float a) const
strong 2nd Wolfe condition
int _verbose
verbosity level
void setVerbose(int v=carto::verbose)
const Vector & searchDirection() const
const Vector & position() const
bool wolfe2(float a) const
select condition based on _strong
float _current_value
f(x + a.p)
Matrix class implementing matrix operations.