Mutator that chooses which operation to perform probabilistically. The Mutator wraps two other Mutators given during construction,
and for each individuum, the operation to perform is sampled: with probability p (configuration parameter), the Mutator given to the mutator
construction argument is applied, and with probability p - 1 the one given to mutator_not is applied.
This operator has the configuration parameters of the Mutators that it wraps: The configuration parameters of the operator given to the mutator construction argument
are prefixed with "maybe.", the configuration parameters of the operator given to the mutator_not construction argument are prefixed with "maybe_not.".
Additional configuration parameters:
p :: numeric(1)
Probability per individual with which to apply the operator given to the mutator construction argument. Must be set by the user.
Supported Param classes are the set intersection of supported classes of mutator and mutator_not.
This Mutator can be created with the short access form mut()
(muts() to get a list), or through the the dictionary
dict_mutators in the following way:
Other mutators:
Mutator,
MutatorDiscrete,
MutatorNumeric,
OperatorCombination,
dict_mutators_cmpmaybe,
dict_mutators_erase,
dict_mutators_gauss,
dict_mutators_null,
dict_mutators_proxy,
dict_mutators_sequential,
dict_mutators_unif
Other mutator wrappers:
OperatorCombination,
dict_mutators_cmpmaybe,
dict_mutators_proxy,
dict_mutators_sequential
miesmuschel::MiesOperator -> miesmuschel::Mutator -> MutatorMaybe
new()Initialize the MutatorMaybe object.
MutatorMaybe$new(mutator, mutator_not = MutatorNull$new())mutator(Mutator)Mutator to wrap. This operator gets run with probability p (configuration parameter).
The constructed object gets a clone of this argument.
The $mutator field will reflect this value.
mutator_not(Mutator)
Another Mutator to wrap. This operator runs when mutator is not chosen. By
default, this is MutatorNull, i.e. no operation. With this default, the
MutatorMaybe object applies the mutator operation with probability p, and
no operation at all otherwise.
The constructed object gets a clone of this argument.
The $mutator_not field will reflect this value.
prime()See MiesOperator method. Primes both this operator, as well as the wrapped operators
given to mutator and mutator_not during construction.
param_set(ParamSet)
Passed to MiesOperator$prime().
invisible self.
set.seed(1)
mm = mut("maybe", mut("gauss", sdev = 5), p = 0.5)
p = ps(x = p_int(-5, 5), y = p_dbl(-5, 5))
data = data.frame(x = rep(0, 5), y = rep(0, 5))
mm$prime(p)
mm$operate(data)
#> x y
#> 1 5 5.0000000
#> 2 -5 -5.0000000
#> 3 0 0.0000000
#> 4 0 0.0000000
#> 5 -5 -0.2883586
mm$param_set$values$p = 0.3
mm$operate(data)
#> x y
#> 1 0 0
#> 2 0 0
#> 3 0 0
#> 4 0 0
#> 5 5 -5
mm2 = mut("maybe",
mutator = mut("gauss", sdev = 0.01),
mutator_not = mut("gauss", sdev = 10),
p = 0.5
)
mm2$prime(p)
mm2$operate(data)
#> x y
#> 1 0 -0.08919211
#> 2 0 -0.12375384
#> 3 -5 5.00000000
#> 4 0 0.03773956
#> 5 0 0.08041895