## org.biojavax.ga
Interface GeneticAlgorithm

All Superinterfaces:
  Changeable

All Known Implementing Classes:
  AbstractGeneticAlgorithm, SimpleGeneticAlgorithm

    public interface GeneticAlgorithm

extends Changeable

The class that runs the cycles of reproduction, evolution and selection, potentially on multiple `Population`s

Since:
  1.5
Version:
  1.1
Author:
  Mark Schreiber, Susanne Merz, Andreas Dräger

Field Summary
`static ChangeType` `CROSS_OVER_FUNCTION`
`static ChangeType` `FITNESS_FUNCTION`
`static ChangeType` `FUNCTION`
`static ChangeType` `MUTATION_FUNCTION`
`static ChangeType` `POPULATION`
`static ChangeType` `SELECTION_FUNCTION`

Method Summary
`CrossOverFunction` `getCrossOverFunction()`
`FitnessFunction` `getFitnessFunction()` Returns the fitness function, i.e.
`int` `getGeneration()`
`MutationFunction` `getMutationFunction()`
`Population` `getPopulation()` The registered `Population`
`SelectionFunction` `getSelectionFunction()`
`void` `run(GAStoppingCriteria stoppingCriteria)` Iterates the Algorithm until the stopping criteria are met.
`void` `setCrossOverFunction(CrossOverFunction function)` Changes the `CrossOverFunction` used to CrossOver Chromosomes
`void` `setFitnessFunction(FitnessFunction func)` The fitness function that will be used to compute the fitness of each organism.
`void` `setMutationFunction(MutationFunction function)` Sets the current `MutationFunction`
`void` `setPopulation(Population pop)` Sets the `Population` of `Organisms` to the Algorithm.
`void` `setSelectionFunction(SelectionFunction function)` Changes the `SelectionFunction` used to select candidates for the next generation

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

Field Detail

### FITNESS_FUNCTION

    static final ChangeType FITNESS_FUNCTION

### POPULATION

    static final ChangeType POPULATION

### FUNCTION

    static final ChangeType FUNCTION

### CROSS_OVER_FUNCTION

    static final ChangeType CROSS_OVER_FUNCTION

### MUTATION_FUNCTION

    static final ChangeType MUTATION_FUNCTION

### SELECTION_FUNCTION

    static final ChangeType SELECTION_FUNCTION

Method Detail

### setFitnessFunction

    void setFitnessFunction(FitnessFunction func)
                            throws ChangeVetoException

  The fitness function that will be used to compute the fitness of each organism.

  Parameters:
    `func` - the `FitnessFunction` to be used
  Throws:
    `ChangeVetoException` - if the change is vetoed.

### getFitnessFunction

    FitnessFunction getFitnessFunction()

  Returns the fitness function, i.e. the class that computes the fitness of each organism in a population.

  Returns:
    the fitness function

### setPopulation

    void setPopulation(Population pop)
                       throws ChangeVetoException

  Sets the `Population` of `Organisms` to the Algorithm.

  Parameters:
    `pop` - the population to add.
  Throws:
    `ChangeVetoException` - if new populations are not allowed.

### getPopulation

    Population getPopulation()

  The registered `Population`

  Returns:
    the `Population` being operated on.

### setSelectionFunction

    void setSelectionFunction(SelectionFunction function)
                              throws ChangeVetoException

  Changes the `SelectionFunction` used to select candidates for the next generation

  Parameters:
    `function` - a `SelectionFunction`
  Throws:
    `ChangeVetoException` - if the `SelectionFunction` is not allowed to be changed

### getSelectionFunction

    SelectionFunction getSelectionFunction()

  Returns:
    the current `SelectionFunction`

### setCrossOverFunction

    void setCrossOverFunction(CrossOverFunction function)
                              throws ChangeVetoException

  Changes the `CrossOverFunction` used to CrossOver Chromosomes

  Parameters:
    `function` - a `CrossOverFunction`
  Throws:
    `ChangeVetoException` - if the `CrossOverFunction` is not allowed to be changed

### getCrossOverFunction

    CrossOverFunction getCrossOverFunction()

  Returns:
    the current CrossOverFunction

### setMutationFunction

    void setMutationFunction(MutationFunction function)
                             throws ChangeVetoException

  Sets the current `MutationFunction`

  Parameters:
    `function` - a `MutationFunction`
  Throws:
    `ChangeVetoException` - if the `MutationFunction` change is Vetoed by a listener.

### getMutationFunction

    MutationFunction getMutationFunction()

  Returns:
    the current `MutationFunction`

### getGeneration

    int getGeneration()

  Returns:
    the Current generation number

### run

    void run(GAStoppingCriteria stoppingCriteria)
             throws ChangeVetoException,
                    IllegalAlphabetException,
                    IllegalSymbolException

  Iterates the Algorithm until the stopping criteria are met. For saftey implementations should synchronize on this method.

  Parameters:
    `stoppingCriteria` - determines when to stop.
  Throws:
    `ChangeVetoException` - if the Population being modified is locked
    `IllegalAlphabetException` - if the MutationFunction chosen attempts to modify a Symbol from one of the Chromosomes to a Symbol outside of its Alphabet.
    `IllegalSymbolException` - if the MutationFunction chosen is using the wrong Alphabet.