Class GeneticAlgorithm
- java.lang.Object
-
- org.apache.commons.math4.legacy.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
All Methods Static Methods Instance Methods Concrete Methods 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 reachStoppingCondition
in the last run.MutationPolicy
getMutationPolicy()
Returns the mutation policy.double
getMutationRate()
Returns the mutation rate.static org.apache.commons.rng.UniformRandomProvider
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(org.apache.commons.rng.UniformRandomProvider random)
Set the (static) random generator.
-
-
-
Constructor Detail
-
GeneticAlgorithm
public GeneticAlgorithm(CrossoverPolicy crossoverPolicy, double crossoverRate, MutationPolicy mutationPolicy, double mutationRate, SelectionPolicy selectionPolicy) throws OutOfRangeException
Create a new genetic algorithm.- Parameters:
crossoverPolicy
- TheCrossoverPolicy
crossoverRate
- The crossover rate as a percentage (0-1 inclusive)mutationPolicy
- TheMutationPolicy
mutationRate
- The mutation rate as a percentage (0-1 inclusive)selectionPolicy
- TheSelectionPolicy
- Throws:
OutOfRangeException
- if the crossover or mutation rate is outside the [0, 1] range
-
-
Method Detail
-
setRandomGenerator
public static void setRandomGenerator(org.apache.commons.rng.UniformRandomProvider random)
Set the (static) random generator.- Parameters:
random
- random generator
-
getRandomGenerator
public static org.apache.commons.rng.UniformRandomProvider 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 thegenerationsEvolved
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.- Get nextGeneration population to fill from
current
generation, using its nextGeneration method - Loop until new generation is filled:
- Apply configured SelectionPolicy to select a pair of parents
from
current
- With probability =
getCrossoverRate()
, apply configuredCrossoverPolicy
to parents - With probability =
getMutationRate()
, apply configuredMutationPolicy
to each of the offspring - Add offspring individually to nextGeneration, space permitting
- Apply configured SelectionPolicy to select a pair of parents
from
- Return nextGeneration
- Parameters:
current
- the current population.- Returns:
- the population for the next generation.
- Get nextGeneration population to fill from
-
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 reachStoppingCondition
in the last run.- Returns:
- number of generations evolved
- Since:
- 2.1
-
-