Basin Hopping#
Basin hopping is a Monte Carlo method in which the energy of each configuration is taken to be the energy of a local minimum [BH_WD97].
At each basin hopping step the client will print out:
the current energy (
current
),the trial energy (
trial
),the lowest energy found (
global min
),the number of force calls needed to minimize the structure (
fc
),the acceptance ratio (
ar
),and the current max displacement (
md
).
Notes#
eON
defaults to letting displacements occur from minimized structures as per the method of White and Mayne [BH_WM98], which is controlled bysiginificant_structure
The occasional jumping variant of Iwamatsu and Okabe [BH_IO04] is also implemented, and is controlled by
jump_max
.
Configuration#
[Basin Hopping]
Changed in version 2.1_TBA: In TOML, this will be [Basin_Hopping]
- pydantic model eon.schema.BasinHoppingConfig[source]#
Show JSON schema
{ "title": "BasinHoppingConfig", "type": "object", "properties": { "steps": { "default": 10000, "description": "Number of steps to take at the assigned temperature.", "title": "Steps", "type": "integer" }, "displacement": { "default": 0.5, "description": "Displacement in each degree of freedom.", "title": "Displacement", "type": "number" }, "write_unique": { "default": false, "description": "If true, the client will write out all the unique geometries and their energies", "title": "Write Unique", "type": "boolean" }, "initial_state_pool_size": { "default": 1, "description": "Number of lowest energy states in the pool from which the initial structures are drawn.", "title": "Initial State Pool Size", "type": "integer" }, "initial_random_structure_probability": { "default": 0.0, "description": "Probability that the initial structure is generated randomly.", "title": "Initial Random Structure Probability", "type": "number" }, "push_apart_distance": { "default": 0.4, "description": "Push atoms apart until no atoms are closer than this distance.", "title": "Push Apart Distance", "type": "number" }, "adjust_displacement": { "default": true, "description": "Flag to automatically adjust the displacement to meet the target acceptance ratio.", "title": "Adjust Displacement", "type": "boolean" }, "adjust_fraction": { "default": 0.05, "description": "Fraction by which to change the step size in order to meet the target acceptance ratio.", "title": "Adjust Fraction", "type": "number" }, "adjust_period": { "default": 10, "description": "Number of Monte Carlo steps between adjustments of the step size.", "title": "Adjust Period", "type": "integer" }, "target_ratio": { "default": 0.5, "description": "Target acceptance ratio used to determine whether to increase or decrease the step size.", "title": "Target Ratio", "type": "number" }, "displacement_distribution": { "default": "gaussian", "description": "Distribution used for the displacement of each atom.", "enum": [ "gaussian", "uniform" ], "title": "Displacement Distribution", "type": "string" }, "swap_probability": { "default": 0.0, "description": "Probability (in range [0,1]) that a swapping step takes place instead of a displacement step.", "title": "Swap Probability", "type": "number" }, "single_atom_displace": { "default": false, "description": "Displace only one atom per step.", "title": "Single Atom Displace", "type": "boolean" }, "jump_max": { "default": 0, "description": "Number of consecutive rejected steps after which jump steps should be taken.", "title": "Jump Max", "type": "integer" }, "significant_structure": { "default": true, "description": "Displace from minimized structures.", "title": "Significant Structure", "type": "boolean" }, "jump_steps": { "default": 0, "description": "Number of jump steps to take after jump_max consecutive rejections.", "title": "Jump Steps", "type": "integer" } } }
- Config:
use_attribute_docstrings: bool = True
- Fields:
- field adjust_displacement: bool = True#
Flag to automatically adjust the displacement to meet the target acceptance ratio.
- field adjust_fraction: float = 0.05#
Fraction by which to change the step size in order to meet the target acceptance ratio.
- field displacement_distribution: Literal['gaussian', 'uniform'] = 'gaussian'#
eon.schema.BasinHoppingConfig.displacement
for the gaussian will serve as the standard deviation of the normal distribution used to select displacements.uniform will select a random number between the positive and negative values of
eon.schema.BasinHoppingConfig.displacement
.Distribution used for the displacement of each atom.
- field initial_random_structure_probability: float = 0.0#
Probability that the initial structure is generated randomly.
- field initial_state_pool_size: int = 1#
A value of 1 ensures simulation always starts from the lowest energy found so far.
Number of lowest energy states in the pool from which the initial structures are drawn.
- field jump_max: int = 0#
This provides a more global search when the structure is stuck in a certain basin. The number of jump steps is assigned in
eon.schema.BasinHoppingConfig.jump_steps
. See Iwamatsu and Okabe [BH_IO04] for more details.Number of consecutive rejected steps after which jump steps should be taken.
- field push_apart_distance: float = 0.4#
This criterion is enforced for both the initial structure and all those generated by random displacement.
Push atoms apart until no atoms are closer than this distance.
- field significant_structure: bool = True#
Implements the method of White and Mayne [BH_WM98].
Displace from minimized structures.
- field swap_probability: float = 0.0#
The swap step selects two atoms of different elements and swaps their position.
Probability (in range [0,1]) that a swapping step takes place instead of a displacement step.
- field target_ratio: float = 0.5#
Target acceptance ratio used to determine whether to increase or decrease the step size.
- field write_unique: bool = False#
The files are named
min_xxxxx.con
andenergy_xxxxx.con
, where ‘xxxxx’ corresponds to the Monte Carlo step where the structure was first seen. For clusters it is important to seteon.schema.StructureComparisonConfig.check_rotation
.If true, the client will write out all the unique geometries and their energies
References#
Masao Iwamatsu and Yutaka Okabe. Basin hopping with occasional jumping. Chemical Physics Letters, 399(4):396–400, December 2004. doi:10.1016/j.cplett.2004.10.032.
David J. Wales and Jonathan P. K. Doye. Global Optimization by Basin-Hopping and the Lowest Energy Structures of Lennard-Jones Clusters Containing up to 110 Atoms. The Journal of Physical Chemistry A, 101(28):5111–5116, July 1997. doi:10.1021/jp970984n.
Ronald P White and Howard R Mayne. An investigation of two approaches to basin hopping minimization for atomic and molecular clusters. Chemical Physics Letters, 289(5-6):463–468, June 1998. doi:10.1016/S0009-2614(98)00431-X.