All Implemented Interfaces:
Configurable, Variation

public class UNDX extends MultiParentVariation
Unimodal Normal Distribution Crossover (UNDX) operator. UNDX is a multiparent operator, allowing a user-defined number of parents and offspring. Offspring are centered around the centroid, forming a normal distribution whose shape is controlled by the positions of the parents, as depicted in the figure below.

Example UNDX operator distribution

References:

  1. Kita, H., Ono, I., and Kobayashi, S., "Multi-parental Extension of the Unimodal Normal Distribution Crossover for Real-coded Genetic Algorithms," Proceedings of the 1999 Congress on Evolutionary Computation, pp. 1581-1588, 1999.
  2. Deb, K., Anand, A., and Joshi, D., "A Computationally Efficient Evolutionary Algorithm for Real-Parameter Optimization," Evolutionary Computation, vol. 10, no. 4, pp. 371-395, 2002.
  • Field Summary

    Fields inherited from class org.moeaframework.core.operator.real.MultiParentVariation

    numberOfOffspring, numberOfParents
  • Constructor Summary

    Constructors
    Constructor
    Description
    Constructs a UNDX operator with default settings, taking 10 parents and producing 2 offspring.
    UNDX(int numberOfParents, int numberOfOffspring)
    Constructs a UNDX operator with the specified number of parents and offspring.
    UNDX(int numberOfParents, int numberOfOffspring, double zeta, double eta)
    Constructs a UNDX operator with the specified number of parents and offspring.
  • Method Summary

    Modifier and Type
    Method
    Description
    evolve(Solution[] parents)
    Evolves one or more parent solutions (specified by getArity) and produces one or more child solutions.
    double
    Returns the standard deviation of the normal distribution controlling the spread of solutions in the remaining orthogonal directions not defined by the parents.
    Returns the name of this variation operator.
    double
    Returns the standard deviation of the normal distribution controlling the spread of solutions in the orthogonal directions defined by the parents.
    void
    setEta(double eta)
    Sets the standard deviation of the normal distribution controlling the spread of solutions in the remaining orthogonal directions not defined by the parents.
    void
    setZeta(double zeta)
    Sets the standard deviation of the normal distribution controlling the spread of solutions in the orthogonal directions defined by the parents.
    undx(Solution[] parents)
    Returns one randomly-generated offspring produced by this operator.

    Methods inherited from class org.moeaframework.core.operator.real.MultiParentVariation

    getArity, getNumberOfOffspring, getNumberOfParents, setNumberOfOffspring, setNumberOfParents

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface org.moeaframework.core.configuration.Configurable

    applyConfiguration, getConfiguration
  • Constructor Details

    • UNDX

      public UNDX()
      Constructs a UNDX operator with default settings, taking 10 parents and producing 2 offspring. The parameters zeta=0.5 and eta=0.35 are used as suggested by Kita et al. (1999).
    • UNDX

      public UNDX(int numberOfParents, int numberOfOffspring)
      Constructs a UNDX operator with the specified number of parents and offspring. The parameters zeta=0.5 and eta=0.35 are used as suggested by Kita et al. (1999).
      Parameters:
      numberOfParents - the number of parents required by this operator
      numberOfOffspring - the number of offspring produced by this operator
    • UNDX

      public UNDX(int numberOfParents, int numberOfOffspring, double zeta, double eta)
      Constructs a UNDX operator with the specified number of parents and offspring. The parameters sigma_zeta=0.5 and sigma_eta=0.35 are used as suggested by Kita et al. (1999).
      Parameters:
      numberOfParents - the number of parents required by this operator
      numberOfOffspring - the number of offspring produced by this operator
      zeta - the standard deviation of the normal distribution controlling the spread of solutions in the orthogonal directions defined by the parents
      eta - the standard deviation of the normal distribution controlling the spread of solutions in the remaining orthogonal directions not defined by the parents
  • Method Details

    • getName

      public String getName()
      Description copied from interface: Variation
      Returns the name of this variation operator. This name should also be used as the prefix for any parameters. As such, the name should only contain alphanumeric characters, avoid using whitespace and other symbols.
      Returns:
      the name of this variation operator
    • getZeta

      public double getZeta()
      Returns the standard deviation of the normal distribution controlling the spread of solutions in the orthogonal directions defined by the parents.
      Returns:
      the standard deviation value
    • setZeta

      public void setZeta(double zeta)
      Sets the standard deviation of the normal distribution controlling the spread of solutions in the orthogonal directions defined by the parents. The default value is 0.5.
      Parameters:
      zeta - the standard deviation value
    • getEta

      public double getEta()
      Returns the standard deviation of the normal distribution controlling the spread of solutions in the remaining orthogonal directions not defined by the parents.
      Returns:
      the standard deviation of the normal distribution controlling the spread of solutions in the remaining orthogonal directions not defined by the parents
    • setEta

      public void setEta(double eta)
      Sets the standard deviation of the normal distribution controlling the spread of solutions in the remaining orthogonal directions not defined by the parents. The default value is 0.35.
      Parameters:
      eta - the standard deviation value
    • evolve

      public Solution[] evolve(Solution[] parents)
      Description copied from interface: Variation
      Evolves one or more parent solutions (specified by getArity) and produces one or more child solutions. By contract, the parents must not be modified. The copy constructor should be used to create copies of the parents with these copies subsequently modified.
      Parameters:
      parents - the array of parent solutions
      Returns:
      an array of child solutions
    • undx

      public Solution undx(Solution[] parents)
      Returns one randomly-generated offspring produced by this operator.
      Parameters:
      parents - the parent solutions
      Returns:
      one randomly-generated offspring produced by this operator.