QMCBFGSQuasiNewtonLineSearch Class Reference

BFGS Quasi-Newton line search numerical optimization algorithm. More...

#include <QMCBFGSQuasiNewtonLineSearch.h>

Inheritance diagram for QMCBFGSQuasiNewtonLineSearch:

QMCLineSearch QMCOptimizationAlgorithm

List of all members.

Public Member Functions

 QMCBFGSQuasiNewtonLineSearch (QMCObjectiveFunction *function, QMCLineSearchStepLengthSelectionAlgorithm *stepAlg, int maxSteps, double tol)
 Constructs and initializes an instance of this class.
Array1D< double > optimize (Array1D< double > &initialGuess, QMCDerivativeProperties &dp, double a_diag_factor, int optStep)
 Optimize the function starting from the provided initial guess parameters.

Protected Member Functions

QMCObjectiveFunctiongetObjectiveFunction ()
 Gets the objective function for the calculation.

Protected Attributes

int dim
vector< double > f
vector< Array1D< double > > x
vector< Array1D< double > > gradient
vector< Array2D< double > > inverseHessian

Private Member Functions

void calculateHessian ()
 Calculates the search direction at x.


Detailed Description

BFGS Quasi-Newton line search numerical optimization algorithm.

As is standard in the field, the optimization is a minimization.

Definition at line 23 of file QMCBFGSQuasiNewtonLineSearch.h.


Constructor & Destructor Documentation

QMCBFGSQuasiNewtonLineSearch::QMCBFGSQuasiNewtonLineSearch ( QMCObjectiveFunction function,
QMCLineSearchStepLengthSelectionAlgorithm stepAlg,
int  maxSteps,
double  tol 
)

Constructs and initializes an instance of this class.

Parameters:
function objective function to optimize.
stepAlg algorithm to use in determining the line search step length.
maxSteps maximum number of steps to be performed during the line search.
tol tolerance to converge the solution to. Calculation is converged when $\left| 1-\frac{f(x_{i+1})}{f(x_{i})} \right| < tol $.

Definition at line 15 of file QMCBFGSQuasiNewtonLineSearch.cpp.


Member Function Documentation

void QMCBFGSQuasiNewtonLineSearch::calculateHessian (  )  [private, virtual]

Calculates the search direction at x.

x' = x + StepLength * SearchDirection. Where the search direction is the approximately the Newton step direction. The step is determined using the BFGS Quasi-Newton algorithm.

Implements QMCLineSearch.

Definition at line 23 of file QMCBFGSQuasiNewtonLineSearch.cpp.

References QMCLineSearch::dim, QMCLineSearch::gradient, QMCLineSearch::inverseHessian, and QMCLineSearch::x.

Array1D< double > QMCLineSearch::optimize ( Array1D< double > &  initialGuess,
QMCDerivativeProperties dp,
double  ,
int   
) [virtual, inherited]

QMCObjectiveFunction * QMCLineSearch::getObjectiveFunction (  )  [protected, inherited]

Gets the objective function for the calculation.

Definition at line 272 of file QMCLineSearch.cpp.

References QMCLineSearch::OF.

Referenced by QMCLineSearch::optimize().


Member Data Documentation

int QMCLineSearch::dim [protected, inherited]

vector<double> QMCLineSearch::f [protected, inherited]

Definition at line 63 of file QMCLineSearch.h.

Referenced by QMCLineSearch::optimize().

vector< Array1D<double> > QMCLineSearch::x [protected, inherited]

Definition at line 64 of file QMCLineSearch.h.

Referenced by calculateHessian(), and QMCLineSearch::optimize().

vector< Array1D<double> > QMCLineSearch::gradient [protected, inherited]

vector< Array2D<double> > QMCLineSearch::inverseHessian [protected, inherited]


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

Generated on Sat Jul 5 16:14:03 2008 for QMcBeaver by  doxygen 1.5.6