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, 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