Apply small optimizations.
[genetic.git] / src / selection / roulette.h
index f1b10c5d393864fd53d52ceb2673e8eb217e4d27..4371df68ee55b8a075d9a13c09cbe6b3ddf19087 100644 (file)
@@ -43,8 +43,9 @@ namespace genetic {
             vector<FitnessValueType> calculateGenerationFitness(
                 Generation<_Chromosome> generation) {
                 vector<FitnessValueType> generationFitness;
+                unsigned int generationSize = generation.size();
 
-                for (unsigned int i = 0; i < generation.size(); i++) {
+                for (unsigned int i = 0; i < generationSize; i++) {
                     generationFitness.push_back(this->checkChromosomeFitness(generation[i]));
                 }
 
@@ -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,7 +90,7 @@ namespace genetic {
 
                 offset = (max - min) / (chromosomeSize - 1) - min;
 
-                for (unsigned int i = 0; i < generationFitness.size(); i++) {
+                for (unsigned int i = 0; i < fitnessSize; i++) {
                     normalizedFitness.insert(std::make_pair(generationFitness[i] + offset, this->generation[i]));
                 }