org.apache.commons.math3.genetics
Class OnePointCrossover<T>

java.lang.Object
  extended by org.apache.commons.math3.genetics.OnePointCrossover<T>
Type Parameters:
T - generic type of the AbstractListChromosomes for crossover
All Implemented Interfaces:
CrossoverPolicy

public class OnePointCrossover<T>
extends 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    c2 = (0 1 1 0 1 0  | 0 1 1)
 
This policy works only on AbstractListChromosome, and therefore it is parameterized by T. Moreover, the chromosomes must have same lengths.

Since:
2.0
Version:
$Id: OnePointCrossover.java 1416643 2012-12-03 19:37:14Z tn $

Constructor Summary
OnePointCrossover()
           
 
Method Summary
 ChromosomePair crossover(Chromosome first, Chromosome second)
          Performs one point crossover.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

OnePointCrossover

public OnePointCrossover()
Method Detail

crossover

public ChromosomePair crossover(Chromosome first,
                                Chromosome second)
                         throws DimensionMismatchException,
                                MathIllegalArgumentException
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    c2 = (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)
Throws:
MathIllegalArgumentException - iff one of the chromosomes is not an instance of AbstractListChromosome
DimensionMismatchException - if the length of the two chromosomes is different


Copyright © 2003-2012 The Apache Software Foundation. All Rights Reserved.