28 #include <Eigen/Dense>
112 std::list<std::tuple<double,VectorXd,VectorXd>> m_hist;
124 VectorXd hessFunc(
double gamma,
const VectorXd& d,
125 std::list<std::tuple<double,VectorXd,VectorXd>>::const_iterator it);
127 VectorXd hessFuncTwoLoop(
double gamma,
const VectorXd& g);
Implementation of Armijo approximate line search algorithm.
function< int(const VectorXd &x, double &v, VectorXd &g)> ValGradFunc
Value and Gradient Computation Function.
VectorXd opt_H0inv
Default (initial) value for inverse hessian matrix.
StopReason optimize()
Perform LBFGS optimization.
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.
double opt_ls_sigma
Theshold for stopping linesearch.
function< int(const VectorXd &x, double &v)> ValFunc
Value Only Computation Function.
LBFGSOpt(size_t dim, const ValFunc &valfunc, const GradFunc &gradfunc, const CallBackFunc &callback=noopCallback)
double opt_ls_beta
How quickly to reduce linesearch distance. Power function base, values closer to 0 will decrease step...
double opt_ls_s
Maximum step during line search.
Limited-Memory Broyden–Fletcher–Goldfarb–Shanno Algorithm based on "A Limited Memory Algorithm for...
void reset_history()
Reset the history.
int opt_histsize
Number of updates to store for the purposes of estimating the hessian matrix.
function< int(const VectorXd &x, double v, const VectorXd &g, size_t iter)> CallBackFunc
Callback function.