QuantLib: a free/open-source library for quantitative finance
Reference manual - version 1.40
Loading...
Searching...
No Matches
EndCriteria Class Reference

Criteria to end optimization process: More...

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

Public Types

enum  Type {
  None , MaxIterations , StationaryPoint , StationaryFunctionValue ,
  StationaryFunctionAccuracy , ZeroGradientNorm , FunctionEpsilonTooSmall , 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() (Size iteration, Size &statState, bool positiveOptimization, Real fold, Real normgold, Real fnew, Real normgnew, EndCriteria::Type &ecType) const
bool checkMaxIterations (Size iteration, EndCriteria::Type &ecType) const
bool checkStationaryPoint (Real xOld, Real xNew, Size &statStateIterations, EndCriteria::Type &ecType) const
bool checkStationaryFunctionValue (Real fxOld, Real fxNew, Size &statStateIterations, EndCriteria::Type &ecType) const
bool checkStationaryFunctionAccuracy (Real f, bool positiveOptimization, EndCriteria::Type &ecType) const
bool checkZeroGradientNorm (Real gNorm, EndCriteria::Type &ecType) const

Static Public Member Functions

static bool succeeded (EndCriteria::Type ecType)

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, Gaussian1dModels.cpp, and GlobalOptimizer.cpp.

Member Function Documentation

◆ operator()()

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

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

◆ checkMaxIterations()

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

Test if the number of iteration is below MaxIterations

◆ checkStationaryPoint()

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

Test if the root variation is below rootEpsilon

◆ checkStationaryFunctionValue()

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

Test if the function variation is below functionEpsilon

◆ checkStationaryFunctionAccuracy()

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

Test if the function value is below functionEpsilon

◆ checkZeroGradientNorm()

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

Test if the gradient norm variation is below gradientNormEpsilon

Test if the gradient norm value is below gradientNormEpsilon