3 #include <geneial/namespaces.h>
4 #include <geneial/core/operations/choosing/ChooseRandom.h>
5 #include <geneial/core/population/Population.h>
6 #include <geneial/utility/Random.h>
8 geneial_private_namespace(geneial)
10 geneial_private_namespace(operation)
12 geneial_private_namespace(choosing)
14 using ::geneial::population::Population;
15 using ::geneial::utility::Random;
17 geneial_export_namespace
19 template<
typename FITNESS_TYPE>
20 typename Population<FITNESS_TYPE>::chromosome_container ChooseRandom<FITNESS_TYPE>::doChoose(
21 const typename Population<FITNESS_TYPE>::chromosome_container &chromosomeInputSet)
const
24 typename Population<FITNESS_TYPE>::chromosome_container chromosomeOutputSet;
27 chromosomeOutputSet.reserve(chromosomeInputSet.size());
30 for (
const auto &chromosome : chromosomeInputSet)
32 if (Random::decision(this->getProbability()))
34 chromosomeOutputSet.emplace_back(chromosome);
37 return chromosomeOutputSet;