T
- generic type of the AbstractListChromosome
s for crossoverpublic class UniformCrossover<T> extends Object implements CrossoverPolicy
This crossover policy evaluates each gene of the parent chromosomes by chosing a
uniform random number p
in the range [0, 1]. If p
< ratio
,
the parent genes are swapped. This means with a ratio of 0.7, 30% of the genes from the
first parent and 70% from the second parent will be selected for the first offspring (and
vice versa for the second offspring).
This policy works only on AbstractListChromosome
, and therefore it
is parameterized by T. Moreover, the chromosomes must have same lengths.
Constructor and Description |
---|
UniformCrossover(double ratio)
Creates a new
UniformCrossover policy using the given mixing ratio. |
Modifier and Type | Method and Description |
---|---|
ChromosomePair |
crossover(Chromosome first,
Chromosome second)
Perform a crossover operation on the given chromosomes.
|
double |
getRatio()
Returns the mixing ratio used by this
CrossoverPolicy . |
public UniformCrossover(double ratio) throws MathIllegalArgumentException
UniformCrossover
policy using the given mixing ratio.ratio
- the mixing ratioMathIllegalArgumentException
- if the mixing ratio is outside the [0, 1] rangepublic double getRatio()
CrossoverPolicy
.public ChromosomePair crossover(Chromosome first, Chromosome second) throws MathIllegalArgumentException
crossover
in interface CrossoverPolicy
first
- the first chromosome.second
- the second chromosome.MathIllegalArgumentException
- iff one of the chromosomes is
not an instance of AbstractListChromosome
MathIllegalArgumentException
- if the length of the two chromosomes is differentCopyright © 2016 Hipparchus.org. All rights reserved.