3 #include <geneial/core/operations/selection/BaseSelectionOperation.h>
4 #include <geneial/utility/mixins/EnableMakeShared.h>
10 geneial_private_namespace(geneial)
12 geneial_private_namespace(operation)
14 geneial_private_namespace(selection)
16 using ::geneial::utility::EnableMakeShared;
18 geneial_export_namespace
25 template<
typename FITNESS_TYPE>
26 class RouletteWheelSelection:
public BaseSelectionOperation<FITNESS_TYPE>,
27 public virtual EnableMakeShared<RouletteWheelSelection<FITNESS_TYPE>>
30 RouletteWheelSelection(
const std::shared_ptr<BaseSelectionSettings> &settings) :
31 BaseSelectionOperation<FITNESS_TYPE>(settings)
37 virtual ~RouletteWheelSelection()
41 virtual typename BaseSelectionOperation<FITNESS_TYPE>::selection_result_set doSelect(
42 const Population<FITNESS_TYPE> &population, BaseManager<FITNESS_TYPE> &manager)
const override;
44 class Builder :
public BaseSelectionOperation<FITNESS_TYPE>::Builder
48 Builder() : BaseSelectionOperation<FITNESS_TYPE>::Builder()
52 typename BaseSelectionOperation<FITNESS_TYPE>::ptr create()
override
54 return RouletteWheelSelection<FITNESS_TYPE>::makeShared(this->_settings);
67 #include <geneial/core/operations/selection/RouletteWheelSelection.hpp>