Apply small optimizations.
[genetic.git] / src / selection / roulette.h
index b5c1f33e1b5c55701c8d7452320f3520f84f753d..4371df68ee55b8a075d9a13c09cbe6b3ddf19087 100644 (file)
@@ -43,9 +43,10 @@ namespace genetic {
             vector<FitnessValueType> calculateGenerationFitness(
                 Generation<_Chromosome> generation) {
                 vector<FitnessValueType> generationFitness;
+                unsigned int generationSize = generation.size();
 
-                for (unsigned int i = 0; i < generation.get().size(); i++) {
-                    generationFitness.push_back(this->checkChromosomeFitness(generation.get()[i]));
+                for (unsigned int i = 0; i < generationSize; i++) {
+                    generationFitness.push_back(this->checkChromosomeFitness(generation[i]));
                 }
 
                 return generationFitness;
@@ -67,6 +68,8 @@ namespace genetic {
                 FitnessValueType max;
                 FitnessValueType offset;
 
+                unsigned int fitnessSize = generationFitness.size();
+
                 /* we use multimap because it stores multiple values with the
                  * same key
                  */
@@ -75,7 +78,7 @@ namespace genetic {
                 min = max = generationFitness[0];
                 offset = 0;
 
-                for (unsigned int i = 0; i < generationFitness.size(); i++) {
+                for (unsigned int i = 0; i < fitnessSize; i++) {
                     if(generationFitness[i] < min) {
                         min = generationFitness[i];
                     }
@@ -87,8 +90,8 @@ namespace genetic {
 
                 offset = (max - min) / (chromosomeSize - 1) - min;
 
-                for (unsigned int i = 0; i < generationFitness.size(); i++) {
-                    normalizedFitness.insert(std::make_pair(generationFitness[i] + offset, this->generation.get()[i]));
+                for (unsigned int i = 0; i < fitnessSize; i++) {
+                    normalizedFitness.insert(std::make_pair(generationFitness[i] + offset, this->generation[i]));
                 }
 
                 return normalizedFitness;