OCCT3D OCCT 8.0.1
OCCT documentation

Search guides and API reference

Enter at least two characters.

    Open CASCADE Technology Reference Manual 8.0.1
    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:

    Public Member Functions

     math_BFGS (const int NbVariables, const double Tolerance=1.0e-8, const int NbIterations=200, const double ZEPS=1.0e-12)
     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 ~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].
    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 - Fi-1) <= Tolerance * (abs(Fi) + abs(Fi-1) + ZEPS). Tolerance, ZEPS and maximum number of iterations are given in the constructor.
    virtual bool 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.
    bool 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.
    double 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.
    int 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
    double PreviousMinimum
    double TheMinimum
    double XTol
    double EPSZ
    int nbiter
    bool myIsBoundsDefined
    math_Vector myLeft
    math_Vector myRight

    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.

    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.

    Constructor & Destructor Documentation

    ◆ math_BFGS()

    math_BFGS::math_BFGS ( const int NbVariables,
    const double Tolerance = 1.0e-8,
    const int NbIterations = 200,
    const double ZEPS = 1.0e-12 )

    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.

    ◆ ~math_BFGS()

    virtual math_BFGS::~math_BFGS ( )
    virtual

    Member Function Documentation

    ◆ Dump()

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

    ◆ Gradient() [1/2]

    const math_Vector & math_BFGS::Gradient ( ) const

    Returns the gradient vector at the minimum. Exception NotDone is raised if the minimum was not found.

    ◆ Gradient() [2/2]

    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.

    ◆ IsDone()

    bool math_BFGS::IsDone ( ) const

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

    ◆ IsSolutionReached()

    ◆ Location() [1/2]

    const math_Vector & math_BFGS::Location ( ) const

    returns the location vector of the minimum. Exception NotDone is raised if the minimum was not found.

    ◆ Location() [2/2]

    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.

    ◆ Minimum()

    double math_BFGS::Minimum ( ) const

    returns the value of the minimum. Exception NotDone is raised if the minimum was not found.

    ◆ NbIterations()

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

    ◆ Perform()

    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 - Fi-1) <= Tolerance * (abs(Fi) + abs(Fi-1) + ZEPS). Tolerance, ZEPS and maximum number of iterations are given in the constructor.

    ◆ SetBoundary()

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

    Field Documentation

    ◆ EPSZ

    double math_BFGS::EPSZ
    protected

    ◆ myIsBoundsDefined

    bool math_BFGS::myIsBoundsDefined
    protected

    ◆ myLeft

    math_Vector math_BFGS::myLeft
    protected

    ◆ myRight

    math_Vector math_BFGS::myRight
    protected

    ◆ nbiter

    int math_BFGS::nbiter
    protected

    ◆ PreviousMinimum

    double math_BFGS::PreviousMinimum
    protected

    ◆ TheGradient

    math_Vector math_BFGS::TheGradient
    protected

    ◆ TheLocation

    math_Vector math_BFGS::TheLocation
    protected

    ◆ TheMinimum

    double math_BFGS::TheMinimum
    protected

    ◆ TheStatus

    math_Status math_BFGS::TheStatus
    protected

    ◆ XTol

    double math_BFGS::XTol
    protected

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