Package org.opt4j.operator.crossover
Class CrossoverDoubleSBX
java.lang.Object
org.opt4j.operator.crossover.CrossoverDouble
org.opt4j.operator.crossover.CrossoverDoubleElementwise
org.opt4j.operator.crossover.CrossoverDoubleSBX
- All Implemented Interfaces:
Operator<DoubleGenotype>,Crossover<DoubleGenotype>
- Direct Known Subclasses:
CrossoverDoubleDefault
The
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.
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsFields inherited from class org.opt4j.operator.crossover.CrossoverDouble
normalize, random -
Constructor Summary
ConstructorsConstructorDescriptionCrossoverDoubleSBX(double nu, NormalizeDouble normalize, Rand random) Constructs aCrossoverDoubleSBXwith a nu value and a random generator. -
Method Summary
Methods inherited from class org.opt4j.operator.crossover.CrossoverDoubleElementwise
crossoverMethods inherited from class org.opt4j.operator.crossover.CrossoverDouble
crossover
-
Field Details
-
nu
protected double nu
-
-
Constructor Details
-
CrossoverDoubleSBX
Constructs aCrossoverDoubleSBXwith a nu value and a random generator.- Parameters:
nu- thenuvaluenormalize- the normalize operatorrandom- the random number generator
-
-
Method Details
-
crossover
Description copied from class:CrossoverDoubleElementwisePerforms a crossover with two double values.- Specified by:
crossoverin classCrossoverDoubleElementwise- Parameters:
x- the first valuey- the second value- Returns:
- the resulting values
-