Algorithms
Genetic Engine suports a list of different algorithms:
Genetic Programming
Genetic Programming is supported via two interfaces. SimpleGP
allows you defined all paramaters without creating objects or importing functions.
It is easier to use, if you are looking for a standard GP implementation.
However, if you are looking to implement your own algorithm, or variation of GP, the GP
class is the most suitable.
Note that the step
parameter allows the user to build their own evolutionary algorithm. See the list of available genetic operators.
Hill Climbing
- class geneticengine.algorithms.hill_climbing.HC(problem, budget, representation, random=None, tracker=None, number_of_mutations=5)
Hill Climbing performs a local search within a neighbourhood.
- Parameters:
problem (geneticengine.problems.Problem)
representation (geneticengine.representations.api.Representation)
tracker (geneticengine.evaluation.tracker.ProgressTracker | None)
number_of_mutations (int)
Random Mutations
1+1 Evolutionary Algorithm
- class geneticengine.algorithms.one_plus_one.OnePlusOne(problem, budget, representation, random=None, tracker=None)
The (1 + 1) Evolutionary Algorithm.
- Parameters:
problem (geneticengine.problems.Problem)
representation (geneticengine.representations.api.Representation)
tracker (geneticengine.evaluation.tracker.ProgressTracker | None)
MultiPopulation Genetic Programming
This is a version of Genetic Programming, which has multiple populations that work independently, even with their own Problem instances.
There is a new, optional migration step (and migration_size), that selects individuals from other populations, to allow some transference of individuals from one population to the other.