T
- generic type of the AbstractListChromosome
s for crossoverpublic class CycleCrossover<T> extends Object implements CrossoverPolicy
To form a cycle the following procedure is applied:
p1 = (8 4 7 3 6 2 5 1 9 0) X c1 = (8 1 2 3 4 5 6 7 9 0) p2 = (0 1 2 3 4 5 6 7 8 9) X c2 = (0 4 7 3 6 2 5 1 8 9) cycle 1: 8 0 9 cycle 2: 4 1 7 2 5 6 cycle 3: 3This policy works only on
AbstractListChromosome
, and therefore it
is parameterized by T. Moreover, the chromosomes must have same lengths.Constructor and Description |
---|
CycleCrossover()
Creates a new
CycleCrossover policy. |
CycleCrossover(boolean randomStart)
Creates a new
CycleCrossover policy using the given randomStart behavior. |
Modifier and Type | Method and Description |
---|---|
ChromosomePair |
crossover(Chromosome first,
Chromosome second)
Perform a crossover operation on the given chromosomes.
|
boolean |
isRandomStart()
Returns whether the starting index is chosen randomly or set to zero.
|
protected ChromosomePair |
mate(AbstractListChromosome<T> first,
AbstractListChromosome<T> second)
Helper for
crossover(Chromosome, Chromosome) . |
public CycleCrossover()
CycleCrossover
policy.public CycleCrossover(boolean randomStart)
CycleCrossover
policy using the given randomStart
behavior.randomStart
- whether the start index shall be chosen randomly or be set to 0public boolean isRandomStart()
true
if the starting index is chosen randomly, false
otherwisepublic ChromosomePair crossover(Chromosome first, Chromosome second) throws DimensionMismatchException, MathIllegalArgumentException
crossover
in interface CrossoverPolicy
first
- the first chromosome.second
- the second chromosome.MathIllegalArgumentException
- if the chromosomes are not an instance of AbstractListChromosome
DimensionMismatchException
- if the length of the two chromosomes is differentprotected ChromosomePair mate(AbstractListChromosome<T> first, AbstractListChromosome<T> second) throws DimensionMismatchException
crossover(Chromosome, Chromosome)
. Performs the actual crossover.first
- the first chromosomesecond
- the second chromosomeDimensionMismatchException
- if the length of the two chromosomes is differentCopyright © 2003–2016 The Apache Software Foundation. All rights reserved.