3 #include <geneial/core/operations/mutation/MultiValueChromosomeMutationOperation.h>
4 #include <geneial/core/population/Population.h>
5 #include <geneial/utility/mixins/EnableMakeShared.h>
9 geneial_private_namespace(geneial)
11 geneial_private_namespace(operation)
13 geneial_private_namespace(mutation)
15 using ::geneial::population::Population;
16 using ::geneial::utility::EnableMakeShared;
18 geneial_export_namespace
21 template<
typename VALUE_TYPE,
typename FITNESS_TYPE>
22 class ValueSwapMutationOperation:
public MultiValueChromosomeMutationOperation<VALUE_TYPE,FITNESS_TYPE>,
23 public virtual EnableMakeShared<ValueSwapMutationOperation<VALUE_TYPE,FITNESS_TYPE>>
29 ValueSwapMutationOperation(
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 MultiValueChromosomeMutationOperation<VALUE_TYPE,FITNESS_TYPE>(
43 virtual ~ValueSwapMutationOperation()
50 virtual typename Population<FITNESS_TYPE>::chromosome_container doMutate(
51 const typename Population<FITNESS_TYPE>::chromosome_container &mutants, BaseManager<FITNESS_TYPE> &manager)
const override;
54 class Builder :
public MultiValueChromosomeMutationOperation<VALUE_TYPE,FITNESS_TYPE>::Builder
58 Builder(
const std::shared_ptr<MultiValueChromosomeFactory<VALUE_TYPE, FITNESS_TYPE>> &builderFactory) :
59 MultiValueChromosomeMutationOperation<VALUE_TYPE, FITNESS_TYPE>::Builder(builderFactory)
63 Builder(
const std::shared_ptr<MultiValueMutationSettings> &settings,
64 const std::shared_ptr<BaseChoosingOperation<FITNESS_TYPE>> &choosingOperation,
65 const std::shared_ptr<MultiValueChromosomeFactory<VALUE_TYPE, FITNESS_TYPE>> &builderFactory) :
66 MultiValueChromosomeMutationOperation<VALUE_TYPE, FITNESS_TYPE>::Builder(settings, choosingOperation,
71 virtual typename BaseMutationOperation<FITNESS_TYPE>::ptr create()
override
74 ValueSwapMutationOperation<VALUE_TYPE, FITNESS_TYPE>::makeShared
77 this->_choosingOperation,
91 #include <geneial/core/operations/mutation/ValueSwapMutationOperation.hpp>