# -------------------------------------------------------------
# Calculator
# -------------------------------------------------------------

potential_set = Pedone_2006Fe2()
calculator = TremoloXCalculator(parameters=potential_set)

# -------------------------------------------------------------
# Elements
# -------------------------------------------------------------

elements = [Titanium]*8 + [Oxygen]*16

# -------------------------------------------------------------
# Initial Population
# -------------------------------------------------------------
population_size=10

initial_population = generateInitialPopulation(
    elements=elements,
    population_size=population_size,
    calculator=calculator,
    volume=206.29*Angstrom**3,
    max_forces=0.01*eV/Angstrom,
    max_stress=0.1*GPa,
    max_steps=1000,
    max_step_length=0.2*Angstrom,
    external_pressure=0.0*GPa,
    log_filename_prefix="initial_population_",
)

# -------------------------------------------------------------
# Crystal Structure Prediction
# -------------------------------------------------------------

global_optimization = CrystalStructurePrediction(
    initial_population,
    number_of_generations=16,
    heredity_probability=0.85,
    mutation_probability=0.1,
    permutation_probability=0.05,
    number_to_promote=2,
    number_of_elites=int(0.6*population_size),
    selection_pressure=3.0,
    max_forces=0.005 * eV/Angstrom,
)
