1 #ifndef __SELECTION_SELECTION_H
2 #define __SELECTION_SELECTION_H
4 #include "chromosome.h"
5 #include "generation.h"
6 #include "../fitness/fitness.h"
11 // namespace selection {
12 template < typename _Chromosome >
15 typedef Fitness<_Chromosome> GeneticFitness;
16 typedef typename GeneticFitness::ValueType FitnessValueType;
18 Generation<_Chromosome> generation;
19 GeneticFitness& fitness;
21 FitnessValueType checkChromosomeFitness(_Chromosome chromosome) {
22 this->fitness.chromosome = chromosome;
23 return fitness.calculate();
26 virtual Generation<_Chromosome> do_draw() = 0;
29 Selection(Generation<_Chromosome> _generation, GeneticFitness& _fitness) :
30 generation(_generation), fitness(_fitness) {
33 Generation<_Chromosome> draw() {
34 return this->do_draw();
40 #endif /* __SELECTION_SELECTION_H */