3 #include <geneial/namespaces.h>
4 #include <geneial/core/operations/coupling/BaseCouplingOperation.h>
5 #include <geneial/utility/mixins/EnableMakeShared.h>
7 geneial_private_namespace(geneial)
9 geneial_private_namespace(operation)
11 geneial_private_namespace(coupling)
13 using ::geneial::population::Population;
14 using ::geneial::operation::crossover::BaseCrossoverOperation;
15 using ::geneial::operation::selection::BaseSelectionOperation;
16 using ::geneial::population::management::BaseManager;
17 using ::geneial::utility::EnableMakeShared;
19 geneial_export_namespace
25 template<
typename FITNESS_TYPE>
26 class RandomCouplingOperation:
public BaseCouplingOperation<FITNESS_TYPE>,
27 public virtual EnableMakeShared<RandomCouplingOperation<FITNESS_TYPE>>
30 explicit RandomCouplingOperation(
const std::shared_ptr<const CouplingSettings> &settings) :
31 BaseCouplingOperation<FITNESS_TYPE>(settings)
36 virtual ~RandomCouplingOperation()
40 virtual typename BaseCouplingOperation<FITNESS_TYPE>::offspring_result_set doCopulate(
41 const typename BaseSelectionOperation<FITNESS_TYPE>::selection_result_set &mating_pool,
42 const BaseCrossoverOperation<FITNESS_TYPE> &crossoverOperation, BaseManager<FITNESS_TYPE> &manager)
override;
44 class Builder :
public BaseCouplingOperation<FITNESS_TYPE>::Builder
47 virtual typename BaseCouplingOperation<FITNESS_TYPE>::ptr create()
override
49 return RandomCouplingOperation::makeShared(this->_settings);
60 #include <geneial/core/operations/coupling/RandomCouplingOperation.hpp>