#include <QMCSteepestDescent.h>
Public Member Functions | |
QMCSteepestDescent (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 | |
QMCObjectiveFunction * | getObjectiveFunction () |
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. |
As is standard in the field, the optimization is a minimization.
Definition at line 23 of file QMCSteepestDescent.h.
QMCSteepestDescent::QMCSteepestDescent | ( | QMCObjectiveFunction * | function, | |
QMCLineSearchStepLengthSelectionAlgorithm * | stepAlg, | |||
int | maxSteps, | |||
double | tol | |||
) |
Constructs and initializes an instance of this class.
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 . |
Definition at line 15 of file QMCSteepestDescent.cpp.
void QMCSteepestDescent::calculateHessian | ( | ) | [private, virtual] |
Calculates the search direction at x.
x' = x + StepLength * SearchDirection. Where the search direction is the negative of the gradient.
Implements QMCLineSearch.
Definition at line 21 of file QMCSteepestDescent.cpp.
Array1D< double > QMCLineSearch::optimize | ( | Array1D< double > & | initialGuess, | |
QMCDerivativeProperties & | dp, | |||
double | , | |||
int | ||||
) | [virtual, inherited] |
Optimize the function starting from the provided initial guess parameters.
initialGuess | initial guess parameters for the optimization. |
Implements QMCOptimizationAlgorithm.
Definition at line 60 of file QMCLineSearch.cpp.
References QMCFlags::a_diag, Array2D< T >::determinant_and_inverse(), QMCLineSearch::dim, Array2D< T >::dim1(), Array1D< T >::dim1(), Array2D< T >::dim2(), Array2D< T >::eigenvaluesRS(), QMCLineSearch::epsilon, QMCObjectiveFunction::evaluate(), QMCLineSearch::f, QMCInput::flags, QMCLineSearch::getObjectiveFunction(), QMCDerivativeProperties::getParameterGradient(), QMCDerivativeProperties::getParameterHessian(), QMCDerivativeProperties::getParameterValue(), QMCObjectiveFunctionResult::getScore(), globalInput, QMCLineSearch::gradient, QMCLineSearch::inverseHessian, QMCLineSearch::maximumSteps, Array2D< T >::nonSymmetry(), QMCLineSearch::OF, QMCFlags::optimize_Psi_method, QMCInput::printAIParameters(), Array2D< T >::printArray2D(), QMCLineSearch::searchDirection(), Array2D< T >::setToIdentity(), QMCLineSearch::stepLength(), and QMCLineSearch::x.
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().
int QMCLineSearch::dim [protected, inherited] |
Definition at line 62 of file QMCLineSearch.h.
Referenced by QMCBFGSQuasiNewtonLineSearch::calculateHessian(), QMCLineSearch::optimize(), QMCLineSearch::QMCLineSearch(), and QMCLineSearch::searchDirection().
vector<double> QMCLineSearch::f [protected, inherited] |
vector< Array1D<double> > QMCLineSearch::x [protected, inherited] |
Definition at line 64 of file QMCLineSearch.h.
Referenced by QMCBFGSQuasiNewtonLineSearch::calculateHessian(), and QMCLineSearch::optimize().
vector< Array1D<double> > QMCLineSearch::gradient [protected, inherited] |
Definition at line 65 of file QMCLineSearch.h.
Referenced by QMCBFGSQuasiNewtonLineSearch::calculateHessian(), QMCLineSearch::optimize(), and QMCLineSearch::searchDirection().
vector< Array2D<double> > QMCLineSearch::inverseHessian [protected, inherited] |
Definition at line 66 of file QMCLineSearch.h.
Referenced by QMCBFGSQuasiNewtonLineSearch::calculateHessian(), QMCLineSearch::optimize(), and QMCLineSearch::searchDirection().