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 Detail

      • nu

        protected double nu
    • Constructor Detail

      • 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