Denote children by \(C^{child}\) which i-th row
children[i, ] is a chromosome \(c_{i}^{child}\) i.e. the vector of
parameter values of the function being optimized \(f(.)\) that is
provided via fn argument of gena.
The elements of chromosome \(c_{ij}^{child}\) are genes
representing parameters values.
Mutation algorithm determines random transformation of children's genes.
Each child may be selected for mutation with probability prob.
If \(i\)-th child is selected for mutation and prob.genes is a
vector then \(j\)-th gene of this child
is transformed with probability prob.genes[j]. If prob.genes
is a constant then this probability is the same for all genes.
Argument method determines particular mutation algorithm to
be applied. Denote by \(\tau\) the vector of parameters used by the
algorithm. Note that \(\tau\) corresponds to par.
Also let's denote by \(c_{ij}^{mutant}\) the value of
gene \(c_{ij}^{child}\) after mutation.
If method = "constant" then \(c_{ij}^{mutant}\)
is a uniform random variable between lower[j] and upper[j].
If method = "normal" then \(c_{ij}^{mutant}\)
equals to the sum of \(c_{ij}^{child}\) and normal random variable
with zero mean and standard deviation par[j].
By default par is identity vector of length ncol(children)
so par[j] = 1 for all j.
If method = "percent" then \(c_{ij}^{mutant}\) is generated
from \(c_{ij}^{child}\) by equiprobably increasing or decreasing it
by \(q\) percent,
where \(q\) is a uniform random variable between \(0\) and par[j].
Note that par may also be a constant then all
genes have the same maximum possible percentage change.
By default par = 20.
For more information on mutation algorithms
please see Patil, Bhende (2014).