BFGSOpt Namespace Reference

## Functions

template<typename EnergyFunctor >
void | linearSearch (unsigned int dim, double *oldPt, double oldVal, double *grad, double *dir, double *newPt, double &newVal, EnergyFunctor func, double maxStep, int &resCode)
| Do a Quasi-Newton minimization along a line. More...
template<typename EnergyFunctor , typename GradientFunctor >
int | minimize (unsigned int dim, double *pos, double gradTol, unsigned int &numIters, double &funcVal, EnergyFunctor func, GradientFunctor gradFunc, double funcTol=TOLX, unsigned int maxIts=MAXITS)
| Do a BFGS minimization of a function. More...

## Variables

const double | FUNCTOL =1e-4
| Default tolerance for function convergence in the minimizer. More...
const double | MOVETOL =1e-7
| Default tolerance for x changes in the minimizer. More...
const int | MAXITS =200
| Default maximum number of iterations. More...
const double | EPS =3e-8
| Default gradient tolerance in the minimizer. More...
const double | TOLX =4.*EPS
| Default direction vector tolerance in the minimizer. More...
const double | MAXSTEP =100.0
| Default maximim step size in the minimizer. More...

## Function Documentation

template<typename EnergyFunctor >

void BFGSOpt::linearSearch | ( | unsigned int | dim,
|  | double * | oldPt,
|  | double | oldVal,
|  | double * | grad,
|  | double * | dir,
|  | double * | newPt,
|  | double & | newVal,
|  | EnergyFunctor | func,
|  | double | maxStep,
|  | int & | resCode
| ) |  |

Do a Quasi-Newton minimization along a line.

See Numerical Recipes in C, Section 9.7 for a description of the algorithm.

Parameters

  dim | the dimensionality of the space.
  oldPt | the current position, as an array.
  oldVal | the current function value.
  grad | the value of the function gradient at oldPt
  dir | the minimization direction
  newPt | used to return the final position
  newVal | used to return the final function value
  func | the function to minimize
  maxStep | the maximum allowable step size
  resCode | used to return the results of the search.

Possible values for resCode are on return are:

- 0: success
- 1: the stepsize got too small. This probably indicates success.
- -1: the direction is bad (orthogonal to the gradient)

Definition at line 44 of file BFGSOpt.h.

References ForceFields::UFF::Params::lambda, and PRECONDITION.

Referenced by minimize().

template<typename EnergyFunctor , typename GradientFunctor >

int BFGSOpt::minimize | ( | unsigned int | dim,
|  | double * | pos,
|  | double | gradTol,
|  | unsigned int & | numIters,
|  | double & | funcVal,
|  | EnergyFunctor | func,
|  | GradientFunctor | gradFunc,
|  | double | funcTol = `TOLX`,
|  | unsigned int | maxIts = `MAXITS`
| ) |  |

Do a BFGS minimization of a function.

See Numerical Recipes in C, Section 10.7 for a description of the algorithm.

Parameters

  dim | the dimensionality of the space.
  pos | the starting position, as an array.
  gradTol | tolerance for gradient convergence
  numIters | used to return the number of iterations required
  funcVal | used to return the final function value
  func | the function to minimize
  gradFunc | calculates the gradient of func
  funcTol | tolerance for changes in the function value for convergence.
  maxIts | maximum number of iterations allowed

Returns
  a flag indicating success (or type of failure). Possible values are:
  - 0: success
  - 1: too many iterations were required

Definition at line 168 of file BFGSOpt.h.

References CHECK_INVARIANT, CLEANUP, linearSearch(), and PRECONDITION.

## Variable Documentation

const double BFGSOpt::EPS =3e-8

Default gradient tolerance in the minimizer.

Definition at line 19 of file BFGSOpt.h.

const double BFGSOpt::FUNCTOL =1e-4

Default tolerance for function convergence in the minimizer.

Definition at line 16 of file BFGSOpt.h.

const int BFGSOpt::MAXITS =200

Default maximum number of iterations.

Definition at line 18 of file BFGSOpt.h.

const double BFGSOpt::MAXSTEP =100.0

Default maximim step size in the minimizer.

Definition at line 21 of file BFGSOpt.h.

const double BFGSOpt::MOVETOL =1e-7

Default tolerance for x changes in the minimizer.

Definition at line 17 of file BFGSOpt.h.

const double BFGSOpt::TOLX =4.*EPS

Default direction vector tolerance in the minimizer.

Definition at line 20 of file BFGSOpt.h.