3 #include <geneial/core/operations/replacement/BaseReplacementOperation.h>
4 #include <geneial/core/operations/selection/BaseSelectionOperation.h>
5 #include <geneial/utility/mixins/EnableMakeShared.h>
8 geneial_private_namespace(geneial)
10 geneial_private_namespace(operation)
12 geneial_private_namespace(replacement)
14 using ::geneial::operation::coupling::BaseCouplingOperation;
15 using ::geneial::operation::selection::BaseSelectionOperation;
16 using ::geneial::utility::EnableMakeShared;
18 geneial_export_namespace
24 template<
typename FITNESS_TYPE>
25 class ReplaceWorstOperation:
public BaseReplacementOperation<FITNESS_TYPE>,
26 public EnableMakeShared<ReplaceWorstOperation<FITNESS_TYPE>>
29 unsigned int getAmountToReplace(
const Population<FITNESS_TYPE> &population,
30 const typename BaseCouplingOperation<FITNESS_TYPE>::offspring_result_set &offspring)
const;
33 explicit ReplaceWorstOperation(
const std::shared_ptr<const BaseReplacementSettings> &settings) :
34 BaseReplacementOperation<FITNESS_TYPE>(settings)
40 virtual ~ReplaceWorstOperation()
44 void doReplace(Population<FITNESS_TYPE> &population,
45 const typename BaseSelectionOperation<FITNESS_TYPE>::selection_result_set &parents,
46 typename BaseCouplingOperation<FITNESS_TYPE>::offspring_result_set &offspring,
47 BaseManager<FITNESS_TYPE> &manager)
const override;
49 class Builder :
public BaseReplacementOperation<FITNESS_TYPE>::Builder
52 Builder():BaseReplacementOperation<FITNESS_TYPE>::Builder()
55 typename BaseReplacementOperation<FITNESS_TYPE>::ptr create()
override
57 return ReplaceWorstOperation<FITNESS_TYPE>::makeShared(this->_settings);
68 #include <geneial/core/operations/replacement/ReplaceWorstOperation.hpp>