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 |
![]() | Domain () const Domain space access. |
![]() | Range () const Range space access. |
![]() | GetScale () const Access to the scale, which is dynamically changed by the operator. |
![]() | 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 ![]() |
![]() | Reset () Reset sets the operator to the initial inverse Hessian approximation. |
![]() | Image ( const HCL_Vector_d & x, HCL_Vector_d & y ) const Image computes the image of the operator on x, giving y. |
![]() | AdjImage ( const HCL_Vector_d & y, HCL_Vector_d & x ) const AdjImage computes the image of the adjoint on y, giving x. |
![]() | InvImage (const HCL_Vector_d & y, HCL_Vector_d & x) const InvImage computes the action of the inverse on y, giving x (not implemented) |
![]() | 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) |
![]() | 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.
HCL_VectorSpace_d& Domain() const
HCL_VectorSpace_d& Range() const
double GetScale() const
void Update( const HCL_Vector_d & x, const HCL_Vector_d & xnext, const HCL_Vector_d & g, const HCL_Vector_d & gnext )
and the
current and next gradient
void Reset()
virtual void Image( const HCL_Vector_d & x, HCL_Vector_d & y ) const
virtual void AdjImage( const HCL_Vector_d & y, HCL_Vector_d & x ) const
virtual void InvImage(const HCL_Vector_d & y, HCL_Vector_d & x) const
virtual void InvAdjImage(const HCL_Vector_d & x, HCL_Vector_d & y) const
virtual ostream& Write( ostream & str ) const
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