EndCriteria Class Reference

Criteria to end optimization process:. More...

#include <ql/math/optimization/endcriteria.hpp>

List of all members.

Public Types

enum  Type {
  None, MaxIterations, StationaryPoint, StationaryFunctionValue,
  StationaryFunctionAccuracy, ZeroGradientNorm, Unknown
}

Public Member Functions

 EndCriteria (Size maxIterations, Size maxStationaryStateIterations, Real rootEpsilon, Real functionEpsilon, Real gradientNormEpsilon)
 Initialization constructor.
Size maxIterations () const
Size maxStationaryStateIterations () const
Real rootEpsilon () const
Real functionEpsilon () const
Real gradientNormEpsilon () const
bool operator() (const Size iteration, Size &statState, const bool positiveOptimization, const Real fold, const Real normgold, const Real fnew, const Real normgnew, EndCriteria::Type &ecType) const
bool checkMaxIterations (const Size iteration, EndCriteria::Type &ecType) const
bool checkStationaryPoint (const Real xOld, const Real xNew, Size &statStateIterations, EndCriteria::Type &ecType) const
bool checkStationaryFunctionValue (const Real fxOld, const Real fxNew, Size &statStateIterations, EndCriteria::Type &ecType) const
bool checkStationaryFunctionAccuracy (const Real f, const bool positiveOptimization, EndCriteria::Type &ecType) const
bool checkZeroGradientNorm (const Real gNorm, EndCriteria::Type &ecType) const

Protected Attributes

Size maxIterations_
 Maximum number of iterations.
Size maxStationaryStateIterations_
 Maximun number of iterations in stationary state.
Real rootEpsilon_
 root, function and gradient epsilons
Real functionEpsilon_
Real gradientNormEpsilon_


Detailed Description

Criteria to end optimization process:.

  • maximum number of iterations AND minimum number of iterations around stationary point
    • x (independent variable) stationary point
    • y=f(x) (dependent variable) stationary point
    • stationary gradient
Examples:

BermudanSwaption.cpp.


Member Function Documentation

bool operator() ( const Size  iteration,
Size &  statState,
const bool  positiveOptimization,
const Real  fold,
const Real  normgold,
const Real  fnew,
const Real  normgnew,
EndCriteria::Type &  ecType 
) const

Test if the number of iterations is not too big and if a minimum point is not reached

bool checkMaxIterations ( const Size  iteration,
EndCriteria::Type &  ecType 
) const

Test if the number of iteration is below MaxIterations

bool checkStationaryPoint ( const Real  xOld,
const Real  xNew,
Size &  statStateIterations,
EndCriteria::Type &  ecType 
) const

Test if the root variation is below rootEpsilon

bool checkStationaryFunctionValue ( const Real  fxOld,
const Real  fxNew,
Size &  statStateIterations,
EndCriteria::Type &  ecType 
) const

Test if the function variation is below functionEpsilon

bool checkStationaryFunctionAccuracy ( const Real  f,
const bool  positiveOptimization,
EndCriteria::Type &  ecType 
) const

Test if the function value is below functionEpsilon

bool checkZeroGradientNorm ( const Real  gNorm,
EndCriteria::Type &  ecType 
) const

Test if the gradient norm variation is below gradientNormEpsilon

Test if the gradient norm value is below gradientNormEpsilon