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
26 template<
typename FITNESS_TYPE>
27 class SimpleCouplingOperation:
public BaseCouplingOperation<FITNESS_TYPE>,
28 public virtual EnableMakeShared<SimpleCouplingOperation<FITNESS_TYPE>>
31 explicit SimpleCouplingOperation(
const std::shared_ptr<const CouplingSettings> &settings) :
32 BaseCouplingOperation<FITNESS_TYPE>(settings)
37 virtual ~SimpleCouplingOperation()
41 virtual typename BaseCouplingOperation<FITNESS_TYPE>::offspring_result_set doCopulate(
42 const typename BaseSelectionOperation<FITNESS_TYPE>::selection_result_set &mating_pool,
43 const BaseCrossoverOperation<FITNESS_TYPE> &crossoverOperation, BaseManager<FITNESS_TYPE> &manager)
override;
45 class Builder:
public BaseCouplingOperation<FITNESS_TYPE>::Builder
48 virtual typename BaseCouplingOperation<FITNESS_TYPE>::ptr create()
override
50 return SimpleCouplingOperation::makeShared(this->_settings);
61 #include <geneial/core/operations/coupling/SimpleCouplingOperation.hpp>