3 #include <geneial/namespaces.h>
4 #include <geneial/core/population/builder/BaseChromosomeFactory.h>
5 #include <geneial/core/population/builder/MultiValueBuilderSettings.h>
6 #include <geneial/core/population/chromosome/MultiValueChromosome.h>
7 #include <geneial/utility/Random.h>
9 geneial_private_namespace(geneial)
11 geneial_private_namespace(population)
13 geneial_private_namespace(chromosome)
15 using ::geneial::utility::Random;
17 geneial_export_namespace
20 template<
typename VALUE_TYPE,
typename FITNESS_TYPE>
21 typename BaseChromosome<FITNESS_TYPE>::ptr MultiValueChromosomeFactory<VALUE_TYPE, FITNESS_TYPE>::doCreateChromosome(
22 typename BaseChromosomeFactory<FITNESS_TYPE>::PopulateBehavior populateValues)
25 auto new_chromosome = this->allocateNewChromsome();
28 if (populateValues == BaseChromosomeFactory<FITNESS_TYPE>::CREATE_VALUES)
30 auto &container= new_chromosome->getContainer();
31 for(
unsigned int i=0;i<this->_settings.getNum();i++)
33 container[i] = Random::generate<VALUE_TYPE>(this->_settings.getRandomMin(), this->_settings.getRandomMax());
37 assert(new_chromosome->getSize() == _settings.getNum());
39 return std::move(new_chromosome);