Class CrossoverDoubleUnfairAverage

java.lang.Object
org.opt4j.operator.crossover.CrossoverDouble
org.opt4j.operator.crossover.CrossoverDoubleUnfairAverage
All Implemented Interfaces:
Operator<DoubleGenotype>, Crossover<DoubleGenotype>

public class CrossoverDoubleUnfairAverage extends CrossoverDouble
The CrossoverDoubleUnfairAverage implements the unfair average crossover proposed by Nomura and Miyhoshi, 1996.

The unfair average crossover is applied to the whole genotype, i.e., the used vector of double values. In the original work, two offspring created using

z_1 = (1 + alpha)x - alpha * y for i = 1, ..., j and
z_1 = -alpha * x + (1 + alpha)y for i = j + 1, ..., n
z_2 = (1 - alpha)x + alpha * y for i = 1, ..., j and
z_2 = alpha * x + (1 - alpha)y for i = j + 1, ..., n

for each double value in the double vector. In this implementation, one offspring is created following z_1 with a probability of 0.5 and following z_2 with a probability of 0.5, respectively. At this juncture, n is the number of variables in the vector and j a randomly chosen integer between 1 and n. The value alpha is within the range (0, 0.5).

Unlike the BLX and SBX operator, the unfair average will create offspring towards one of the parent solutions.

  • Field Details

    • alpha

      protected final double alpha
  • Constructor Details

    • CrossoverDoubleUnfairAverage

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