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()