Class ObjectArrayCrossover<T>
- java.lang.Object
-
- org.uncommons.watchmaker.framework.operators.AbstractCrossover<T[]>
-
- org.uncommons.watchmaker.framework.operators.ObjectArrayCrossover<T>
-
- Type Parameters:
T
- The component type of the arrays that are being evolved.
- All Implemented Interfaces:
EvolutionaryOperator<T[]>
public class ObjectArrayCrossover<T> extends AbstractCrossover<T[]>
Cross-over with a configurable number of points (fixed or random) for arrays of reference types.
-
-
Constructor Summary
Constructors Constructor Description ObjectArrayCrossover()
Default is single-point cross-over, applied to all parents.ObjectArrayCrossover(int crossoverPoints)
Cross-over with a fixed number of cross-over points.ObjectArrayCrossover(int crossoverPoints, Probability crossoverProbability)
Cross-over with a fixed number of cross-over points.ObjectArrayCrossover(NumberGenerator<Integer> crossoverPointsVariable)
Cross-over with a variable number of cross-over points.ObjectArrayCrossover(NumberGenerator<Integer> crossoverPointsVariable, NumberGenerator<Probability> crossoverProbabilityVariable)
Sets up a cross-over implementation that uses a variable number of cross-over points.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected List<T[]>
mate(T[] parent1, T[] parent2, int numberOfCrossoverPoints, Random rng)
Perform cross-over on a pair of parents to generate a pair of offspring.-
Methods inherited from class org.uncommons.watchmaker.framework.operators.AbstractCrossover
apply
-
-
-
-
Constructor Detail
-
ObjectArrayCrossover
public ObjectArrayCrossover()
Default is single-point cross-over, applied to all parents.
-
ObjectArrayCrossover
public ObjectArrayCrossover(int crossoverPoints)
Cross-over with a fixed number of cross-over points.- Parameters:
crossoverPoints
- The constant number of cross-over points to use for all cross-over operations.
-
ObjectArrayCrossover
public ObjectArrayCrossover(int crossoverPoints, Probability crossoverProbability)
Cross-over with a fixed number of cross-over points. Cross-over may or may not be applied to a given pair of parents depending on thecrossoverProbability
.- Parameters:
crossoverPoints
- The constant number of cross-over points to use for all cross-over operations.crossoverProbability
- The probability that, once selected, a pair of parents will be subjected to cross-over rather than being copied, unchanged, into the output population.
-
ObjectArrayCrossover
public ObjectArrayCrossover(NumberGenerator<Integer> crossoverPointsVariable)
Cross-over with a variable number of cross-over points.- Parameters:
crossoverPointsVariable
- A random variable that provides a number of cross-over points for each cross-over operation.
-
ObjectArrayCrossover
public ObjectArrayCrossover(NumberGenerator<Integer> crossoverPointsVariable, NumberGenerator<Probability> crossoverProbabilityVariable)
Sets up a cross-over implementation that uses a variable number of cross-over points. Cross-over is applied to a proportion of selected parent pairs, with the remainder copied unchanged into the output population. The size of this evolved proportion is controlled by thecrossoverProbabilityVariable
parameter.- Parameters:
crossoverPointsVariable
- A variable that provides a (possibly constant, possibly random) number of cross-over points for each cross-over operation.crossoverProbabilityVariable
- A variable that controls the probability that, once selected, a pair of parents will be subjected to cross-over rather than being copied, unchanged, into the output population.
-
-
Method Detail
-
mate
protected List<T[]> mate(T[] parent1, T[] parent2, int numberOfCrossoverPoints, Random rng)
Perform cross-over on a pair of parents to generate a pair of offspring.- Specified by:
mate
in classAbstractCrossover<T[]>
- Parameters:
parent1
- One of two individuals that provides the source material for generating offspring.parent2
- One of two individuals that provides the source material for generating offspring.numberOfCrossoverPoints
- The number of cross-overs performed on the two parents.rng
- A source of randomness used to determine the location of cross-over points.- Returns:
- A list containing two evolved offspring.
-
-