Package org.apache.commons.math3.genetics

# Class GeneticAlgorithm

java.lang.Object
org.apache.commons.math3.genetics.GeneticAlgorithm

public class GeneticAlgorithm extends Object
Implementation of a genetic algorithm. All factors that govern the operation of the algorithm can be configured for a specific problem.

Since:
  2.0

## Constructor Summary

Constructors
Constructor
Description
`GeneticAlgorithm(CrossoverPolicy crossoverPolicy, double crossoverRate, MutationPolicy mutationPolicy, double mutationRate, SelectionPolicy selectionPolicy)`
Create a new genetic algorithm.

## Method Summary

Modifier and Type
Method
Description
`Population`
`evolve(Population initial, StoppingCondition condition)`
Evolve the given population.
`CrossoverPolicy`
`getCrossoverPolicy()`
Returns the crossover policy.
`double`
`getCrossoverRate()`
Returns the crossover rate.
`int`
`getGenerationsEvolved()`
Returns the number of generations evolved to reach `StoppingCondition` in the last run.
`MutationPolicy`
`getMutationPolicy()`
Returns the mutation policy.
`double`
`getMutationRate()`
Returns the mutation rate.
`static RandomGenerator`
`getRandomGenerator()`
Returns the (static) random generator.
`SelectionPolicy`
`getSelectionPolicy()`
Returns the selection policy.
`Population`
`nextGeneration(Population current)`
Evolve the given population into the next generation.
`static void`
`setRandomGenerator(RandomGenerator random)`
Set the (static) random generator.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### GeneticAlgorithm

public GeneticAlgorithm(CrossoverPolicy crossoverPolicy, double crossoverRate, MutationPolicy mutationPolicy, double mutationRate, SelectionPolicy selectionPolicy) throws OutOfRangeException
Create a new genetic algorithm.

Parameters:
  `crossoverPolicy` - The `CrossoverPolicy`
  `crossoverRate` - The crossover rate as a percentage (0-1 inclusive)
  `mutationPolicy` - The `MutationPolicy`
  `mutationRate` - The mutation rate as a percentage (0-1 inclusive)
  `selectionPolicy` - The `SelectionPolicy`
Throws:
  `OutOfRangeException` - if the crossover or mutation rate is outside the [0, 1] range

## Method Details

### setRandomGenerator

public static void setRandomGenerator(RandomGenerator random)
Set the (static) random generator.

Parameters:
  `random` - random generator

### getRandomGenerator

public static RandomGenerator getRandomGenerator()
Returns the (static) random generator.

Returns:
  the static random generator shared by GA implementation classes

### evolve

public Population evolve(Population initial, StoppingCondition condition)
Evolve the given population. Evolution stops when the stopping condition is satisfied. Updates the `generationsEvolved` property with the number of generations evolved before the StoppingCondition is satisfied.

Parameters:
  `initial` - the initial, seed population.
  `condition` - the stopping condition used to stop evolution.
Returns:
  the population that satisfies the stopping condition.

### nextGeneration

public Population nextGeneration(Population current)
Evolve the given population into the next generation.

1. Get nextGeneration population to fill from `current` generation, using its nextGeneration method
2. Loop until new generation is filled:

- Apply configured SelectionPolicy to select a pair of parents from `current`
- With probability = `getCrossoverRate()`, apply configured `CrossoverPolicy` to parents
- With probability = `getMutationRate()`, apply configured `MutationPolicy` to each of the offspring
- Add offspring individually to nextGeneration, space permitting

3. Return nextGeneration

Parameters:
  `current` - the current population.
Returns:
  the population for the next generation.

### getCrossoverPolicy

public CrossoverPolicy getCrossoverPolicy()
Returns the crossover policy.

Returns:
  crossover policy

### getCrossoverRate

public double getCrossoverRate()
Returns the crossover rate.

Returns:
  crossover rate

### getMutationPolicy

public MutationPolicy getMutationPolicy()
Returns the mutation policy.

Returns:
  mutation policy

### getMutationRate

public double getMutationRate()
Returns the mutation rate.

Returns:
  mutation rate

### getSelectionPolicy

public SelectionPolicy getSelectionPolicy()
Returns the selection policy.

Returns:
  selection policy

### getGenerationsEvolved

public int getGenerationsEvolved()
Returns the number of generations evolved to reach `StoppingCondition` in the last run.

Returns:
  number of generations evolved
Since:
  2.1