90 void initialize(
unsigned n,
const double *x = NULL);
98 double solve(
unsigned maxiter,
bool bMonitor =
false);
101 virtual double objective(
const double *x)
const = 0;
103 virtual void gradient(
const double *x,
double *df)
const = 0;
110 inline unsigned size()
const {
return _n; }
117 virtual void monitor(
unsigned iter,
double objValue);
121 enum drwnLBFGSResult {
122 DRWN_LBFGS_ERROR, DRWN_LBFGS_MAX_ITERS, DRWN_LBFGS_CONVERGED_F,
123 DRWN_LBFGS_CONVERGED_G, DRWN_LBFGS_CONVERGED_X
126 drwnLBFGSResult lbfgsMinimize(
int m,
unsigned maxiter,
127 double epsg,
double epsf,
double epsx,
bool bMonitor);
128 bool lbfgsSearch(
double &f,
const Eigen::VectorXd &s,
129 double& stp, Eigen::VectorXd& diag);
130 bool lbfgsStep(
double& stx,
double& fx,
double& dx,
131 double& sty,
double& fy,
double& dy,
132 double& stp,
const double& fp,
const double& dp,
133 bool& brackt,
const double& stmin,
const double& stmax);
virtual double objectiveAndGradient(const double *x, double *df) const
returns value of objective function and populates gradient df at point x
Definition: drwnOptimizer.h:105
double & operator[](unsigned i)
returns a reference to the i-th component of the current solution
Definition: drwnOptimizer.h:114
void initialize(unsigned n, const double *x=NULL)
initialize an optimization problem of size n possibly with feasible starting point x (or zero) ...
Definition: drwnOptimizer.cpp:81
drwnOptimizer()
default constructor
Definition: drwnOptimizer.cpp:42
double solve(unsigned maxiter, bool bMonitor=false)
Solve the optimization problem for up to maxiter iterations to precision set by EPSF, EPSG, and EPSX static variables. Calls monitor function after each iteration if bMonitor is true.
Definition: drwnOptimizer.cpp:105
static double EPSG
deafult tolerance on gradient convergence
Definition: drwnOptimizer.h:71
Interface for solving large-scale unconstrained optimization problems using L-BFGS.
Definition: drwnOptimizer.h:68
virtual void gradient(const double *x, double *df) const =0
populates gradient of objective function at point x
double * _df
gradient at _x in
Definition: drwnOptimizer.h:77
double * _x
current feasible solution in
Definition: drwnOptimizer.h:76
unsigned _n
dimension of optimization problem (i.e., )
Definition: drwnOptimizer.h:75
static double EPSF
default tolerance on function convergence
Definition: drwnOptimizer.h:70
double operator[](unsigned i) const
returns the i-th component of the current solution
Definition: drwnOptimizer.h:112
unsigned size() const
dimension of optimization problem
Definition: drwnOptimizer.h:110
virtual double objective(const double *x) const =0
returns value of objective function at point x
virtual void monitor(unsigned iter, double objValue)
callback for each iteration during optimization (if bMonitor is true)
Definition: drwnOptimizer.cpp:136
static double EPSX
default tolerance on solution convergence
Definition: drwnOptimizer.h:72