Class UNDX
java.lang.Object
org.moeaframework.core.operator.real.MultiParentVariation
org.moeaframework.core.operator.real.UNDX
- All Implemented Interfaces:
Configurable
,Variation
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.
References:
- 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.
- 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
ConstructorDescriptionUNDX()
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 TypeMethodDescriptionSolution[]
Evolves one or more parent solutions (specified bygetArity
) and produces one or more child solutions.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.getName()
Returns the name of this variation operator.double
getZeta()
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.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 parameterszeta=0.5
andeta=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 parameterszeta=0.5
andeta=0.35
are used as suggested by Kita et al. (1999).- Parameters:
numberOfParents
- the number of parents required by this operatornumberOfOffspring
- 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 parameterssigma_zeta=0.5
andsigma_eta=0.35
are used as suggested by Kita et al. (1999).- Parameters:
numberOfParents
- the number of parents required by this operatornumberOfOffspring
- the number of offspring produced by this operatorzeta
- the standard deviation of the normal distribution controlling the spread of solutions in the orthogonal directions defined by the parentseta
- 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
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 is0.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 is0.35
.- Parameters:
eta
- the standard deviation value
-
evolve
Description copied from interface:Variation
Evolves one or more parent solutions (specified bygetArity
) 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
Returns one randomly-generated offspring produced by this operator.- Parameters:
parents
- the parent solutions- Returns:
- one randomly-generated offspring produced by this operator.
-