Beispiel #1
0
/*
 * Generate a population of random bits using a specific seed
 * Parameters: populationSize, chromosomeLength, seed value
 * Return: boolean
 */
bool Population::generate(size_t populationSize, size_t chromosomeLength, string seedValue) {
    seed_seq seed(seedValue.begin(), seedValue.end()); //Use the seed value instead of random_device
    mt19937 gen(seed);
    bernoulli_distribution dist; //Bernoulli distribution of type bool

    for(size_t i = 0; i < populationSize; i++){
        Chromosome chromosome;
        chromosome.reserve(chromosomeLength);

        for(size_t j = 0; j<chromosomeLength; j++){
            chromosome.push_back(dist(gen)); ///generate a random bool
        }
        population.push_back(chromosome);
    }

    return true;
}
Beispiel #2
0
/*
 * Generate a population of random bits using a random seed
 * Parameters: populationSize, chromosomeLength
 * Return: boolean
 */
bool Population::generate(size_t populationSize, size_t chromosomeLength) {
    random_device rd;
    mt19937 gen(rd());
    bernoulli_distribution dist; //Bernoulli distribution of type bool

    for (size_t i = 0; i < populationSize; i++) {
        Chromosome chromosome;
        chromosome.reserve(chromosomeLength);

        for (size_t j = 0; j < chromosomeLength; j++) {
            chromosome.push_back(dist(gen)); ///generate a random bool
        }
        population.push_back(chromosome);
    }

    return true;
}
void TwoPointCrossing_test::testcrossingtwo()

{
 Chromosome achromosome;
 achromosome.push_back(true);
   achromosome.push_back(true);
   achromosome.push_back(true);
   achromosome.push_back(true);
   achromosome.push_back(true);
   achromosome.push_back(false);
   achromosome.push_back(false);
   achromosome.push_back(false);
   achromosome.push_back(false);
   achromosome.push_back(false);
  
	Chromosome trueChromosome(10, true);

   POPULATION fpop;//(5, trueChromosome);
	/*fpop.push_back(achromosome);
	fpop.push_back(achromosome);
	fpop.push_back(achromosome);
	fpop.push_back(achromosome);
	fpop.push_back(achromosome);*/

	for(int i=0; i<100; ++i)
	{
		fpop.push_back(trueChromosome);
		fpop.push_back(trueChromosome);
		fpop.push_back(achromosome);
	}

	printFarm(fpop); 
   high_resolution_clock::time_point t1 = high_resolution_clock::now();
   
    TwoPointCrossing  onepoint(fpop);
   
  for(int i=0; i<10; ++i)
   {

    onepoint.crossovertwo();
   }

   high_resolution_clock::time_point t2 = high_resolution_clock::now();
   std::cout<<"Final population"<<std::endl;
	printFarm(fpop);
   duration<double> time_span = duration_cast<duration<double>>(t2 - t1);

  std::cout << "It took me " << time_span.count() << " seconds."<<std::endl;
     
}