3 #include <geneial/namespaces.h>
4 #include <geneial/core/population/chromosome/BaseChromosome.h>
5 #include <geneial/core/fitness/Fitness.h>
7 #include <boost/version.hpp>
11 geneial_private_namespace(geneial)
13 geneial_private_namespace(population)
15 geneial_private_namespace(chromosome)
18 geneial_export_namespace
20 template<
typename FITNESS_TYPE>
21 const Fitness<FITNESS_TYPE>& BaseChromosome<FITNESS_TYPE>::getFitness()
const
28 if (_fitnessEvaluator && !hasFitness())
31 assert(_fitnessEvaluator);
33 _fitness = (std::move(_fitnessEvaluator->evaluate(*
this)));
41 template<
typename FITNESS_TYPE>
42 bool BaseChromosome<FITNESS_TYPE>::hashEquals(
const BaseChromosome<FITNESS_TYPE> &chromosome)
const
44 const typename BaseChromosome<FITNESS_TYPE>::chromsome_hash hashA = chromosome.getHash();
45 const typename BaseChromosome<FITNESS_TYPE>::chromsome_hash hashB = this->getHash();
47 if (memcmp((
void*) &hashA, (
void*) &hashB,
sizeof(hashA)) == 0)
57 template<
typename FITNESS_TYPE>
58 void BaseChromosome<FITNESS_TYPE>::printHash(std::ostream& os)
const
60 os << this->getHash();
63 template<
typename FITNESS_TYPE>
64 void BaseChromosome<FITNESS_TYPE>::setFitness(
typename std::unique_ptr<Fitness<FITNESS_TYPE>> fit)
66 _fitness = std::move(fit);
69 template<
typename FITNESS_TYPE>
70 const typename FitnessEvaluator<FITNESS_TYPE>::ptr BaseChromosome<FITNESS_TYPE>::getFitnessEvaluator()
const
72 return _fitnessEvaluator;
75 template<
typename FITNESS_TYPE>
76 void BaseChromosome<FITNESS_TYPE>::invalidateFitness()
81 template<
typename FITNESS_TYPE>
82 void BaseChromosome<FITNESS_TYPE>::setFitnessEvaluator(
83 const typename FitnessEvaluator<FITNESS_TYPE>::ptr& fitnessEvaluator)
85 _fitnessEvaluator = fitnessEvaluator;
88 template<
typename FITNESS_TYPE>
89 unsigned int BaseChromosome<FITNESS_TYPE>::doAge()
94 template<
typename FITNESS_TYPE>
95 void BaseChromosome<FITNESS_TYPE>::setAge(
unsigned int age)
100 template<
typename FITNESS_TYPE>
101 unsigned int BaseChromosome<FITNESS_TYPE>::getAge()
const