3 #include <geneial/namespaces.h>
4 #include <geneial/algorithm/BaseGeneticAlgorithm.h>
6 #include <geneial/core/operations/replacement/ReplaceWorstOperation.h>
7 #include <geneial/core/operations/mutation/UniformMutationOperation.h>
8 #include <geneial/core/operations/choosing/ChooseRandom.h>
9 #include <geneial/algorithm/criteria/MaxGenerationCriterion.h>
10 #include <geneial/core/operations/selection/RouletteWheelSelection.h>
11 #include <geneial/core/operations/coupling/RandomCouplingOperation.h>
13 #include <geneial/core/population/builder/MultiValueChromosomeFactory.h>
14 #include <geneial/core/operations/crossover/MultiValueChromosomeNPointCrossover.h>
16 #include <geneial/utility/mixins/EnableMakeShared.h>
18 geneial_private_namespace(geneial)
20 geneial_private_namespace(algorithm)
22 using ::geneial::operation::selection::BaseSelectionOperation;
23 using ::geneial::operation::coupling::BaseCouplingOperation;
24 using ::geneial::operation::crossover::BaseCrossoverOperation;
25 using ::geneial::operation::replacement::BaseReplacementOperation;
26 using ::geneial::operation::mutation::BaseMutationOperation;
27 using ::geneial::population::chromosome::BaseChromosomeFactory;
28 using ::geneial::algorithm::stopping_criteria::BaseStoppingCriterion;
30 using ::geneial::population::management::ScopedEvent;
31 using ::geneial::utility::EnableMakeShared;
34 geneial_export_namespace
37 template<
typename FITNESS_TYPE>
38 class SteadyStateAlgorithm:
public BaseGeneticAlgorithm<FITNESS_TYPE>,
39 public virtual EnableMakeShared<SteadyStateAlgorithm<FITNESS_TYPE>>
43 std::shared_ptr<BaseStoppingCriterion<FITNESS_TYPE>> stoppingCriterion,
44 std::shared_ptr<BaseSelectionOperation<FITNESS_TYPE>> selectionOperation,
45 std::shared_ptr<BaseCouplingOperation<FITNESS_TYPE>> couplingOperation,
46 std::shared_ptr<BaseCrossoverOperation<FITNESS_TYPE>> crossoverOperation,
47 std::shared_ptr<BaseReplacementOperation<FITNESS_TYPE>> replacementOperation,
48 std::shared_ptr<BaseMutationOperation<FITNESS_TYPE>> mutationOperation,
49 std::shared_ptr<BaseChromosomeFactory<FITNESS_TYPE>> chromosomeFactory) :
50 BaseGeneticAlgorithm<FITNESS_TYPE>(stoppingCriterion,
63 virtual void solve()
override;
65 virtual ~SteadyStateAlgorithm()
70 template<
typename FITNESS_TYPE>
71 class SteadyStateAlgorithm<FITNESS_TYPE>::Builder :
public BaseGeneticAlgorithm<FITNESS_TYPE>::Builder{
74 virtual std::shared_ptr<BaseStoppingCriterion<FITNESS_TYPE>> getDefaultStoppingCriterion()
const;
76 virtual std::shared_ptr<BaseSelectionOperation<FITNESS_TYPE>> getDefaultSelectionOperation()
const;
78 virtual std::shared_ptr<BaseCouplingOperation<FITNESS_TYPE>> getDefaultCouplingOperation()
const;
80 virtual std::shared_ptr<BaseCrossoverOperation<FITNESS_TYPE>> getDefaultCrossoverOperation()
const;
82 virtual std::shared_ptr<BaseReplacementOperation<FITNESS_TYPE>> getDefaultReplacementOperation()
const;
84 virtual std::shared_ptr<BaseMutationOperation<FITNESS_TYPE>> getDefaultMutationOperation()
const;
86 virtual std::shared_ptr<BaseGeneticAlgorithm<FITNESS_TYPE>> create()
override;
97 #include <geneial/algorithm/SteadyStateAlgorithm.hpp>
98 #include <geneial/algorithm/SteadyStateAlgorithmBuilder.hpp>