Crossover Operators
Submodules
pygenalgo.operators.crossover.crossover_operator module
- class pygenalgo.operators.crossover.crossover_operator.CrossoverOperator(crossover_probability: float)[source]
Bases:
GeneticOperatorDescription:
Provides the base class (interface) for a Crossover Operator.
- crossover(parent1: Chromosome, parent2: Chromosome) tuple[Chromosome, Chromosome][source]
Abstract method that “reminds” the user that if they want to create a Crossover Class that inherits from here they should implement a crossover method.
- Parameters:
parent1 – (Chromosome).
parent2 – (Chromosome).
- Returns:
Nothing but raising an error.
pygenalgo.operators.crossover.meta_crossover module
- class pygenalgo.operators.crossover.meta_crossover.MetaCrossover(crossover_probability: float = 0.9)[source]
Bases:
CrossoverOperatorDescription:
Meta-crossover, crosses the chromosomes by applying randomly all other crossovers (one at a time), with equal probability.
- property all_counters: dict
Accessor (getter) of the application counter from all the internal crossovers. This is mostly to verify that everything is working as expected.
- Returns:
a dictionary with the counter calls for all crossover methods.
- crossover(parent1: Chromosome, parent2: Chromosome) tuple[Chromosome, Chromosome][source]
Perform the crossover operation on the two input parent chromosomes, by selecting randomly a predefined method.
- Parameters:
parent1 – (Chromosome).
parent2 – (Chromosome).
- Returns:
child1 and child2 (as Chromosomes).
pygenalgo.operators.crossover.multi_point_crossover module
- class pygenalgo.operators.crossover.multi_point_crossover.MultiPointCrossover(crossover_probability: float = 0.9, n_points: int = 2)[source]
Bases:
CrossoverOperatorDescription:
Multipoint crossover creates two children chromosomes (offsprings), by taking two parent chromosomes and cutting them at randomly chosen, sites (loci).
It produces faster mixing, compared with single-point crossover.
- crossover(parent1: Chromosome, parent2: Chromosome) tuple[Chromosome, Chromosome][source]
Perform the crossover operation on the two input parent chromosomes, using multiple cutting points (num_loci).
NOTE: the number of loci is held in the ‘_items’ variable.
- Parameters:
parent1 – (Chromosome).
parent2 – (Chromosome).
- Returns:
child1 and child2 (as Chromosomes).
pygenalgo.operators.crossover.order_crossover module
- class pygenalgo.operators.crossover.order_crossover.OrderCrossover(crossover_probability: float = 0.9)[source]
Bases:
CrossoverOperatorDescription:
Order crossover (OX1) creates two children chromosomes, by ensuring that the original genome (from both parents) isn’t repeated, thus creating invalid offsprings.
It is used predominantly in combinatorial problems.
- crossover(parent1: Chromosome, parent2: Chromosome) tuple[Chromosome, Chromosome][source]
Perform the crossover operation on the two input parent chromosomes.
- Parameters:
parent1 – (Chromosome).
parent2 – (Chromosome).
- Returns:
child1 and child2 (as Chromosomes).
pygenalgo.operators.crossover.partially_mapped_crossover module
- class pygenalgo.operators.crossover.partially_mapped_crossover.PartiallyMappedCrossover(crossover_probability: float = 0.9)[source]
Bases:
CrossoverOperatorDescription:
Partially Mapped Crossover (PMX) creates two children chromosomes, by ensuring that the original genome, from both parents, isn’t repeated, thus creating invalid offsprings.
It is used predominantly in combinatorial problems.
- crossover(parent1: Chromosome, parent2: Chromosome) tuple[Chromosome, Chromosome][source]
Perform the crossover operation on the two input parent chromosomes.
- Parameters:
parent1 – (Chromosome).
parent2 – (Chromosome).
- Returns:
child1 and child2 (as Chromosomes).
pygenalgo.operators.crossover.position_based_crossover module
- class pygenalgo.operators.crossover.position_based_crossover.PositionBasedCrossover(crossover_probability: float = 0.9)[source]
Bases:
CrossoverOperatorDescription:
Position based crossover (POS) creates two children chromosomes, by ensuring that the original genome (from both parents) isn’t repeated, thus creating invalid offsprings.
It is used predominantly in combinatorial problems.
- crossover(parent1: Chromosome, parent2: Chromosome) tuple[Chromosome, Chromosome][source]
Perform the crossover operation on the two input parent chromosomes.
- Parameters:
parent1 – (Chromosome).
parent2 – (Chromosome).
- Returns:
child1 and child2 (as Chromosomes).
pygenalgo.operators.crossover.single_point_crossover module
- class pygenalgo.operators.crossover.single_point_crossover.SinglePointCrossover(crossover_probability: float = 0.9)[source]
Bases:
CrossoverOperatorDescription:
Single-point crossover creates two children chromosomes (offsprings), by taking two parent chromosomes and cutting them at some, randomly chosen, site (locus).
It produces very slow mixing, compared with multipoint or uniform crossover.
- crossover(parent1: Chromosome, parent2: Chromosome) tuple[Chromosome, Chromosome][source]
Perform the crossover operation on the two input parent chromosomes.
- Parameters:
parent1 – (Chromosome).
parent2 – (Chromosome).
- Returns:
child1 and child2 (as Chromosomes).
pygenalgo.operators.crossover.uniform_crossover module
- class pygenalgo.operators.crossover.uniform_crossover.UniformCrossover(crossover_probability: float = 0.9)[source]
Bases:
CrossoverOperatorDescription:
Uniform crossover creates two children chromosomes (offsprings), by taking two parent chromosomes and swap their genes in every other location.
It produces fast mixing, compared with single-point crossover.
- crossover(parent1: Chromosome, parent2: Chromosome) tuple[Chromosome, Chromosome][source]
Perform the crossover operation on the two input parent chromosomes.
- Parameters:
parent1 – (Chromosome).
parent2 – (Chromosome).
- Returns:
child1 and child2 (as Chromosomes).
pygenalgo.operators.crossover.blend_crossover module
- class pygenalgo.operators.crossover.blend_crossover.BlendCrossover(crossover_probability: float = 0.9, p_alpha: float = 0.5, lower_val: float | None = None, upper_val: float | None = None)[source]
Bases:
CrossoverOperatorDescription:
Blend-a crossover (BLX-a) creates two children chromosomes (offsprings) by uniformly picking values that lie between two points that contain the two parents but may extend equally on either side determined by a user specified parameter ‘a’.
NB: Used only for real coded genomes.
- crossover(parent1: Chromosome, parent2: Chromosome) tuple[Chromosome, Chromosome][source]
Perform the crossover operation on the two input parent chromosomes.
- Parameters:
parent1 – (Chromosome).
parent2 – (Chromosome).
- Returns:
child1 and child2 (as Chromosomes).