public class CrossoverDoubleSBX extends CrossoverDoubleElementwise
CrossoverDoubleSBX is an implementation of the simulated binary
crossover operator proposed by Deb and Kumar, 1995.
The SBX crossover is applied bitwise. In the original work, two offspring are created using
z_1 = 0.5 * [(1 + beta)x + (1 - beta)y]
z_2 = 0.5 * [(1 - beta)x + (1 + beta)y].
In this implementation, one offspring is created while the actual bit is set
to z_1 with a probability of 0.5 and to z_2 with a
probability of 0.5, respectively.
The value beta is defined as
beta = (2u)^(1 / (nu + 1)) if u <= 0.5 and
beta = (1 / (2 (1 - u)))^(1 / (nu + 1)) otherwise
At this juncture, u is a random number between (0, 1). The
variable nu influences the crossover with a high value leading to a
higher probability of 'near-parent' solution while a small value leads to a
higher probability of more distant solutions, respectively.
| Constructor and Description |
|---|
CrossoverDoubleSBX(double nu,
NormalizeDouble normalize,
Rand random)
Constructs a
CrossoverDoubleSBX with a nu value and a random
generator. |
| Modifier and Type | Method and Description |
|---|---|
Pair<Double> |
crossover(double x,
double y)
Performs a crossover with two double values.
|
crossover@Inject
public CrossoverDoubleSBX(double nu,
NormalizeDouble normalize,
Rand random)
CrossoverDoubleSBX with a nu value and a random
generator.nu - the nu valuenormalize - the normalize operatorrandom - the random number generatorpublic Pair<Double> crossover(double x, double y)
CrossoverDoubleElementwisecrossover in class CrossoverDoubleElementwisex - the first valuey - the second value