## org.biojavax.ga.functions
Interface CrossOverFunction

All Superinterfaces:
  Changeable

All Known Implementing Classes:
  AbstractCrossOverFunction, CrossOverFunction.NoCross, OrderCrossover, SimpleCrossOverFunction

    public interface CrossOverFunction

extends Changeable

Crosses two chromosomes. The basic usage of the class would be something like choosing two chromosomes that you want to cross over and setting these with the `setChromosomePair` method. Next you would call one of the `performCrossOver` methods to do the crossing and finally you would retreive the chromsome pair with the `getChromosomes` method.

Since:
  1.5
Version:
  1.0
Author:
  Mark Schreiber

Nested Class Summary
`static class` `CrossOverFunction.NoCross` A place holder CrossOverFunction that doesn't perform cross overs

Field Summary
`static ChangeType` `CROSS_PROB`
`static double[]` `DEFAULT_CROSS_PROB`
`static int` `DEFAULT_MAX_CROSS`
`static ChangeType` `MAX_CROSSES`
`static CrossOverFunction` `NO_CROSS`

Method Summary
`double[]` `getCrossOverProbs()`
`int` `getMaxCrossOvers()`
`GACrossResult` `performCrossOver(SymbolList chromA, SymbolList chromB)` Performs a cross between the pair of chromosomes
`void` `setCrossOverProbs(double[] crossOverProbs)` Sets the probability of crossing at each base.
`void` `setMaxCrossOvers(int maxCrossOvers)` Sets an upper limit on the number of crosses.

Methods inherited from interface org.biojava.utils.Changeable
`addChangeListener, addChangeListener, isUnchanging, removeChangeListener, removeChangeListener`

Field Detail

### DEFAULT_MAX_CROSS

    static final int DEFAULT_MAX_CROSS

See Also:
  Constant Field Values

### DEFAULT_CROSS_PROB

    static final double[] DEFAULT_CROSS_PROB

### MAX_CROSSES

    static final ChangeType MAX_CROSSES

### CROSS_PROB

    static final ChangeType CROSS_PROB

### NO_CROSS

    static final CrossOverFunction NO_CROSS

Method Detail

### performCrossOver

    GACrossResult performCrossOver(SymbolList chromA,
                                   SymbolList chromB)
                                   throws ChangeVetoException

  Performs a cross between the pair of chromosomes

  Parameters:
    `chromA` - The first chromosome in the cross
    `chromB` - The second chromosome in the cross
  Returns:
    A `GACross` that holds the results of the cross
  Throws:
    `ChangeVetoException` - if the chromosomes are unmodifiable

### setMaxCrossOvers

    void setMaxCrossOvers(int maxCrossOvers)
                          throws ChangeVetoException

  Sets an upper limit on the number of crosses. Its up to the implementation to decide what to do when the limit is reached although a good convention would be to keep only the first N crosses from the left end (5' end) of the sequence. By convention the default upper limit is DEFAULT_MAX_CROSS (eg infinite). This value should be used as the default by all implementations.

  Parameters:
    `maxCrossOvers` - the limit on crosses
  Throws:
    `ChangeVetoException` - if a ChangeListener vetoes this change

### getMaxCrossOvers

    int getMaxCrossOvers()

  Returns:
    the limit on crosses.

### setCrossOverProbs

    void setCrossOverProbs(double[] crossOverProbs)
                           throws ChangeVetoException

  Sets the probability of crossing at each base. Each position in the array corresponds to a position in the sequences to be crossed. The probability of a cross occuring after position 1 in the `SymbolList` is given by `crossOverProbs[1]`. `CrossOverProbs[0]` is effectively redundant as the cross would occur before the 1st position in the `SymbolList`. By convention if the array is shorter than the SymbolList it is being applied to then the last value in the array will be applied to every subsequent residue. The default value in all implementations should be `DEFAULT_CROSS_PROB`

  Parameters:
    `crossOverProbs` - an array of doubles giving the probability of a cross occuring at any place.
  Throws:
    `if` - a ChangeListener vetoes the change
    `ChangeVetoException`

### getCrossOverProbs

    double[] getCrossOverProbs()