class HCL_LeastSquaresFcnlProductDomain_d : public HCL_FunctionalProductDomain_d

HCL_LeastSquaresFcnlProductDomain_d creates least-squares objective functions from operators and data

Inheritance:


Public Methods

HCL_LeastSquaresFcnlProductDomain_d ( HCL_OpProductDomain_d * Operator, HCL_Vector_d * Data)
Usual constructor. Pointers to the operator and data are required.
virtual HCL_VectorSpace_d& Domain () const
Domain space access
virtual HCL_EvaluateFunctional_d* Evaluate ( const HCL_Vector_d & x ) const
Evaluate creates an "evaluation" object, which knows how to compute the function value, gradient,and Hessian at the given x
virtual ostream& Write ( ostream & str ) const
Write invokes the Write methods of the operator and data.

Inherited from HCL_FunctionalProductDomain_d:

Public Methods

virtual HCL_ProductSpace_d& ProductDomain() const
virtual void PartialGradient( int i, const HCL_Vector_d & x, HCL_Vector_d & g ) const
virtual HCL_LinearOp_d* HessianBlock( int i, int j, const HCL_Vector_d & x ) const
int CheckHessianBlock( const HCL_Vector_d &, const HCL_Vector_d &, const HCL_Vector_d &, int i, int j, ostream & str, int n=10, double hmin=0.1, double hmax=1.0 ) const
int CheckHessianBlock( const HCL_Vector_d &, const HCL_Vector_d &, int ind, ostream & str, int n=10, double hmin=0.1, double hmax=1.0 ) const
int CheckHessianBlockAdj( const HCL_Vector_d &, const HCL_Vector_d &, const HCL_Vector_d &, int i, int j, ostream & str, int n=10, double hmin=0.1, double hmax=1.0 ) const

Protected Methods

virtual double Value1( const HCL_Vector_d & x ) const
virtual void PartialGradient1( int i, const HCL_Vector_d & x, HCL_Vector_d & y ) const
virtual HCL_LinearOp_d* HessianBlock1( int i, int j, const HCL_Vector_d & x ) const
virtual void HessianBlockImage( int i, int j, const HCL_Vector_d & x, const HCL_Vector_d & dx, HCL_Vector_d & dy ) const

Inherited from HCL_Functional_d:

Public Methods

virtual double MaxStep( const HCL_Vector_d & x, const HCL_Vector_d & dir) const
virtual double Value( const HCL_Vector_d & x ) const
virtual void Gradient( const HCL_Vector_d & x, HCL_Vector_d & g ) const
virtual HCL_LinearOp_d* Hessian( const HCL_Vector_d & x ) const
void Scan( const HCL_Vector_d & x, const HCL_Vector_d & dx, int N, double hmin, double hmax, char * fname = NULL )
int CheckGrad( const HCL_Vector_d & x, const HCL_Vector_d & y, ostream & str, int n=10, double hmin=0.1, double hmax=1.0 )
int CheckHess( const HCL_Vector_d &, const HCL_Vector_d &, ostream & str, int n=10, double hmin=0.1, double hmax=1.0 )

Protected Methods

virtual void Gradient1( const HCL_Vector_d & x, HCL_Vector_d & y ) const
virtual void HessianImage( const HCL_Vector_d & x, const HCL_Vector_d & dx, HCL_Vector_d & dy ) const
virtual void HessianInvImage( const HCL_Vector_d & x, const HCL_Vector_d & dy, HCL_Vector_d & dx ) const
virtual HCL_LinearOp_d* Hessian1( const HCL_Vector_d & x ) const

Inherited from HCL_Base:

Public Methods

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

Documentation

HCL_LeastSquaresFcnlProductDomain_d creates least-squares objective functions from operators and data. The term "ProductDomain" indicates that the operator (and hence the functional) is defined on a product space. This is a so called bridge class, i.e. it exists merely to make objects of some class behave like objects of another class. In this case, the input objects are a nonlinear operator A (an instance of HCL_OpProductDomain_d) and a data vector d. The interface to these objects constructed by the class is the least-squares functional its gradient and its Hessian operator expressed as an HCL_FunctionalProductDomain_d, an input class for optimization methods.

This class can be used to solve nonlinear least squares problems straight from the implementation of the underlying operator, without constructing by hand the least-squares function, as follows:

If you have a nonlinear operator N (an instance of HCL_OpProductDomain_d), and a data vector d (an instance of HCL_Vector_d), construct the least-squares functional as follows:

  HCL_LeastSquaresFcnlProductDomain_d F(N, d);
  

The HCL_Functional_d F so constructed is suitable for submission to an optimization algorithm using second derivative information, such as Steihaug-Toint (HCL_UMinTR), or to any of the algorithms using first derivative information, such as BFGS (HCL_UMin_lbfgs_d) or nonlinear conjugate gradients (HCL_UMinNLCG_d), as well as those algorithms specifically recognizing the product space structure, such as HCL_UMinAlt_d and HCL_UMinSub_d.

HCL_LeastSquaresFcnlProductDomain_d( HCL_OpProductDomain_d * Operator, HCL_Vector_d * Data)
Usual constructor. Pointers to the operator and data are required.

virtual HCL_VectorSpace_d& Domain() const
Domain space access. Returns a reference to the vector space defining the domain of the functional.

virtual HCL_EvaluateFunctional_d* Evaluate( const HCL_Vector_d & x ) const
Evaluate creates an "evaluation" object, which knows how to compute the function value, gradient,and Hessian at the given x

virtual ostream& Write( ostream & str ) const
Write invokes the Write methods of the operator and data.


This class has no child classes.

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