Package org.apache.commons.math3.genetics

# Class OnePointCrossover<T>

java.lang.Object
org.apache.commons.math3.genetics.OnePointCrossover<T>

Type Parameters:
  `T` - generic type of the `AbstractListChromosome`s 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

## Constructor Summary

Constructors
Constructor
Description
`OnePointCrossover()`

## Method Summary

Modifier and Type
Method
Description
`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 Details

### OnePointCrossover

public OnePointCrossover()

## Method Details

### 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