X-Git-Url: https://git.dlugolecki.net.pl/?p=genetic.git;a=blobdiff_plain;f=include%2Fcrossover%2Fcrossover.h;h=3befaed60c50698b904ba945afe18230f3aabf2b;hp=d2eada8efb0bfe46b2d0a3edbdf6311c8bd7907b;hb=1e175fb658e55f4cc8b894fff288be22998e78af;hpb=2a8fc81203107eb3495a50fb2666803fda3e0517 diff --git a/include/crossover/crossover.h b/include/crossover/crossover.h index d2eada8..3befaed 100644 --- a/include/crossover/crossover.h +++ b/include/crossover/crossover.h @@ -1,6 +1,8 @@ #ifndef __CROSSOVER_CROSSOVER_H #define __CROSSOVER_CROSSOVER_H +#include + #include "chromosome.h" #include "generation.h" @@ -14,7 +16,7 @@ namespace genetic { /** * Type of probability of crossover chance */ - typedef double CrossoverChanceType; + typedef float CrossoverChanceType; /** * Type representing Chromosome Gene @@ -34,7 +36,7 @@ namespace genetic { * @param splitPlace Gene number on which the Genes should be swapped * @return new Chromosome crossed between given two */ - _Chromosome do_cross(_Chromosome first, _Chromosome second, unsigned int splitPlace) { + _Chromosome do_cross(_Chromosome& first, _Chromosome& second, const unsigned int splitPlace) { const unsigned int chromosomeSize = first.size(); // cout << " "; @@ -55,7 +57,7 @@ namespace genetic { // } // } - vector crossedChromosome; + std::vector crossedChromosome; for (unsigned int i = 0; i < chromosomeSize; i++) { if (i < splitPlace) { crossedChromosome.push_back(first[i].get()); @@ -80,7 +82,7 @@ namespace genetic { * * @param chance probability of Crossover (0 = 0%, 1 = 100%) */ - Crossover(CrossoverChanceType chance) : + Crossover(const CrossoverChanceType& chance) : chance(chance) { } @@ -90,9 +92,9 @@ namespace genetic { * @param _generation Generation for which the crossover should be applied * @return new Generation of Chromosome's after the Crossover */ - Generation<_Chromosome> cross(Generation<_Chromosome> _generation) { + Generation<_Chromosome> cross(Generation<_Chromosome>& _generation) { const unsigned int generationSize = _generation.size(); - vector<_Chromosome> newGeneration; + std::vector<_Chromosome> newGeneration; for (unsigned int i = 0; i < generationSize; i++) { CrossoverChanceType random = (rand() + 1 % 10000) / 10000.0;