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() (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

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