class HCL_EvaluateFunctionalHess_d : public HCL_EvaluateFunctionalGrad_d

This class represents an "evaluation" object that will be created by a HCL_FunctionalHess_d object to implement the value, gradient, and Hessian of the functional at a point

Inheritance:


Public Methods

virtual HCL_VectorSpace_d& Domain ()
Domain returns a reference to the domain of the underlying function.
virtual void Gradient ( HCL_Vector_d & g )
Gradient computes the gradient of the function
virtual HCL_LinearOp_d* Hessian ()
Hessian computes the Hessian of the function
virtual const HCL_LinearOp_d& HessianRef ()
HessianRef computes the Hessian of the function and returns a reference to it
virtual double Value ()
Value computes the value of the function
virtual ostream& Write ( ostream & str )
Debugging information

Inherited from HCL_EvaluateFunctionalGrad_d:

Public Methods

virtual const HCL_Vector_d& GradientRef()
virtual double ValueRef()

Inherited from HCL_Base:

Public Methods

int Count()
void DecCount()
void IncCount()

Private Fields

int ReferenceCount

Documentation

This class represents an "evaluation" object that will be created by a HCL_FunctionalHess_d object to implement the value, gradient, and Hessian of the functional at a point. The purpose of having an evaluation object is to deal with the common situation in which the functional value and derivatives share some intermediate calculations. A typical implementation of such a functional involves defining an evaluation object whose constructor performs these intermediate calculations. The Value method then completes the computation of the functional value, while the Gradient and Hessian method complete the calculation of the derivatives.

The functional value, gradient, and Hessian should then be accessed through the ValueRef, GradientRef, and HessianRef methods. These are methods implemented in the base class (i.e. they do not need to be redefined in a derived class). The ValueRef method invokes Value to get the function value, stores it, and sets a flag to indicate that the value has already been computed. On subsequent calls, ValueRef merely returns the stored value. GradientRef and HessianRef work in a similar fashion; note that these method manage the storage of the gradient and Hessian, so the calling program does not need to allocate storage.

Here is a summary of the primary methods of this class:

virtual HCL_VectorSpace_d& Domain()
Domain returns a reference to the domain of the underlying function.

virtual double Value()
Value computes the value of the function. This function must be implemented in each concrete derived class. It is recommended that any calculations that are required for both the value and derivatives be done in the constructor; Value should then complete the computation of the functional value.

virtual void Gradient( HCL_Vector_d & g )
Gradient computes the gradient of the function. It is recommended that any calculations that are required for both the value and derivatives be done in the constructor; Gradient should then complete the computation of the gradient.

virtual HCL_LinearOp_d* Hessian()
Hessian computes the Hessian of the function. It is recommended that any calculations that are required for both the value and derivatives be done in the constructor; Hessian should then complete the computation of the Hessian.

virtual const HCL_LinearOp_d& HessianRef()
HessianRef computes the Hessian of the function and returns a reference to it. This causes the Evaluation object to manage the storage.

virtual ostream& Write( ostream & str )
Debugging information. Write should be implemented to print a description of the object that will be useful for debugging. If a complete description is lengthy, an implementor should consider just printing out a useful subset. This method will likely be used to send information to the screen when a error condition is encountered.


Direct child classes:
HCL_EvalQuadRegFunctional_d
HCL_EvalLinCombFcnlHess_d
HCL_EvalDiagFcnlHess_d
HCL_EvalALFcnlHess_d
HCL_EvalRestrictedFunctionalHess_d

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