dict_mutators_sequential | R Documentation |
Mutator
that wraps multiple other Mutator
s given during construction and uses them for mutation in sequence.
This operator has the configuration parameters of the Mutator
s that it wraps: The configuration parameters of the operator given to the mutators
construction
argument are prefixed with "mutator_1"
, "mutator_2"
, ... up to "mutator_#"
, where #
is length(mutators)
.
Supported Domain
classes are the set intersection of supported classes of the Mutator
s given in mutators
.
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:
# preferred: mut("sequential", <mutators>) muts("sequential", <mutators>) # takes vector IDs, returns list of Mutators # long form: dict_mutators$get("sequential", <mutators>)
miesmuschel::MiesOperator
-> miesmuschel::Mutator
-> MutatorSequential
mutators
(list
of Mutator
)
Mutator
s being wrapped. These operators get run sequentially in order.
new()
Initialize the MutatorSequential
object.
MutatorSequential$new(mutators)
mutators
(list
of Mutator
)
Mutator
s to wrap. The operations are run in order given to mutators
.
The constructed object gets a clone of this argument. The $mutators
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.
MutatorSequential$prime(param_set)
param_set
(ParamSet
)
Passed to MiesOperator
$prime()
.
invisible self
.
clone()
The objects of this class are cloneable with this method.
MutatorSequential$clone(deep = FALSE)
deep
Whether to make a deep clone.
Other mutators:
Mutator
,
MutatorDiscrete
,
MutatorNumeric
,
OperatorCombination
,
dict_mutators_cmpmaybe
,
dict_mutators_erase
,
dict_mutators_gauss
,
dict_mutators_maybe
,
dict_mutators_null
,
dict_mutators_proxy
,
dict_mutators_unif
Other mutator wrappers:
OperatorCombination
,
dict_mutators_cmpmaybe
,
dict_mutators_maybe
,
dict_mutators_proxy
set.seed(1)
# dataset:
# - x1 is mutated around +- 10
# - x2 influences sdev of mutation of x1
ds = data.frame(x1 = 0, x2 = c(.01, 0.1, 1))
p = ps(x1 = p_dbl(-10, 10), x2 = p_dbl(0, 10))
# operator that only mutates x1, with sdev given by x2
gauss_x1 = mut("combine",
operators = list(
x1 = mut("gauss", sdev_is_relative = FALSE),
x2 = mut("null")
),
adaptions = list(x1.sdev = function(x) x$x2)
)
gauss_x1$prime(p)
gauss_x1$operate(ds) # see how x1[1] changes little, x1[3] changes a lot
# operator that mutates x1 with sdev given by x2, as well as x2. However,
# the value that x2 takes after mutation does not influence the value that
# the mutator of x1 "sees" -- although x2 is mutated to extreme values,
# mutation of x1 happens as in `gauss_x1`.
gauss_x1_x2 = mut("combine",
operators = list(
x1 = mut("gauss", sdev_is_relative = FALSE),
x2 = mut("gauss", sdev = 100)
),
adaptions = list(x1.sdev = function(x) x$x2)
)
gauss_x1_x2$prime(p)
gauss_x1_x2$operate(ds) # see how x1 changes in similar ways to above
# operator that mutates sequentially: first x2, and then x1 with sdev given
# by x2. The value that x2 takes after mutation *does* influence the value
# that the mutator of x1 "sees": x1 is mutated either to a large degree,
# or not at all.
gauss_x2_then_x1 = mut("sequential", list(
mut("combine",
operators = list(
x1 = mut("null"),
x2 = mut("gauss", sdev = 100)
)
),
mut("combine",
operators = list(
x1 = mut("gauss", sdev_is_relative = FALSE),
x2 = mut("null")
),
adaptions = list(x1.sdev = function(x) x$x2)
)
))
gauss_x2_then_x1$prime(p)
gauss_x2_then_x1$operate(ds)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.