X-Git-Url: https://git.dlugolecki.net.pl/?a=blobdiff_plain;f=src%2Ffitness%2Ffitness.h;h=a9750341f32271db145a514c42b5d8691a3ae931;hb=5e4a04634f1d31d4c774b44184cf08d3faf4d02a;hp=14b6487f18b8e83708e04c15286988a33ee974ab;hpb=12625bb2d19ee89abacc2456bff57dc22aa3a526;p=genetic.git diff --git a/src/fitness/fitness.h b/src/fitness/fitness.h index 14b6487..a975034 100644 --- a/src/fitness/fitness.h +++ b/src/fitness/fitness.h @@ -1,7 +1,10 @@ #ifndef __FITNESS_FITNESS_H #define __FITNESS_FITNESS_H -#include "../chromosome.h" +#include +#include + +#include "chromosome.h" namespace genetic { /** @@ -10,28 +13,67 @@ namespace genetic { */ template < typename _Chromosome, typename _Value = double > class Fitness { - template friend class Selection ; + template friend class Selection; public: + /** + * Type representing Chromosome Gene + */ typedef typename _Chromosome::GeneType GeneType; + + /** + * Value type returned by the Fitness function + */ typedef _Value ValueType; protected: + /** + * Chromosome on which calculations are made + */ _Chromosome chromosome; - /* - * Some calculations here... + /** + * Calculations should be done here... + * + * @return Fitness value of the current Chromosome */ virtual _Value do_calculate() = 0; public: + /** + * Class constructor + */ Fitness() {} + /** + * Copy constructor + */ Fitness(_Chromosome& _chromosome) - : chromosome(_chromosome.get()) { + : chromosome(_chromosome) { } + /** + * Invokes calculations + * + * @return Fitness value of the current Chromosome + */ _Value calculate() { return this->do_calculate(); } + + /** + * Method used to pass additional arguments needed by the function to + * run correctly. + */ + virtual void parseArguments(std::map) { } + + /** + * Method used to get additional arguments needed by the function to + * run correctly + * + * @return map containing additional arguments, empty if do not use any + */ + virtual std::map getArguments() { + return std::map(); + } }; }