Class Scine::Utils::Gdiis

class Gdiis

An implementation of the GDIIS optimization acceleration algorithm.

Public Functions

Gdiis(const Eigen::MatrixXd &hessianInverse, unsigned int maxm)

Construct a new GDIIS.

Parameters
  • hessianInverse: A reference to the Hessian inverse to be used for the generation of an actual step. The content of the reference can continuosly be updated using e.g. the BFGS scheme or it can also just remain the identity.

  • maxm: The maximum number of old steps to be stored and to be extrapolated from. Upon reaching the maximum number of points, the oldest one will be replaced with the newly given one.

void store(Eigen::VectorXd &parameters, Eigen::VectorXd &gradients)

Store data into the GDIIS without extrapolation.

Parameters
  • parameters: The current parameters.

  • gradients: The current gradients (for the current parameters).

void flush()

Resets the storage of the GDIIS.

Eigen::VectorXd update(Eigen::VectorXd &parameters, Eigen::VectorXd &gradients)

Stores the new data and extrapolates to optimum parameters using all stored data.

Return

Eigen::VectorXd The extrapolated best parameters.

Parameters
  • parameters: The current parameters.

  • gradients: The current gradients (for the current parameters).