class HCL_OpDeriv2Adj_d : public HCL_OpDerivAdj_d

HCL_OpDeriv2Adj_d is the base class for (presumably nonlinear) operators which know how to compute their first and second derivatives; the first and second derivatives know how to compute the appropriate adjoints

Inheritance:


Public Methods

virtual HCL_BiLinearOpAdj_d* Deriv2Adj ( const HCL_Vector_d & x )
Deriv2Adj computes the second derivative of the operator at a point
virtual HCL_VectorSpace_d& Domain ()
Domain space access
virtual HCL_EvaluateOpDeriv2Adj_d* EvaluateDeriv2Adj ( const HCL_Vector_d & x )
EvaluateDeriv2Adj creates and evaluation object which knows how to compute the image, first derivative, and second derivative, along with all relevant adjoints, at a point
virtual HCL_VectorSpace_d& Range ()
Range space access
virtual ostream& Write ( ostream & str )
Debugging information

Inherited from HCL_OpDerivAdj_d:

Public Methods

int CheckDeriv( const HCL_Vector_d &, const HCL_Vector_d &, ostream & str, int n=10, double hmin=0.1, double hmax=1.0 )
virtual HCL_LinearOpAdj_d* DerivAdj( const HCL_Vector_d & x )
virtual HCL_EvaluateOpDerivAdj_d* EvaluateDerivAdj( const HCL_Vector_d & x )
virtual void Image( const HCL_Vector_d & x, HCL_Vector_d & y )

Inherited from HCL_Op_d:

Public Methods

int CheckPartialDeriv( const HCL_Vector_d &, const HCL_Vector_d &, int ind, ostream & str, int n=10, double hmin=0.1, double hmax=1.0 )
virtual const HCL_LinearOpAdj_d& DerivAdjRef()
HCL_EvalOpProductDomainDerivAdj_d( int n )
virtual double MaxStep( const HCL_Vector_d & x, const HCL_Vector_d &dir)
virtual HCL_LinearOpAdj_d* PartialDerivAdj( int i )
virtual HCL_LinearOpAdj_d* PartialDerivAdj( const HCL_Vector_d & x, int i )
virtual const HCL_LinearOpAdj_d& PartialDerivAdjRef( int i )
virtual HCL_ProductVectorSpace_d& ProductDomain()
virtual HCL_ProductVectorSpace_d& ProductDomain()

Inherited from HCL_Base:

Public Methods

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

Private Fields

int ReferenceCount

Documentation

HCL_OpDeriv2Adj_d is the base class for (presumably nonlinear) operators which know how to compute their first and second derivatives; the first and second derivatives know how to compute the appropriate adjoints.

The primary methods of this class are:

In order to define a concrete derived class, one must first define a corresponding HCL_EvaluateOpDeriv2Adj_d class. Defining operators is expected to be one of the main activities of users of HCL, since the many optimization problems involve operators in the definition of the objective function or constraints. Please see one of the test programs that comes in the HCLtest directory for examples.

virtual HCL_VectorSpace_d& Domain()
Domain space access. Returns a reference to the HCL_VectorSpace_d which forms the domain of the operator. Note that, in the current design, the domain of an operator must be an entire vector space, although many nonlinear operators are only defined on an open subset of a vector space. This is a flaw in the design of HCL which may be corrected in some future version of the software. A partial work-around to this problem is provided by the MaxStep method.

virtual HCL_VectorSpace_d& Range()
Range space access. Returns a reference to the range of the operator, which is a HCL_VectorSpace_d.

virtual HCL_EvaluateOpDeriv2Adj_d* EvaluateDeriv2Adj( const HCL_Vector_d & x )
EvaluateDeriv2Adj creates and evaluation object which knows how to compute the image, first derivative, and second derivative, along with all relevant adjoints, at a point. The purpose of the evaluation object is to accommodate the common situation in which the computation of the image and derivatives involve some common intermediate calculations.

virtual HCL_BiLinearOpAdj_d* Deriv2Adj( const HCL_Vector_d & x )
Deriv2Adj computes the second derivative of the operator at a point. It does this by creating an evaluation object, using EvaluateDeriv2Adj, getting the second derivative, and deleting the evaluation object. The method is implemented in this (the base) class, so it need not be redefined for derived classes.

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.


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