The Limited Memory BFGS Method for Large Scale Optimization. More...
Public Member Functions | |
virtual void | acceptStep (int k, int step_type) |
virtual int | checkDeriv () |
virtual NEWMAT::ColumnVector | computeSearch (NEWMAT::SymmetricMatrix &) |
virtual int | computeStep (NEWMAT::ColumnVector &sk, double stp=1.0) |
Compare analytic vs finite-difference gradient. | |
virtual void | initOpt () |
Reset the parameters. | |
virtual void | optimize () |
Initialize the optimization. | |
OptLBFGS (NLP1 *p, TOLS t, int m) | |
OptLBFGS (NLP1 *p, TOLS t) | |
OptLBFGS (NLP1 *p, int m) | |
OptLBFGS (NLP1 *p) | |
OptLBFGS () | |
Default Constructor. | |
virtual void | printIter (int, double, double, double, double, int) |
virtual void | printStatus (char *c) |
virtual void | reset () |
Compute the step direction. | |
void | setPrintFinalX (bool b) |
virtual real | stepTolNorm () const |
Run the optimization. | |
virtual void | updateModel (int k, int ndim, NEWMAT::ColumnVector x) |
virtual | ~OptLBFGS () |
Destructor. | |
Protected Member Functions | |
void | initMem (int n) |
NLP1 * | nlprob () const |
The Limited Memory BFGS Method for Large Scale Optimization.
Solves the unconstrained minimization problem
min F(x) x = (x_1, x_2, ..., x_N),
using the limited memory BFGS method, where N can be large.
The inverse Hessian approximation Hk is computed via BFGS updates to a diagonal matrix H0. The number of updates depend on the previous m steps kept in memory, as set by the user. H0 can be any symmetric positive definite matrix specified by the user (else a default one is constructed).
References:
D. Liu and J. Nocedal, "On the limited memory BFGS method for large scale optimization" Mathematical Programming B 45 (1989), 503-528
Definition at line 99 of file OptLBFGS.h.
OPTPP::OptLBFGS::OptLBFGS | ( | ) | [inline] |
Default Constructor.
Definition at line 130 of file OptLBFGS.h.
References OPTPP::OptimizeClass::method.
OPTPP::OptLBFGS::OptLBFGS | ( | NLP1 * | p | ) | [inline] |
p | a pointer to an NLP1 object |
Definition at line 136 of file OptLBFGS.h.
References OPTPP::OptimizeClass::method.
OPTPP::OptLBFGS::OptLBFGS | ( | NLP1 * | p, | |
int | m | |||
) | [inline] |
p | a pointer to an NLP1 object | |
m | integer specifying number of memory vectors |
Definition at line 146 of file OptLBFGS.h.
References OPTPP::OptimizeClass::method.
OPTPP::OptLBFGS::OptLBFGS | ( | NLP1 * | p, | |
TOLS | t | |||
) | [inline] |
p | a pointer to an NLP1 object | |
t | a TOLS object |
Definition at line 156 of file OptLBFGS.h.
References OPTPP::OptimizeClass::method.
OPTPP::OptLBFGS::OptLBFGS | ( | NLP1 * | p, | |
TOLS | t, | |||
int | m | |||
) | [inline] |
p | a pointer to an NLP1 object | |
t | a TOLS object | |
m | integer specifying number of memory vectors |
Definition at line 165 of file OptLBFGS.h.
References OPTPP::OptimizeClass::method.
virtual OPTPP::OptLBFGS::~OptLBFGS | ( | ) | [inline, virtual] |
Destructor.
Definition at line 173 of file OptLBFGS.h.
virtual void OPTPP::OptLBFGS::acceptStep | ( | int | , | |
int | ||||
) | [inline, virtual] |
Implements OPTPP::OptLBFGSLike.
Definition at line 178 of file OptLBFGS.h.
References OPTPP::OptimizeClass::defaultAcceptStep().
virtual int OPTPP::OptLBFGS::computeStep | ( | NEWMAT::ColumnVector & | sk, | |
double | stp = 1.0 | |||
) | [virtual] |
Compare analytic vs finite-difference gradient.
virtual void OPTPP::OptLBFGS::initOpt | ( | ) | [virtual] |
Reset the parameters.
NLP1* OPTPP::OptLBFGS::nlprob | ( | ) | const [inline, protected, virtual] |
Implements OPTPP::OptLBFGSLike.
Definition at line 111 of file OptLBFGS.h.
virtual void OPTPP::OptLBFGS::optimize | ( | ) | [virtual] |
Initialize the optimization.
Reimplemented from OPTPP::OptLBFGSLike.
virtual void OPTPP::OptLBFGS::reset | ( | ) | [virtual] |
Compute the step direction.
Implements OPTPP::OptimizeClass.
virtual real OPTPP::OptLBFGS::stepTolNorm | ( | ) | const [virtual] |
Run the optimization.
Reimplemented from OPTPP::OptimizeClass.