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
![]() | Deriv2Adj ( const HCL_Vector_d & x ) Deriv2Adj computes the second derivative of the operator at a point |
![]() | Domain () Domain space access |
![]() | 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 |
![]() | Range () Range space access |
![]() | Write ( ostream & str ) Debugging information |
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:
- Domain Returns a reference to the domain of the operator. This is used primarily for error-checking.
- Range Returns a reference to the range of the operator. This is used primarily for error-checking.
- Image Computes the action of the operator on a vector. Here is an example illustrating the use of Domain, Range, and Image:
void fcn( HCL_Op_d & F,HCL_Vector_d & x,HCL_Vector_d & y ) { if( x.Space() != F.Domain() || y.Space() != F.Range() ) // Error condition . . . F.Image( x,y ); // y <-- F(x) . . . }- DerivAdj Creates the derivative of the operator at a point. This derivative is a linear operator DF(x):X --> Y, and this method constructs it as a HCL_LinearOpAdj_d.
- Deriv2Adj Creates the second derivative of the operator at a point. This derivative is a bilinear operator D2F(x):X x X --> Y, and this method constructs it as a HCL_BiLinearOpAdj_d.
- EvaluateDeriv2Adj Creates an "evaluation object" which knows the image and derivatives of the operator at a given 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. The implementor of the operator can put these intermediate calculations in the evaluation object, so that they need only be done once at each point. The implementor of optimization algorithms should respect this by using EvaluateDeriv2Adj to get the image and/or derivatives instead of using Image, DerivAdj, and/or Deriv2Adj.
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& Range()
virtual HCL_EvaluateOpDeriv2Adj_d* EvaluateDeriv2Adj( const HCL_Vector_d & x )
virtual HCL_BiLinearOpAdj_d* Deriv2Adj( const HCL_Vector_d & x )
virtual ostream& Write( ostream & str )
this page has been generated automatically by doc++
(c)opyright by Malte Zöckler, Roland Wunderling
contact: doc++@zib.de