Big optimizations and securing code.
[genetic.git] / include / selection / linearRankSelection.h
index de303b62ca827c2e1b36f8f282749d10b4758bff..ee119d60543490f41bd932f94ba9e2c255c46e45 100644 (file)
@@ -61,7 +61,7 @@ namespace genetic {
                 ChromosomeMap rankedGeneration;
 
                 unsigned int rank = generationSize;
-                double denominator = generationSize * (generationSize - 1);
+                const double denominator = generationSize * (generationSize - 1);
 
                 for (ChromosomeMapIterator it = generationFitness.begin(); it != generationFitness.end(); it++) {
                     rankedGeneration.insert(std::make_pair(rank--/denominator, it->second));
@@ -79,7 +79,7 @@ namespace genetic {
                 ChromosomeMap probabilities = rankChromosomes();
 
                 unsigned int size = probabilities.size();
-                unsigned int denominator = size * (size - 1);
+                const unsigned int denominator = size * (size - 1);
 
                 std::vector<_Chromosome> selected;
 
@@ -88,7 +88,7 @@ namespace genetic {
 
                 while (size > 0) {
                     bool found = false;
-                    random = (rand() % size) / (double)denominator;
+                    random = (rand() % size) / (float)denominator;
 
                     for (ChromosomeMapIterator it = probabilities.begin(); it != probabilities.end(); it++) {
                         if (random < it->first) {
@@ -112,7 +112,7 @@ namespace genetic {
                 return Generation<_Chromosome>(selected);
             }
         public:
-            LinearRankSelection(Generation<_Chromosome>& _generation, GeneticFitness& _fitness) :
+            LinearRankSelection(const Generation<_Chromosome>& _generation, GeneticFitness& _fitness) :
                 Selection<_Chromosome>(_generation, _fitness) {
             }
         };