|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.apache.commons.math3.genetics.UniformCrossover<T>
T
- generic type of the AbstractListChromosome
s for crossoverpublic class UniformCrossover<T>
Perform Uniform Crossover [UX] on the specified chromosomes. A fixed mixing ratio is used to combine genes from the first and second parents, e.g. using a ratio of 0.5 would result in approximately 50% of genes coming from each parent. This is typically a poor method of crossover, but empirical evidence suggests that it is more exploratory and results in a larger part of the problem space being searched.
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 Summary | |
---|---|
UniformCrossover(double ratio)
Creates a new UniformCrossover policy using the given mixing ratio. |
Method Summary | |
---|---|
ChromosomePair |
crossover(Chromosome first,
Chromosome second)
Perform a crossover operation on the given chromosomes. |
double |
getRatio()
Returns the mixing ratio used by this CrossoverPolicy . |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public UniformCrossover(double ratio) throws OutOfRangeException
UniformCrossover
policy using the given mixing ratio.
ratio
- the mixing ratio
OutOfRangeException
- if the mixing ratio is outside the [0, 1] rangeMethod Detail |
---|
public double getRatio()
CrossoverPolicy
.
public ChromosomePair crossover(Chromosome first, Chromosome second) throws DimensionMismatchException, 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
DimensionMismatchException
- if the length of the two chromosomes is different
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |