3 #include <geneial/core/operations/mutation/BaseMutationOperation.h>
4 #include <geneial/core/population/chromosome/MultiValueChromosome.h>
5 #include <geneial/core/population/builder/MultiValueChromosomeFactory.h>
6 #include <geneial/core/operations/mutation/MultiValueMutationSettings.h>
8 geneial_private_namespace(geneial)
10 geneial_private_namespace(operation)
12 geneial_private_namespace(mutation)
14 using ::geneial::population::chromosome::MultiValueChromosome;
15 using ::geneial::population::chromosome::MultiValueChromosomeFactory;
17 geneial_export_namespace
20 template<
typename VALUE_TYPE,
typename FITNESS_TYPE>
21 class MultiValueChromosomeMutationOperation :
public BaseMutationOperation<FITNESS_TYPE>
25 std::shared_ptr<const MultiValueMutationSettings> _settings;
27 std::shared_ptr<MultiValueChromosomeFactory<VALUE_TYPE, FITNESS_TYPE>> _builderFactory;
29 MultiValueChromosomeMutationOperation(
30 const std::shared_ptr<const MultiValueMutationSettings> &settings,
31 const std::shared_ptr<
const BaseChoosingOperation<FITNESS_TYPE>> &choosingOperation,
32 const std::shared_ptr<MultiValueChromosomeFactory<VALUE_TYPE, FITNESS_TYPE>> &builderFactory
34 BaseMutationOperation<FITNESS_TYPE>(choosingOperation),
36 _builderFactory(builderFactory)
42 virtual ~MultiValueChromosomeMutationOperation()
46 inline MultiValueChromosomeFactory<VALUE_TYPE, FITNESS_TYPE> & getBuilderFactory()
const
48 return *_builderFactory;
51 inline const MultiValueMutationSettings& getSettings()
const
56 class Builder :
public BaseMutationOperation<FITNESS_TYPE>::Builder
59 std::shared_ptr<MultiValueMutationSettings> _settings;
60 std::shared_ptr<MultiValueChromosomeFactory<VALUE_TYPE, FITNESS_TYPE>> _builderFactory;
63 Builder(
const std::shared_ptr<MultiValueChromosomeFactory<VALUE_TYPE, FITNESS_TYPE>> &builderFactory):
64 BaseMutationOperation<FITNESS_TYPE>::Builder(),
65 _settings(std::make_shared<MultiValueMutationSettings>()),
66 _builderFactory(builderFactory)
70 const std::shared_ptr<MultiValueMutationSettings> &settings,
71 const std::shared_ptr<BaseChoosingOperation<FITNESS_TYPE>> &choosingOperation,
72 const std::shared_ptr<MultiValueChromosomeFactory<VALUE_TYPE, FITNESS_TYPE>> &builderFactory):
73 BaseMutationOperation<FITNESS_TYPE>::Builder(choosingOperation),
75 _builderFactory(builderFactory)
78 const std::shared_ptr<MultiValueChromosomeFactory<VALUE_TYPE, FITNESS_TYPE> >& getBuilderFactory()
const
80 return _builderFactory;
83 void setBuilderFactory(
84 const std::shared_ptr<MultiValueChromosomeFactory<VALUE_TYPE, FITNESS_TYPE> >& builderFactory)
86 _builderFactory = builderFactory;
89 MultiValueMutationSettings& getSettings()
94 void setSettings(
const std::shared_ptr<MultiValueMutationSettings>& settings)