pele.optimize.Fire

class pele.optimize.Fire(coords, potential, restart=None, logfile='-', trajectory=None, dt=0.1, maxstep=0.5, dtmax=1.0, Nmin=5, finc=1.1, fdec=0.5, astart=0.1, fa=0.99, a=0.1, iprint=-1, alternate_stop_criterion=None, events=None, logger=None)[source]

The FIRE optimization algorithm

Parameters :

coords : array

the starting configuration for the optimization.

potential :

the potential object

dt : float

adaptive time step for integration of the equations of motion

maxstep : float

the maximum step size permitted

dtmax : float

the maximum time step permitted

Nmin : int

minimum number of steps taken after an uphill step before adaptive parameters are allowed to change

finc : float

factor by which the time step is increased if moving downhill and at least Nmin steps from the last uphill step

fdec : float

factor by which the time step is decreased if an uphill step has been taken

astart : float

initial value of a and value taken after an uphill step.

fa : float

factor by which parameter a decreases if moving downhill and at least Nmin steps from the last uphill step

a : float

adaptive parameter that controls the velocity used to evolve the system.

iprint : int

how often to print status information

alternative_stop_criterion : callable

this criterion will be used rather than rms gradient to determine when to stop the iteration. must return a boolean and accept the following keywords:

  1. energy
  2. gradient
  3. tol

events : list of callables

these are called after each iteration. Events can also be added using Fire.attachEvent(). Each event must accept keywords:

  1. coords
  2. energy
  3. rms

See also

LBFGS, MYLBFGS

Notes

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.

Methods

converged([forces]) Did the optimization converge?
initialize()
run([fmax, steps]) Run structure optimization algorithm.
step(f)

Previous topic

pele.optimize.lbfgs_scipy

Next topic

pele.optimize.Fire.converged