A fork of ævo with added support for the MACE machine learning interatomic potential as a fitness evaluation model.
The original ævo uses Ewald summation (electrostatic energy) as the fitness function for evolutionary structure optimization. This fork adds a MACE model option, allowing the use of the MACE universal potential (mace-mp) to evaluate total energies — enabling structure optimization driven by a pre-trained machine learning potential instead of a purely electrostatic model.
examples/01-Li2NiMnO4/eval-fitness.py: Added--modelargument supporting"Ewald"(original) and"mace"(new). The MACE mode usesmace_mp(model="medium")via ASE.examples/01-Li2NiMnO4/run-aevo.sh: Added configurablemodelvariable passed toeval-fitness.py.
# Original Ewald mode (default)
./run-aevo.sh # with model="Ewald" in the script
# MACE mode
# Set model="mace" in run-aevo.sh, then:
./run-aevo.shOr call the fitness script directly:
./eval-fitness.py --model mace
./eval-fitness.py --model EwaldA Python package for the optimization of atomic configurations using an evolutionary algorithm.
ævo implements the differential evolution method [1] to search for the global ground state atomic ordering with respect to a fitness function. The package is not limited to a specific fitness function but instead calls an external user-provided script to evaluate the fitness of a given atomic configuration.
The ævo package makes use of the Python Materials Genomics (pymatgen) toolkit for the input and output of atomic structures. See the pymatgen website (http://pymatgen.org) for installation instructions.
Please cite the following references in all products/publications that made use of ævo:
[1] ævo reference: N. Artrith, A. Urban, and G. Ceder, J. Chem. Phys. 148 (2018) 241711. [2] Differential evolution method: R. Storn and K. Price, J. Global Optim. 11 (1997) 341-359. [3] pymatgen toolkit: S. P. Ong et al., Comput. Mater. Sci. 68 (2013) 314-319.
$ pip install . --user
Once installed, make sure that the command line tool aevolution.py is
available in the system path:
$ aevolution.py --help
Evolutionary optimization using ævo proceeds via the following steps:
- Generate initial trial atomic configurations
- Evaluate the fitness of all new trials in current population using a user-provided script
- Cross trials from current population to generate new trials, select current trials with good fitness with greater probability
- Introduce random mutations in the newly generated trials
- Select which trials will be kept in the population with a probability proportional to the fitness
- Continue with step 1.
See the examples subdirectory for usage examples.