X-Git-Url: https://git.dlugolecki.net.pl/?a=blobdiff_plain;f=src%2Ffitness%2Ffitness.h;fp=src%2Ffitness%2Ffitness.h;h=14b6487f18b8e83708e04c15286988a33ee974ab;hb=12625bb2d19ee89abacc2456bff57dc22aa3a526;hp=0000000000000000000000000000000000000000;hpb=1014b8296cc38f408212d385f036cc78e9c66cce;p=genetic.git diff --git a/src/fitness/fitness.h b/src/fitness/fitness.h new file mode 100644 index 0000000..14b6487 --- /dev/null +++ b/src/fitness/fitness.h @@ -0,0 +1,38 @@ +#ifndef __FITNESS_FITNESS_H +#define __FITNESS_FITNESS_H + +#include "../chromosome.h" + +namespace genetic { + /** + * Base Fitness template class. It should be a base class for any custom + * fitness functions. + */ + template < typename _Chromosome, typename _Value = double > + class Fitness { + template friend class Selection ; + public: + typedef typename _Chromosome::GeneType GeneType; + typedef _Value ValueType; + protected: + _Chromosome chromosome; + + /* + * Some calculations here... + */ + virtual _Value do_calculate() = 0; + + public: + Fitness() {} + + Fitness(_Chromosome& _chromosome) + : chromosome(_chromosome.get()) { + } + + _Value calculate() { + return this->do_calculate(); + } + }; +} + +#endif /* __FITNESS_FITNESS_H */