1 #ifndef GRAIL_CROSSOVER_H
2 #define GRAIL_CROSSOVER_H
14 enum class CrossoverSelectionType
26 Crossover(
double crossoverIndividualRate = 0.45, CrossoverSelectionType selectionType = CrossoverSelectionType::PSEUDO_ROULETTE,
27 double pseudoRouletteRandomPortion = 0.3,
double crossoverPhaseRate = 1.0, std::mt19937_64::result_type seed = std::random_device{}());
30 void perform(
const std::vector<std::unique_ptr<EvoScript>>& inputPopulation);
33 std::vector<std::unique_ptr<EvoScript>> populationAfter{};
48 virtual void crossoverFunctionOnePoint(
EvoScript& individual1,
EvoScript& individual2);
49 virtual void crossoverFunctionMultiPoint(
EvoScript& individual1,
EvoScript& individual2,
size_t length);
53 std::mt19937_64 randGen;
56 void performRandomCrossover(
const std::vector<std::unique_ptr<EvoScript>>& inputPopulation);
57 void performRouletteCrossover(
const std::vector<std::unique_ptr<EvoScript>>& inputPopulation);
58 void performTopCrossover(
const std::vector<std::unique_ptr<EvoScript>>& inputPopulation);
59 void performPseudoRouletteCrossover(
const std::vector<std::unique_ptr<EvoScript>>& inputPopulation);
60 void performConsecutivePairsCrossover(
const std::vector<std::unique_ptr<EvoScript>>& inputPopulation);
Definition: EvoScript.hh:13
Definition: Crossover.hh:24
CrossoverSelectionType SelectionType
Definition: Crossover.hh:39
double PseudoRouletteRandomPortion
Definition: Crossover.hh:42
double CrossoverIndividualRate
Definition: Crossover.hh:36
double CrossoverPhaseRate
Definition: Crossover.hh:45