Package io.jenetics

Class UniformCrossover<G extends Gene<?,​G>,​C extends Comparable<? super C>>

  • All Implemented Interfaces:
    Alterer<G,​C>

    public class UniformCrossover<G extends Gene<?,​G>,​C extends Comparable<? super C>>
    extends Crossover<G,​C>
    The uniform crossover uses swaps single genes between two chromosomes, instead of whole ranges as in single- and multi-point crossover.
     
     +---+---+---+---+---+---+---+
     | 1 | 2 | 3 | 4 | 6 | 7 | 8 |
     +-+-+---+-+-+-+-+---+-+-+---+
       |       |   |       |        swapping
     +-+-+---+-+-+-+-+---+-+-+---+
     | a | b | c | d | e | f | g |
     +---+---+---+---+---+---+---+
     
    The probability that two genes are swapped is controlled by the swap-probability (swapProbability()), whereas the probability that a given individual is selected for crossover is defined by the crossover-probability (AbstractAlterer.probability()).
    Since:
    3.7
    Version:
    6.0
    See Also:
    Wikipedia: Uniform crossover
    • Constructor Detail

      • UniformCrossover

        public UniformCrossover​(double crossoverProbability,
                                double swapProbability)
        Create a new universal crossover instance.
        Parameters:
        crossoverProbability - the recombination probability as defined in Crossover(double). This is the probability that a given individual is selected for crossover.
        swapProbability - the probability for swapping a given gene of a chromosome
        Throws:
        IllegalArgumentException - if the probabilities are not in the valid range of [0, 1]
      • UniformCrossover

        public UniformCrossover​(double crossoverProbability)
        Create a new universal crossover instance. The swapProbability is set to Alterer.DEFAULT_ALTER_PROBABILITY.
        Parameters:
        crossoverProbability - the recombination probability as defined in Crossover(double). This is the probability that a given individual is selected for crossover.
        Throws:
        IllegalArgumentException - if the probabilities are not in the valid range of [0, 1]
    • Method Detail

      • swapProbability

        public double swapProbability()
        Return the probability for swapping genes of a chromosome.
        Returns:
        the probability for swapping genes of a chromosome
      • crossover

        protected int crossover​(MSeq<G> that,
                                MSeq<G> other)
        Description copied from class: Crossover
        Template method which performs the crossover. The arguments given are mutable non null arrays of the same length.
        Specified by:
        crossover in class Crossover<G extends Gene<?,​G>,​C extends Comparable<? super C>>
        Parameters:
        that - the genes of the first chromosome
        other - the genes of the other chromosome
        Returns:
        the number of altered genes