XtalOpt is a free and truly open source multi-objective evolutionary algorithm designed for a priori prediction of functional materials with a fixed or variable composition.

Detailed user guide for the latest version of XtalOpt and the description of the implemented methodology:

User Guide Methodology

Quick overview of the XtalOpt code features:

Graphical User Interface Multi-Objective Search Evolutionary Operations



Graphical User Interface


Structure Limits

xtalopt-init.png

The "Structure Limits" tab

  • This tab is where the user defines the reference chemical system, search type, and parameters of the each cell generated during the search.
  • The user can specify a list of chemical formulas for the first generation of structures (e.g., Ti1O2, Ti2O3).
  • Also, the search type can be chosen from fixed, multi, or variable composition.
  • A range can be set for the length of each cell vector (a, b, and c) and the corresponding angles (α, β, and γ).
  • The combination of the cell vector lengths determines the cell volume, but the user can set a limited range for the volume per atom, limits for elemental volumes, or factors of estimated covalent volume.
  • Limiting the interatomic distances ensures the program is not generating nonsensical structures.
  • RandSpg or molecular unit builder can be used to generate the first population of structures.

Optimization Settings


  • Choose from several queueing systems and optimizer combinations.
  • Queue systems supported include: SLURM, PBS, LSF, etc.
  • Optimizers include: VASP, GULP, CASTEP, etc.
xtalopt-opt.png

The "Optimization Settings" tab

Search Settings

xtalopt-search.png

The "Search Settings" tab


  • "Search Settings" is where the user can alter how the search will proceed.
  • The number of randomly generated initial structures and number of concurrently running structures are controlled in this tab.
  • The termination criteria of final number of structures can be set here, as well.
  • Users can adjust the relative chance of occurrence of each operator type.
  • Furthermore, the individual parameters of each operator can be fine tuned (number of exchanges in a "permustrain" or minimum contribution from a parent during a "crossover").
  • Similarity check schemes and their parameters are also found here.

Multiobjective Search


  • To utilize the multi-objective search functionality of XtalOpt, the user can add desired "objectives", i.e., any property that can be calculated for a structure, for simultaneous optimization with total enthalpy.
  • The "Multiobjective Search" tab allows the user to specify for each objective:
    • the objective type,
    • corresponding weight,
    • path to the (potentially) external code or script that calculates that objective,
    • the output file name of the external code for reading the corresponding calculated value.
  • In this tab, the user can also choose the global optimization type from "Basic" or "Pareto", and fine-tune relevant parameters.
xtalopt-moes.png

The "Multiobjective Search" tab

Progress

xtalopt-prog.png

The "Progress" tab

Plot

xtalopt-plot-opt.png

The "Plot" tab showing optimized (blue) structures

xtalopt-plot-opt+dup.png

The "Plot" tab showing optimized structures (blue triangles) and those marked as similar (green squares).



Multi-Objective Search


User-specified objectives

Basic generalized fitness function

Pareto optimization



Evolutionary Operations



Elementary Mutator: Exchange

  • Exchange is the simplest mutator that exchanges two atoms of different types in a cell.

xtalopt-exchange.png

Elementary Mutator: Strain
  • The strain mutator allows XtalOpt to mutate the unit cell parameters, but not the fractional positions of the atoms. One can multiply the cell row vectors by the symmetric voight matrix, as shown below,
  • \( \vec{\textrm{v}}_{\textrm{new}} = \vec{\textrm{v}} \begin{bmatrix} 1+\varepsilon_{11} & \frac{\varepsilon_{12}}{2} & \frac{\varepsilon_{13}}{2} \\ \frac{\varepsilon_{12}}{2} & 1+\varepsilon_{22} & \frac{\varepsilon_{32}}{2} \\ \frac{\varepsilon_{13}}{2} & \frac{\varepsilon_{23}}{2} & 1+\varepsilon_{33} \end{bmatrix} \)

    where \(\varepsilon_{i,j}\) is a random selected value, taken from a zero-centered normal distribution.


xtalopt-strain.png

Elementary Mutator: Ripple

  • The ripple mutator acts as a periodic displacement of the atomic coordinates in a cell. A random axis is chosen (e.g., the \(z\) axis) and the atoms along this axis are shifted by an amount, \(\Delta z\), where the new coordinate along that axis will be \( z_\mathrm{new} = z + \Delta z \).
    The displacement along the axis chosen is dependent on atomic placement in the orthogonal plane (\(x\) and \(y\) axes for this example) following the formula:

    \( \Delta z = \rho\cos(2\pi\mu x+\theta_{x})\cos(2\pi\eta y+\theta_{y}), \) \(~~~~~\mu\in\mathbb{Z},~\eta\in\mathbb{Z} \)

    In this equation:
    • \(\rho\) is the maximum displacement of an atom along the axis.
    • \(\mu\) and \(\eta\) determines the number of cosine waves in the orthogonal directions.
    • \(\theta_{x}\) and \(\theta_{y}\) are randomly chosen values between \(0\) and \(2 \pi\) that specify the strength of the ripple in various areas of the cell.

xtalopt-ripple.png

Permustrain



Stripple



Permutomic

xtalopt-permutomic.png

Permucomp

xtalopt-permucomp.png

Crossover


xtalopt-crossover.png


Secondary Mutator: Random Supercell Expansion

  • Random supercell expansion is a "pseudo"-genetic operation: it can be applied to the outcome of the above genetic operations, according to a user-specified probability.
  • Considering the total number of atoms in the starting cell and the maximum number of atoms specified by the user, three random expansion factors are determined and applied to obtain a supercell.
  • In the produced supercell, an atom is chosen and displaced randomly, subject to the minimum inter-atomic distance constrains.

xtalopt-supercell.png
Back to Top ⇧