Class CrossoverDoubleSBX

All Implemented Interfaces:
Operator<DoubleGenotype>, Crossover<DoubleGenotype>
Direct Known Subclasses:
CrossoverDoubleDefault

public class CrossoverDoubleSBX extends CrossoverDoubleElementwise
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.

  • Field Details

    • nu

      protected double nu
  • Constructor Details

    • CrossoverDoubleSBX

      @Inject public CrossoverDoubleSBX(double nu, NormalizeDouble normalize, Rand random)
      Constructs a CrossoverDoubleSBX with a nu value and a random generator.
      Parameters:
      nu - the nu value
      normalize - the normalize operator
      random - the random number generator
  • Method Details