Evolutionary Algorithm
- class EvolutionaryAlgorithm(initial_population, fitness_calculator, mutator, crosser, generation_selector, mutation_selector, crossover_selector, fitness_normalizer=<stk.ea.fitness_normalizers.null.NullFitnessNormalizer object>, key_maker=Inchi(), num_processes=None)[source]
Bases:
object
An abstract base class for evolutionary algorithms.
Notes
You might notice that the public methods of this abstract base class are implemented. This is purely for convenience, so that there is a default evolutionary algorithm implementation that users can use. However, feel free to override the default implementation when implementing subclasses.
If you do want to use the default implementation, here is a summary of the roles of the different components:
Examples
Subclass Implementation
The source code of this class can work as a good example. There is only one method that a subclass of
EvolutionaryAlgorithm
needs to implement,get_generations()
, which yieldsGeneration
instances. These correspond to the generations of your evolutionary algorithm implementation.Usage
There are a couple of tutorials on how to use the
EvolutionaryAlgorithm
, which can be found in the sidebar.Methods
get_generations
(num_generations)Yield the generations of the evolutionary algorithm.
- __init__(initial_population, fitness_calculator, mutator, crosser, generation_selector, mutation_selector, crossover_selector, fitness_normalizer=<stk.ea.fitness_normalizers.null.NullFitnessNormalizer object>, key_maker=Inchi(), num_processes=None)[source]
Initialize a
EvolutionaryAlgorithm
instance.- Parameters:
initial_population (
tuple
ofMoleculeRecord
) – The initial population the EA should use.fitness_calculator (
FitnessCalculator
) – Calculates fitness values.mutator (
MoleculeMutator
) – Carries out mutation operations.crosser (
MoleculeCrosser
) – Carries out crossover operations.generation_selector (
Selector
) – Selects the next generation.mutation_selector (
Selector
) – Selects molecules for mutation.crossover_selector (
Selector
) – Selects molecules for crossover.fitness_normalizer (
FitnessNormalizer
) – Normalizes fitness values.key_maker (
MoleculeKeyMaker
, optional) – Used to detect duplicate molecules in the EA. If two molecules in a generation return the same key, one of them is removed.num_processes (
int
, optional) – The number of parallel processes the EA should create. IfNone
, all available cores will be used.
- get_generations(num_generations)[source]
Yield the generations of the evolutionary algorithm.
- Parameters:
num_generations (
int
) – The number of generations which should be yielded. Note that the initial population counts as a generation.- Yields:
Generation
– A generation.