typedef typename _Chromosome::GeneType GeneType;
protected:
/**
- * Chance with which mutation can occur.
+ * Chance with which mutation can occur. (0 = 0%, 1 = 100%)
*/
MutationChanceType chance;
* @return new Generation of Chromosome's that passed the mutation
*/
Generation<_Chromosome> mutate(Generation<_Chromosome> _generation) {
- const unsigned int generationSize = _generation.get().size();
- const unsigned int chromosomeSize = _generation.get()[0].get().size();
+ const unsigned int generationSize = _generation.size();
+ const unsigned int chromosomeSize = _generation[0].size();
vector<_Chromosome> newGeneration;
for (unsigned int i = 0; i < generationSize; i++) {
MutationChanceType random = (rand() % 10000) / 10000.0;
- _Chromosome chromosome = _generation.get()[i];
+ _Chromosome chromosome = _generation[i];
if (random < this->chance) {
unsigned int mutatedGene = (rand() % chromosomeSize);
- vector<GeneType> newChromosome = chromosome.get();
- newChromosome[mutatedGene] = GeneType(!newChromosome[mutatedGene].get());
-
- chromosome = _Chromosome(newChromosome);
+ chromosome[mutatedGene] = GeneType(!chromosome[mutatedGene].get());
}
newGeneration.push_back(chromosome);
}