X-Git-Url: https://git.dlugolecki.net.pl/?a=blobdiff_plain;f=src%2Fselection%2Froulette.h;h=4371df68ee55b8a075d9a13c09cbe6b3ddf19087;hb=cb1db4f6f0e4d6c65e09013c21df12b67d05d0b0;hp=b5c1f33e1b5c55701c8d7452320f3520f84f753d;hpb=df033a74e9dae48ba6a9efe3b0a5ad03c5caa324;p=genetic.git diff --git a/src/selection/roulette.h b/src/selection/roulette.h index b5c1f33..4371df6 100644 --- a/src/selection/roulette.h +++ b/src/selection/roulette.h @@ -43,9 +43,10 @@ namespace genetic { vector calculateGenerationFitness( Generation<_Chromosome> generation) { vector 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;