3 #include <geneial/namespaces.h>
4 #include <geneial/core/population/chromosome/BaseChromosome.h>
5 #include <geneial/core/population/Population.h>
6 #include <geneial/utility/mixins/Buildable.h>
10 geneial_private_namespace(geneial)
12 geneial_private_namespace(operation)
14 geneial_private_namespace(crossover)
16 using ::geneial::population::Population;
17 using ::geneial::utility::Buildable;
19 geneial_export_namespace
22 template<
typename FITNESS_TYPE>
23 class BaseCrossoverOperation :
public Buildable<BaseCrossoverOperation<FITNESS_TYPE>>
28 BaseCrossoverOperation()
34 using crossover_result_set =
typename Population<FITNESS_TYPE>::chromosome_container ;
36 virtual ~BaseCrossoverOperation()
40 virtual crossover_result_set
41 doCrossover(
const typename BaseChromosome<FITNESS_TYPE>::const_ptr &mommy,
const typename BaseChromosome<FITNESS_TYPE>::const_ptr &daddy)
const = 0;
45 virtual bool isSymmetric()
const = 0;
47 class Builder :
public Buildable<BaseCrossoverOperation<FITNESS_TYPE>>::Builder