Class Scine::Utils::Bfgs¶
-
class
Bfgs: public Scine::Utils::Optimizer¶ An implementation of the BFGS optimization algorithm.
The implementation includes an optional GDIIS.
Public Functions
-
Bfgs()¶ Default constructor.
-
template<class
UpdateFunction>
intoptimize(Eigen::VectorXd ¶meters, UpdateFunction &&function, GradientBasedCheck &check)¶ The main routine of the optimizer that carries out the actual optimization.
- Return
int Returns the number of optimization cycles carried out until the conclusion of the optimization function.
- Template Parameters
UpdateFunction: A lambda function with a void return value, and the arguments:const Eigen::VectorXd& parameters
double& value
Eigen::VectorXd& gradients
- Parameters
parameters: The parameters to be optimized.function: The function to be evaluated in order to get values and gradients for a given set of parameters.check: The ConvergenceCheck to be used in order to determine when the optimization is finished or should stop for other reasons.
-
virtual void
addSettingsDescriptors(UniversalSettings::DescriptorCollection &collection) const¶ Adds all relevant options to the given UniversalSettings::DescriptorCollection thus expanding it to include the BFGS’s options.
- Parameters
collection: The DescriptorCollection to which new fields shall be added.
Public Members
-
bool
useTrustRadius= false¶ Enable the use of a trust radius for all steps.
-
double
trustRadius= 0.1¶ The maximum size (RMS) of a taken step.
-
bool
useGdiis= true¶ Switch to enable the use of a GDIIS possibly accelerating convergence.
-
int
gdiisMaxStore= 5¶ The maximum number of old steps used in the GDIIS.
-
Eigen::MatrixXd
invH¶ The inverse Hessian.
-
std::unique_ptr<std::function<void(Eigen::MatrixXd&)>>
projection= nullptr¶ A possible Hessian projection.
-