25 #include <Eigen/Dense>
35 using Eigen::MatrixXd;
36 using Eigen::VectorXd;
41 typedef function<int(const VectorXd& x, double& v, VectorXd& g)>
ValGradFunc;
46 typedef function<int(const VectorXd& x, VectorXd& g)>
GradFunc;
51 typedef function<int(const VectorXd& x, double& v)>
ValFunc;
56 typedef function<int(const VectorXd& x, double v, const VectorXd& g, size_t iter)>
CallBackFunc;
72 int testgrad(
double& error,
const VectorXd& x,
double stepsize,
double tol,
73 const ValFunc& valfunc,
const ValGradFunc& valgradfunc);
89 int testgrad(
double& error,
const VectorXd& x,
double stepsize,
double tol,
90 const ValFunc& valfunc,
const GradFunc& gradfunc);
132 int noopCallback(
const VectorXd& x,
double value,
const VectorXd& grad,
size_t iter)
208 Optimizer(
size_t dim,
const ValFunc& valfunc,
const GradFunc& gradfunc,
209 const ValGradFunc& valgradfunc,
223 Optimizer(
size_t dim,
const ValFunc& valfunc,
const GradFunc& gradfunc,
int testgrad(double &error, const VectorXd &x, double stepsize, double tol, const ValFunc &valfunc, const ValGradFunc &valgradfunc)
Tests a gradient function using the value function.
function< int(const VectorXd &x, double &v, VectorXd &g)> ValGradFunc
Value and Gradient Computation Function.
int noopCallback(const VectorXd &x, double value, const VectorXd &grad, size_t iter)
Callback that does nothing.
function< int(const VectorXd &x, VectorXd &g)> GradFunc
Gradient Only Computation Function.
static std::string explainStop(StopReason r)
Provides a string that describes the stop reason.
Optimizer(size_t dim, const ValFunc &valfunc, const GradFunc &gradfunc, const ValGradFunc &valgradfunc, const CallBackFunc &callback=noopCallback)
Constructor for optimizer function.
function< int(const VectorXd &x, double &v)> ValFunc
Value Only Computation Function.
double stop_F_over
Stop immediately when value goes above this.
virtual StopReason optimize()
Perform optimization.
double stop_F
Stop when change in function value drops below this value.
int gRosenbrock_G(const VectorXd &x, VectorXd &gradient)
Implements generized rosenbrock gradient.
int gRosenbrock_V(const VectorXd &x, double &v)
Implements generized rosenbrock value.
VectorXd state_x
State variable, set to initialize.
double stop_X
Stop when step size drops below this value.
double stop_F_under
Stop immediately when value goes below this.
int stop_Its
Stop after this many iterations (does not include linesearch)
void gRosenbrock_callCounts(size_t &vcalls, size_t &gcalls)
Returns the number of times the Value and Gradient functions for the Generalized Rosenbrock Function ...
function< int(const VectorXd &x, double v, const VectorXd &g, size_t iter)> CallBackFunc
Callback function.
double stop_G
Stop when graient magnitde falls below this value.