Class MODIFIED_FIRE#
Defined in File modified_fire.hpp
Inheritance Relationships#
Base Type#
public pele::ODEBasedOptimizer(Class ODEBasedOptimizer)
Class Documentation#
-
class MODIFIED_FIRE : public pele::ODEBasedOptimizer#
An implementation of the modified FIRE optimization algorithm in c++.
The Fast Inertial Relaxation Engine is an optimization algorithm based on molecular dynamics with modifications to the velocity and adaptive time steps. The method is based on a blind skier searching for the bottom of a valley and is described and tested here:
Erik Bitzek, Pekka Koskinen, Franz Gaehler, Michael Moseler, and Peter Gumbsch. Phys. Rev. Lett. 97, 170201 (2006) http://link.aps.org/doi/10.1103/PhysRevLett.97.170201
This implementation of the algorithm differs significantly from the original algorithm in the order in which the steps are taken. Here we do the following:
-> initialise the velocities and gradients for some given coordinates -> set the velocity to the fire inertial velocity
Only then we use the MD integrator that here does things in this order:
-> compute the velocity difference and add it to the current velocity -> compute the new position given this velocity -> recompute gradient and energy
Once the integrator is done we continue following FIRE and compute
P = -g * f
here comes the other modification to the algorithm: if stepback is set to false then proceed just as the original FIRE algorithm prescribes, if stepback is set to true (default) then whenever P<=0 we undo the last step besides carrying out the operations defined by the original FIRE algorithm.
Public Functions
- std::shared_ptr<pele::BasePotential> potential,
- pele::Array<double> &x0,
- double dtstart,
- double dtmax,
- double maxstep,
- size_t Nmin = 5,
- double finc = 1.1,
- double fdec = 0.5,
- double fa = 0.99,
- double astart = 0.1,
- double tol = 1e-4,
- bool stepback = true,
- bool save_trajectory = false,
- int iterations_before_save = 1,
- StopCriterionType stop_criterion_type = StopCriterionType::GRADIENT
Constructor.
An implementation of the modified FIRE optimization algorithm in c++.
The Fast Inertial Relaxation Engine is an optimization algorithm based on molecular dynamics with modifications to the velocity and adaptive time steps. The method is based on a blind skier searching for the bottom of a valley and is described and tested here:
Erik Bitzek, Pekka Koskinen, Franz Gaehler, Michael Moseler, and Peter Gumbsch. Phys. Rev. Lett. 97, 170201 (2006) http://link.aps.org/doi/10.1103/PhysRevLett.97.170201
This implementation of the algorithm differs significantly from the original algorithm in the order in which the steps are taken. Here we do the following:
-> initialise the velocities and gradients for some given coordinates -> set the velocity to the fire inertial velocity
Only then we use the MD integrator that here does things in this order:
-> compute the velocity difference and add it to the current velocity -> compute the new position given this velocity -> recompute gradient and energy
Once the integrator is done we continue following FIRE and compute
P = -g * f
here comes the other modification to the algorithm: if stepback is set to false then proceed just as the original FIRE algorithm prescribes, if stepback is set to true (default) then whenever P<=0 we undo the last step besides carrying out the operations defined by the original FIRE algorithm.
-
inline virtual ~MODIFIED_FIRE()#
Destructor.
-
inline virtual void one_iteration()#
Do one iteration iteration of the optimization algorithm.
-
virtual void initialize_func_gradient()#
Overload initialize_func_gradient from parent class.