This is a generalization of the doAxisProjectionMutation. A subset \(Q \subseteq P\) (each point selected with independent probability pm) is selected. Next, a random intercept \(\beta_0 \in [0, 1]\) is sampled. In a subsequent step a slope \(\beta_1\) is sampled uniformly at random from \([0, 3]\) (if \(\beta_0 < 0.5\)) and \([-3, 0]\) (if \(\beta_0 \geq 0.5\)). This heuristic distinction of cases ensures that with high probability the resulting linear function \(\beta_0 + \beta_1x\) runs inside the bounding-box \([0, 1]^2\) at least partially. Finally, all points \(p \in Q\) are modified by setting \(p_2 = \beta_0 + \beta_1p_1\). Additionally, with probability p.jitter, Gaussian noise with mean zero and standard deviation jitter.sd is added to the second coordinate.

doLinearProjectionMutation(coords, pm = 0.1, p.jitter = 0,
  jitter.sd = 0, ...)

Arguments

coords

[matrix]
An n times 2 matrix of point coordinates in \([0, 1]^2\).

pm

[numeric(1)]
Probability of node mutation. Note that each node is subject to mutation independent of the the nodes. Default is \(0.1\), i.e., in expectation 10% of the points are mutated.

p.jitter

[numeric(1)]
Probability to add Gaussian noise to mutated points. Default is 0, i.e., no Gaussian noise at all.

jitter.sd

[numeric(1)]
Standard deviation for Gaussian noise. Defaults to 0.1. Note that this parameter has an effect only if p.jitter is greater zero.

...

[any]
Currently not used.

Value

[matrix] Mutated coordinates.

See also