Class ParentCentricCrossover
java.lang.Object
org.uma.jmetal.operator.crossover.impl.ParentCentricCrossover
- All Implemented Interfaces:
Serializable,CrossoverOperator<DoubleSolution>,Operator<List<DoubleSolution>,List<DoubleSolution>>
This class implements the Parent-Centric Recombination (PCX) operator for real-valued solutions.
PCX is a multi-parent crossover operator that generates offspring based on a normal distribution
centered around a parent solution, with spread controlled by the distribution of other parents.
Reference: Deb, K., Anand, A., invalid input: '&' Joshi, D. (2002). A computationally efficient evolutionary algorithm for real-parameter optimization. Evolutionary computation, 10(4), 371-395.
- Author:
- Antonio J. Nebro
- See Also:
-
Constructor Summary
ConstructorsConstructorDescriptionParentCentricCrossover(double crossoverProbability) Constructor with default parameter valuesParentCentricCrossover(double crossoverProbability, double zeta, double eta, RepairDoubleSolution solutionRepair) Constructor with all parametersParentCentricCrossover(double crossoverProbability, double zeta, double eta, RepairDoubleSolution solutionRepair, RandomGenerator<Double> randomGenerator) Constructor with all parameters including random generator (for testing) -
Method Summary
Modifier and TypeMethodDescriptiondoubledoubleeta()execute(List<DoubleSolution> solutions) intintdoublezeta()
-
Constructor Details
-
ParentCentricCrossover
public ParentCentricCrossover(double crossoverProbability) Constructor with default parameter values- Parameters:
crossoverProbability- Crossover probability (must be in [0,1])
-
ParentCentricCrossover
public ParentCentricCrossover(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, 0.5])eta- Controls the spread in orthogonal directions (typically in [0.1, 0.5])solutionRepair- Strategy for repairing solutions
-
ParentCentricCrossover
public ParentCentricCrossover(double crossoverProbability, double zeta, double eta, RepairDoubleSolution solutionRepair, RandomGenerator<Double> randomGenerator) Constructor with all parameters including random generator (for testing)- Parameters:
crossoverProbability- Crossover probability (must be in [0,1])zeta- Controls the spread along the line connecting parentseta- Controls the spread in orthogonal directionssolutionRepair- Strategy for repairing solutionsrandomGenerator- Random number generator
-
-
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 (spread along the line connecting parents)
-
eta
public double eta()- Returns:
- The eta parameter (spread in orthogonal directions)
-