GENEIAL  0.2=/
 All Classes Pages
ReplaceWorstOperation.h
1 #pragma once
2 
3 #include <geneial/core/operations/replacement/BaseReplacementOperation.h>
4 #include <geneial/core/operations/selection/BaseSelectionOperation.h>
5 #include <geneial/utility/mixins/EnableMakeShared.h>
6 
7 
8 geneial_private_namespace(geneial)
9 {
10 geneial_private_namespace(operation)
11 {
12 geneial_private_namespace(replacement)
13 {
14 using ::geneial::operation::coupling::BaseCouplingOperation;
15 using ::geneial::operation::selection::BaseSelectionOperation;
16 using ::geneial::utility::EnableMakeShared;
17 
18 geneial_export_namespace
19 {
20 
24 template<typename FITNESS_TYPE>
25 class ReplaceWorstOperation: public BaseReplacementOperation<FITNESS_TYPE>,
26  public EnableMakeShared<ReplaceWorstOperation<FITNESS_TYPE>>
27 {
28 private:
29  unsigned int getAmountToReplace(const Population<FITNESS_TYPE> &population,
30  const typename BaseCouplingOperation<FITNESS_TYPE>::offspring_result_set &offspring) const;
31 
32 protected:
33  explicit ReplaceWorstOperation(const std::shared_ptr<const BaseReplacementSettings> &settings) :
34  BaseReplacementOperation<FITNESS_TYPE>(settings)
35  {
36  }
37 
38 public:
39 
40  virtual ~ReplaceWorstOperation()
41  {
42  }
43 
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;
48 
49  class Builder : public BaseReplacementOperation<FITNESS_TYPE>::Builder
50  {
51  public:
52  Builder():BaseReplacementOperation<FITNESS_TYPE>::Builder()
53  {
54  }
55  typename BaseReplacementOperation<FITNESS_TYPE>::ptr create() override
56  {
57  return ReplaceWorstOperation<FITNESS_TYPE>::makeShared(this->_settings);
58  }
59  };
60 };
61 
62 } /* geneial_export_namespace */
63 } /* private namespace replacement */
64 } /* private namespace operation */
65 } /* private namespace geneial */
66 
67 
68 #include <geneial/core/operations/replacement/ReplaceWorstOperation.hpp>
69