Open CASCADE Technology  6.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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.
More...

#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.
More...
 
 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. <br>

Warning
A call to the Perform method must be made after this
initialization to effectively compute the minimum of the
function F.
More...

 
virtual void Delete ()
 
virtual ~math_BFGS ()
 
void Perform (math_MultipleVarFunctionWithGradient &F, const math_Vector &StartingPoint)
 Is used internally by the constructors.
More...
 
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.
More...
 
Standard_Boolean IsDone () const
 Returns true if the computations are successful, otherwise returns false.
More...
 
const math_VectorLocation () const
 
 returns the location vector of the minimum. <br>

Exception NotDone is raised if the minimum was not found.
More...

 
void Location (math_Vector &Loc) const
 
 outputs the location vector of the minimum in Loc. <br>

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.
More...

 
Standard_Real Minimum () const
 
 returns the value of the minimum. <br>

Exception NotDone is raised if the minimum was not found.
More...

 
const math_VectorGradient () const
 
 Returns the gradient vector at the minimum. <br>

Exception NotDone is raised if the minimum was not found.
More...

 
void Gradient (math_Vector &Grad) const
 
 Returns the value of the gradient vector at the minimum in Grad. <br>

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.
More...

 
Standard_Integer NbIterations () const
 
 Returns the number of iterations really done in the <br>
     calculation of the minimum. <br>

The exception NotDone is raised if the minimum was not found.
More...

 
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 <<.
More...
 

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
 

Detailed Description

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.

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 
)

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_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. <br>

Warning
A call to the Perform method must be made after this
initialization to effectively compute the minimum of the
function F.

virtual math_BFGS::~math_BFGS ( )
inlinevirtual

Member Function Documentation

virtual void math_BFGS::Delete ( )
virtual
void math_BFGS::Dump ( Standard_OStream o) const

Prints on the stream o information on the current state
of the object.
Is used to redefine the operator <<.

const math_Vector& math_BFGS::Gradient ( ) const

 Returns the gradient vector at the minimum. <br>

Exception NotDone is raised if the minimum was not found.

void math_BFGS::Gradient ( math_Vector Grad) const

 Returns the value of the gradient vector at the minimum in Grad. <br>

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_Boolean math_BFGS::IsDone ( ) const

Returns true if the computations are successful, otherwise returns false.

virtual Standard_Boolean math_BFGS::IsSolutionReached ( math_MultipleVarFunctionWithGradient F) const
virtual
const math_Vector& math_BFGS::Location ( ) const

 returns the location vector of the minimum. <br>

Exception NotDone is raised if the minimum was not found.

void math_BFGS::Location ( math_Vector Loc) const

 outputs the location vector of the minimum in Loc. <br>

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 math_BFGS::Minimum ( ) const

 returns the value of the minimum. <br>

Exception NotDone is raised if the minimum was not found.

Standard_Integer math_BFGS::NbIterations ( ) const

 Returns the number of iterations really done in the <br>
     calculation of the minimum. <br>

The exception NotDone is raised if the minimum was not found.

void math_BFGS::Perform ( math_MultipleVarFunctionWithGradient F,
const math_Vector StartingPoint 
)

Is used internally by the constructors.

Field Documentation

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

The documentation for this class was generated from the following file: