Class OnePointCrossover<T>

  • Type Parameters:
    T - generic type of the AbstractListChromosomes for crossover
    All Implemented Interfaces:
    CrossoverPolicy

    public class OnePointCrossover<T>
    extends java.lang.Object
    implements CrossoverPolicy
    One point crossover policy. A random crossover point is selected and the first part from each parent is copied to the corresponding child, and the second parts are copied crosswise. Example:
     -C- denotes a crossover point
                       -C-                                -C-
     p1 = (1 0 1 0 0 1  | 0 1 1)    X    p2 = (0 1 1 0 1 0  | 1 1 1)
             \------------/ \-----/              \------------/ \-----/
                ||         (*)                       ||        (**)
                VV         (**)                      VV        (*)
          /------------\ /-----\              /------------\ /-----\
     c1 = (1 0 1 0 0 1  | 1 1 1)    X    p2 = (0 1 1 0 1 0  | 0 1 1)
     
    This policy works only on AbstractListChromosome, and therefore it is parametrized by T. Moreover, the chromosomes must have same lengths.
    Since:
    2.0
    • Constructor Detail

      • OnePointCrossover

        public OnePointCrossover()
    • Method Detail

      • crossover

        public ChromosomePair crossover​(Chromosome first,
                                        Chromosome second)
        Performs one point crossover. A random crossover point is selected and the first part from each parent is copied to the corresponding child, and the second parts are copied crosswise. Example: -C- denotes a crossover point -C- -C- p1 = (1 0 1 0 0 1 | 0 1 1) X p2 = (0 1 1 0 1 0 | 1 1 1) \------------/ \-----/ \------------/ \-----/ || (*) || (**) VV (**) VV (*) /------------\ /-----\ /------------\ /-----\ c1 = (1 0 1 0 0 1 | 1 1 1) X p2 = (0 1 1 0 1 0 | 0 1 1)
        Specified by:
        crossover in interface CrossoverPolicy
        Parameters:
        first - first parent (p1)
        second - second parent (p2)
        Returns:
        pair of two children (c1,c2)