HCL_lmbfgsOp1_d implements the limited memory BFGS approximation to the inverse Hessian of a twice-differentiable function
HCL_lmbfgsOp1_d ( HCL_ScaleLinearOp_d * h0, int maxnum, HCL_LinearOp_d * Pin = NULL, HCL_LinearSolver_d * ls = NULL ) Usual constructor | |
HCL_VectorSpace_d& | Domain () const Domain space access. |
HCL_VectorSpace_d& | Range () const Range space access. |
double | GetScale () const Access to the scale, which is dynamically changed by the operator. |
void | Update ( const HCL_Vector_d & x, const HCL_Vector_d & xnext, const HCL_Vector_d & g, const HCL_Vector_d & gnext ) Update requires the current and next and the current and next gradient |
void | Reset () Reset sets the operator to the initial inverse Hessian approximation. |
virtual void | Image ( const HCL_Vector_d & x, HCL_Vector_d & y ) const Image computes the image of the operator on x, giving y. |
virtual void | AdjImage ( const HCL_Vector_d & y, HCL_Vector_d & x ) const AdjImage computes the image of the adjoint on y, giving x. |
virtual void | InvImage (const HCL_Vector_d & y, HCL_Vector_d & x) const InvImage computes the action of the inverse on y, giving x (not implemented) |
virtual void | InvAdjImage (const HCL_Vector_d & x, HCL_Vector_d & y) const InvAdjImage computes the action of the inverse adjoint on x, giving y (not implemented) |
virtual ostream& | Write ( ostream & str ) const Write prints out some useful information about the object. |
HCL_lmbfgsOp1_d implements the limited memory BFGS approximation to the inverse Hessian of a twice-differentiable function. This approximation uses local changes to the gradient to gradually build up an estimate of the Hessian for use in nonlinear optimization problems.For details of the algorithm, see the paper
"Updating Quasi-Newton Matrices with Limited Storage" by Jorge Nocedal, Math. of Computation, Vol. 35, no. 151, p.p. 773--782.
Note that the operator is an approximation to the
inverse Hessian, so the the Image method computes the quasi-Newton step.The BFGS approximation is based on successive rank-one perturbations to an initial approximation; these rank-one perturbations can be represented as outer products. This class allows the user to provide a symmetric positive definite operator to define an alternate inner product, which then changes the definition of the outer product. In the context of an optimization problem, this is equivalent to implementing the algorithm in the alternate inner product.
alphabetic index hierarchy of classes
this page has been generated automatically by doc++
(c)opyright by Malte Zöckler, Roland Wunderling
contact: doc++@zib.de