File Bofill.h¶
- Copyright
This code is licensed under the 3-clause BSD license.
Copyright ETH Zurich, Laboratory for Physical Chemistry, Reiher Group.
See LICENSE.txt for details.
-
namespace
Scine
This header file contains functions that allow for common notation for common things that can be done at a different degree of derivatives.
This header contains alias definitions defining which classes to use for the different degrees of derivatives.
-
namespace
Utils
-
class
Bofill
: public Scine::Utils::Optimizer - #include <Bofill.h>
An implementation of the Bofill optimization algorithm for saddlepoints.
Minimizes along all coordinates except one, along which it maximizes.
Implemented, as described in: Phys. Chem. Chem. Phys., 2002, 4, 11–15 The original paper by Bofill is the following: J. Comput. Chem., 1994, 15, 1
Public Functions
-
Bofill
() 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 Bofill’s options.
- Parameters
collection
: The DescriptorCollection to which new fields shall be added.
Public Members
-
double
trustRadius
= 0.1 The maximum RMS of a taken step.
-
std::unique_ptr<Eigen::VectorXd>
eigenvector
The (optional) eigenvector for the first step.
Public Static Attributes
-
constexpr const char *
bofillTrustRadius
= "bofill_trust_radius"¶
-
-
class
-
namespace