Mutator that performs the operation in its operation configuration parameter. This is useful, e.g., to make OptimizerMies's mutation operation fully parametrizable.

Configuration Parameters

  • operation :: Mutator
    Operation to perform. Must be set by the user. This is primed when $prime() of MutatorProxy is called, and also when $operate() is called, to make changing the operation as part of self-adaption possible. However, if the same operation gets used inside multiple MutatorProxy objects, then it is recommended to $clone(deep = TRUE) the object before assigning them to operation to avoid frequent re-priming.

Supported Operand Types

Supported Param classes are: ParamLgl, ParamInt, ParamDbl, ParamFct

Dictionary

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("proxy")
muts("proxy")  # takes vector IDs, returns list of Mutators

# long form:
dict_mutators$get("proxy")

Super classes

miesmuschel::MiesOperator -> miesmuschel::Mutator -> MutatorProxy

Methods

Inherited methods


Method new()

Initialize the MutatorProxy object.

Usage


Method prime()

See MiesOperator method. Primes both this operator, as well as the operator given to the operation configuration parameter. Note that this modifies the $param_set$values$operation object.

Usage

MutatorProxy$prime(param_set)

Arguments

param_set

(ParamSet)
Passed to MiesOperator$prime().

Returns

invisible self.


Method clone()

The objects of this class are cloneable with this method.

Usage

MutatorProxy$clone(deep = FALSE)

Arguments

deep

Whether to make a deep clone.

Examples

set.seed(1)
mp = mut("proxy", operation = mut("gauss", sdev = 0.1))
p = ps(x = p_int(-5, 5), y = p_dbl(-5, 5))
data = data.frame(x = rep(0, 5), y = rep(0, 5))

mp$prime(p)
mp$operate(data)
#>    x          y
#> 1 -1  0.1836433
#> 2 -1  1.5952808
#> 3  0 -0.8204684
#> 4  1  0.7383247
#> 5  1 -0.3053884

mp$param_set$values$operation = mut("null")
mp$operate(data)
#>   x y
#> 1 0 0
#> 2 0 0
#> 3 0 0
#> 4 0 0
#> 5 0 0