pele Python energy landscape explorer
pele::MODIFIED_FIRE Class Reference

#include <modified_fire.h>

Inheritance diagram for pele::MODIFIED_FIRE:

List of all members.

## Public Member Functions

MODIFIED_FIRE (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)
virtual ~MODIFIED_FIRE ()
void one_iteration ()
void reset (Array< double > &x0)

## Detailed Description

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.

Definition at line 44 of file modified_fire.h.

## Constructor & Destructor Documentation

 pele::MODIFIED_FIRE::MODIFIED_FIRE ( 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 )

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.

Definition at line 42 of file modified_fire.cpp.

 virtual pele::MODIFIED_FIRE::~MODIFIED_FIRE ( )  [inline, virtual]

Destructorgit undo rebase

Definition at line 64 of file modified_fire.h.

## Member Function Documentation

 void pele::MODIFIED_FIRE::initialize_func_gradient ( )  [virtual]

Definition at line 61 of file modified_fire.cpp.

 void pele::MODIFIED_FIRE::one_iteration ( )  [inline, virtual]

Do one iteration iteration of the optimization algorithm

Definition at line 153 of file modified_fire.h.

 void pele::MODIFIED_FIRE::reset ( Array< double > & x0 )  [inline, virtual]

 void pele::MODIFIED_FIRE::set_func_gradient ( double f, Array< double > grad )  [virtual]