X-Git-Url: https://git.dlugolecki.net.pl/?p=genetic.git;a=blobdiff_plain;f=include%2Fselection%2FlinearRankSelection.h;h=ee119d60543490f41bd932f94ba9e2c255c46e45;hp=de303b62ca827c2e1b36f8f282749d10b4758bff;hb=0c268e96035b65112e449c1c0df49f2be3eb184f;hpb=917440678dc4e920dfd5810da1274665acb17138 diff --git a/include/selection/linearRankSelection.h b/include/selection/linearRankSelection.h index de303b6..ee119d6 100644 --- a/include/selection/linearRankSelection.h +++ b/include/selection/linearRankSelection.h @@ -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) { } };