Open CASCADE Technology
7.2.0

This class implements the BroydenFletcherGoldfarbShanno variant of DavidsonFletcherPowell minimization algorithm of a function of multiple variables.Knowledge of the function's gradient is required. More...
#include <math_BFGS.hxx>
Public Member Functions  
math_BFGS (const Standard_Integer NbVariables, const Standard_Real Tolerance=1.0e8, const Standard_Integer NbIterations=200, const Standard_Real ZEPS=1.0e12)  
Initializes the computation of the minimum of a function with NbVariables. Tolerance, ZEPS and NbIterations are described in the method Perform. Warning: A call to the Perform method must be made after this initialization to effectively compute the minimum of the function F. More...  
virtual  ~math_BFGS () 
void  SetBoundary (const math_Vector &theLeftBorder, const math_Vector &theRightBorder) 
Set boundaries for conditional optimization. The expected indices range of vectors is [1, NbVariables]. More...  
void  Perform (math_MultipleVarFunctionWithGradient &F, const math_Vector &StartingPoint) 
Given the starting point StartingPoint, minimization is done on the function F. The solution F = Fi is found when : 2.0 * abs(Fi  Fi1) <= Tolerance * (abs(Fi) + abs(Fi1) + ZEPS). Tolerance, ZEPS and maximum number of iterations are given in the constructor. 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 subclass 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_Vector &  Location () const 
returns the location vector of the minimum. 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. 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. Exception NotDone is raised if the minimum was not found. More...  
const math_Vector &  Gradient () const 
Returns the gradient vector at the minimum. 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. 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 calculation of the minimum. 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...  
This class implements the BroydenFletcherGoldfarbShanno variant of DavidsonFletcherPowell minimization algorithm of a function of multiple variables.Knowledge of the function's gradient is required.
It is possible to solve conditional optimization problem on hyperparallelepiped. Method SetBoundary is used to define hyperparallelepiped borders. With boundaries defined, the algorithm will not make evaluations of the function outside of the borders.
math_BFGS::math_BFGS  (  const Standard_Integer  NbVariables, 
const Standard_Real  Tolerance = 1.0e8 , 

const Standard_Integer  NbIterations = 200 , 

const Standard_Real  ZEPS = 1.0e12 

) 
Initializes the computation of the minimum of a function with NbVariables. Tolerance, ZEPS and NbIterations are described in the method Perform. Warning: A call to the Perform method must be made after this initialization to effectively compute the minimum of the function F.

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. 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. 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 
This method is called at the end of each iteration to check if the solution is found. It can be redefined in a subclass to implement a specific test to stop the iterations.
Reimplemented in AppDef_Gradient_BFGSOfMyGradientbisOfBSplineCompute, AppDef_Gradient_BFGSOfMyGradientOfCompute, AppDef_Gradient_BFGSOfTheGradient, GeomInt_Gradient_BFGSOfMyGradientbisOfTheComputeLineOfWLApprox, GeomInt_Gradient_BFGSOfMyGradientOfTheComputeLineBezierOfWLApprox, BRepApprox_Gradient_BFGSOfMyGradientbisOfTheComputeLineOfApprox, BRepApprox_Gradient_BFGSOfMyGradientOfTheComputeLineBezierOfApprox, AppDef_BSpGradient_BFGSOfMyBSplGradientOfBSplineCompute, GeomInt_BSpGradient_BFGSOfMyBSplGradientOfTheComputeLineOfWLApprox, and BRepApprox_BSpGradient_BFGSOfMyBSplGradientOfTheComputeLineOfApprox.
const math_Vector& math_BFGS::Location  (  )  const 
returns the location vector of the minimum. 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. 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. 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 calculation of the minimum. The exception NotDone is raised if the minimum was not found.
void math_BFGS::Perform  (  math_MultipleVarFunctionWithGradient &  F, 
const math_Vector &  StartingPoint  
) 
Given the starting point StartingPoint, minimization is done on the function F. The solution F = Fi is found when : 2.0 * abs(Fi  Fi1) <= Tolerance * (abs(Fi) + abs(Fi1) + ZEPS). Tolerance, ZEPS and maximum number of iterations are given in the constructor.
void math_BFGS::SetBoundary  (  const math_Vector &  theLeftBorder, 
const math_Vector &  theRightBorder  
) 
Set boundaries for conditional optimization. The expected indices range of vectors is [1, NbVariables].

protected 

protected 

protected 

protected 

protected 

protected 

protected 

protected 

protected 

protected 

protected 