Class UnimodalNormalDistributionCrossover
java.lang.Object
org.uma.jmetal.operator.crossover.impl.UnimodalNormalDistributionCrossover
- All Implemented Interfaces:
Serializable,CrossoverOperator<DoubleSolution>,Operator<List<DoubleSolution>,List<DoubleSolution>>
public class UnimodalNormalDistributionCrossover
extends Object
implements CrossoverOperator<DoubleSolution>
This class implements the Unimodal Normal Distribution Crossover (UNDX) operator for real-valued
solutions. UNDX is a multi-parent crossover operator that generates offspring based on the normal
distribution defined by three parent solutions. It is particularly effective for continuous
optimization problems as it preserves the statistics of the population.
Reference: Onikura, T., invalid input: '&' Kobayashi, S. (1999). Extended UNIMODAL DISTRIBUTION CROSSOVER for REAL-CODED GENETIC ALGORITHMS. In Proceedings of the 1999 Congress on Evolutionary Computation-CEC99 (Cat. No. 99TH8406) (Vol. 2, pp. 1581-1588). IEEE.
- Author:
- Antonio J. Nebro
- See Also:
-
Constructor Summary
ConstructorsConstructorDescriptionUnimodalNormalDistributionCrossover(double crossoverProbability) Constructor with default parameter valuesUnimodalNormalDistributionCrossover(double crossoverProbability, double zeta, double eta, RepairDoubleSolution solutionRepair) Constructor with all parametersUnimodalNormalDistributionCrossover(double crossoverProbability, double zeta, double eta, RepairDoubleSolution solutionRepair, RandomGenerator<Double> randomGenerator) Constructor with all parameters including random generator -
Method Summary
Modifier and TypeMethodDescriptiondoubledoubleeta()execute(List<DoubleSolution> solutions) intintdoublezeta()
-
Constructor Details
-
UnimodalNormalDistributionCrossover
public UnimodalNormalDistributionCrossover(double crossoverProbability) Constructor with default parameter values- Parameters:
crossoverProbability- Crossover probability (must be in [0,1])
-
UnimodalNormalDistributionCrossover
public UnimodalNormalDistributionCrossover(double crossoverProbability, double zeta, double eta, RepairDoubleSolution solutionRepair) Constructor with all parameters- Parameters:
crossoverProbability- Crossover probability (must be in [0,1])zeta- Controls the spread along the line connecting parents (typically in [0.1, 1.0], where smaller values produce offspring closer to the parents)eta- Controls the spread in the orthogonal direction (typically in [0.1, 0.5], where smaller values produce more concentrated distributions)solutionRepair- Strategy for repairing solutions
-
UnimodalNormalDistributionCrossover
public UnimodalNormalDistributionCrossover(double crossoverProbability, double zeta, double eta, RepairDoubleSolution solutionRepair, RandomGenerator<Double> randomGenerator) Constructor with all parameters including random generator- Parameters:
crossoverProbability- Crossover probabilityzeta- Controls the spread along the line connecting parentseta- Controls the spread in the orthogonal directionsolutionRepair- Strategy for repairing solutionsrandomGenerator- Random number generator- Throws:
IllegalArgumentException- if crossoverProbability is not in [0,1], or if zeta or eta are negative
-
-
Method Details
-
execute
- Specified by:
executein interfaceOperator<List<DoubleSolution>,List<DoubleSolution>> - Parameters:
solutions- The data to process
-
crossoverProbability
public double crossoverProbability()- Specified by:
crossoverProbabilityin interfaceCrossoverOperator<DoubleSolution>
-
numberOfRequiredParents
public int numberOfRequiredParents()- Specified by:
numberOfRequiredParentsin interfaceCrossoverOperator<DoubleSolution>
-
numberOfGeneratedChildren
public int numberOfGeneratedChildren()- Specified by:
numberOfGeneratedChildrenin interfaceCrossoverOperator<DoubleSolution>
-
zeta
public double zeta()- Returns:
- The zeta parameter
-
eta
public double eta()- Returns:
- The eta parameter
-