pele
Python energy landscape explorer
 All Classes Namespaces Functions Variables Typedefs
Public Member Functions
pele::MODIFIED_FIRE Class Reference

#include <modified_fire.h>

Inheritance diagram for pele::MODIFIED_FIRE:
pele::GradientOptimizer pele::Optimizer

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 initialize_func_gradient ()
void set_func_gradient (double f, Array< double > grad)
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

Overload initialize_func_gradient from parent class

Reimplemented from pele::GradientOptimizer.

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

Implements pele::GradientOptimizer.

Definition at line 153 of file modified_fire.h.

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

Reimplemented from pele::GradientOptimizer.

Definition at line 84 of file modified_fire.h.

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

Set the initial func and gradient. This can be used to avoid one potential call

Reimplemented from pele::GradientOptimizer.

Definition at line 75 of file modified_fire.cpp.


The documentation for this class was generated from the following files:
 All Classes Namespaces Functions Variables Typedefs