Combination of the idea of mutBitflipCHW
with mutUniformReset
.
If a given bitvector has m
1s and n
0s, then, with probability p
for
each bit, it is drawn anew from the distribution
((m + 1) * reset.dist) / (m * reset.dist + n * (1 - reset.dist) + 1)
.
The reasoning behind this is that, without Laplace smoothing, drawing from
m * reset.dist
/ (m * reset.dist + n * (1 - reset.dist))would lead to probabilities of drawing a "0" or "1" such that
mean(P("1") / P("0")) = m / n * mean(reset.dist / (1 - reset.dist))`.
The mutUniformMetaResetSHW
does reset with a weighted mean of distributions.
mutUniformResetSHW(ind, p = 0.1, reset.dist, ...) mutUniformMetaResetSHW(ind, p = 0.1, reset.dists, reset.dist.weights, ...)
ind |
|
---|---|
p |
|
reset.dist |
|
... | further arguments passed on to the method. |
reset.dists |
|
reset.dist.weights |
|
[integer]
the mutated individual