Open CASCADE Technology 6.6.0
Public Member Functions | Protected Attributes
math_BFGS Class Reference

This class implements the Broyden-Fletcher-Goldfarb-Shanno variant of
Davidson-Fletcher-Powell minimization algorithm of a function of
multiple variables.Knowledge of the function's gradient is required.

#include <math_BFGS.hxx>

Inheritance diagram for math_BFGS:
Inheritance graph
[legend]

Public Member Functions

 math_BFGS (math_MultipleVarFunctionWithGradient &F, const math_Vector &StartingPoint, const Standard_Real Tolerance=1.0e-8, const Standard_Integer NbIterations=200, const Standard_Real ZEPS=1.0e-12)
 Given the starting point StartingPoint,
the Broyden-Fletcher-Goldfarb-Shanno variant of Davidson-Fletcher-Powell
minimization is done on the function F.
The tolerance required on F is given by Tolerance.
The solution F = Fi is found when :
2.0 * abs(Fi - Fi-1) <= Tolerance * (abs(Fi) + abs(Fi-1) + ZEPS).
The maximum number of iterations allowed is given by NbIterations.

 math_BFGS (math_MultipleVarFunctionWithGradient &F, const Standard_Real Tolerance=1.0e-8, const Standard_Integer NbIterations=200, const Standard_Real ZEPS=1.0e-12)
 Initializes the computation of the minimum of F.
Warning
A call to the Perform method must be made after this
initialization to effectively compute the minimum of the
function F.

virtual void Delete ()
virtual ~math_BFGS ()
void Perform (math_MultipleVarFunctionWithGradient &F, const math_Vector &StartingPoint)
 Is used internally by the constructors.

virtual Standard_Boolean IsSolutionReached (math_MultipleVarFunctionWithGradient &F) const
 This method is called at the end of each iteration to check if the
solution is found.
It can be redefined in a sub-class to implement a specific test to
stop the iterations.

Standard_Boolean IsDone () const
 Returns true if the computations are successful, otherwise returns false.

const math_VectorLocation () const
 returns the location vector of the minimum.
Exception NotDone is raised if the minimum was not found.

void Location (math_Vector &Loc) const
 outputs the location vector of the minimum in Loc.
Exception NotDone is raised if the minimum was not found.
Exception DimensionError is raised if the range of Loc is not
equal to the range of the StartingPoint.

Standard_Real Minimum () const
 returns the value of the minimum.
Exception NotDone is raised if the minimum was not found.

const math_VectorGradient () const
 Returns the gradient vector at the minimum.
Exception NotDone is raised if the minimum was not found.

void Gradient (math_Vector &Grad) const
 Returns the value of the gradient vector at the minimum in Grad.
Exception NotDone is raised if the minimum was not found.
Exception DimensionError is raised if the range of Grad is not
equal to the range of the StartingPoint.

Standard_Integer NbIterations () const
 Returns the number of iterations really done in the
calculation of the minimum.
The exception NotDone is raised if the minimum was not found.

void Dump (Standard_OStream &o) const
 Prints on the stream o information on the current state
of the object.
Is used to redefine the operator <<.

Protected Attributes

math_Status TheStatus
math_Vector TheLocation
math_Vector TheGradient
Standard_Real PreviousMinimum
Standard_Real TheMinimum
Standard_Real XTol
Standard_Real EPSZ
Standard_Integer nbiter

Constructor & Destructor Documentation

math_BFGS::math_BFGS ( math_MultipleVarFunctionWithGradient F,
const math_Vector StartingPoint,
const Standard_Real  Tolerance = 1.0e-8,
const Standard_Integer  NbIterations = 200,
const Standard_Real  ZEPS = 1.0e-12 
)
math_BFGS::math_BFGS ( math_MultipleVarFunctionWithGradient F,
const Standard_Real  Tolerance = 1.0e-8,
const Standard_Integer  NbIterations = 200,
const Standard_Real  ZEPS = 1.0e-12 
)
virtual math_BFGS::~math_BFGS ( ) [inline, virtual]

Member Function Documentation

virtual void math_BFGS::Delete ( ) [virtual]
void math_BFGS::Dump ( Standard_OStream o) const
void math_BFGS::Gradient ( math_Vector Grad) const
const math_Vector& math_BFGS::Gradient ( ) const
Standard_Boolean math_BFGS::IsDone ( ) const
virtual Standard_Boolean math_BFGS::IsSolutionReached ( math_MultipleVarFunctionWithGradient F) const [virtual]
const math_Vector& math_BFGS::Location ( ) const
void math_BFGS::Location ( math_Vector Loc) const
Standard_Real math_BFGS::Minimum ( ) const
Standard_Integer math_BFGS::NbIterations ( ) const
void math_BFGS::Perform ( math_MultipleVarFunctionWithGradient F,
const math_Vector StartingPoint 
)

Field Documentation


The documentation for this class was generated from the following file:
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines