Class GeneticAlgorithm
java.lang.Object
org.apache.commons.math3.genetics.GeneticAlgorithm
Implementation of a genetic algorithm. All factors that govern the operation
of the algorithm can be configured for a specific problem.
- Since:
- 2.0
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final CrossoverPolicy
the crossover policy used by the algorithm.private final double
the rate of crossover for the algorithm.private int
the number of generations evolved to reachStoppingCondition
in the last run.private final MutationPolicy
the mutation policy used by the algorithm.private final double
the rate of mutation for the algorithm.private static RandomGenerator
Static random number generator shared by GA implementation classes.private final SelectionPolicy
the selection policy used by the algorithm. -
Constructor Summary
ConstructorsConstructorDescriptionGeneticAlgorithm
(CrossoverPolicy crossoverPolicy, double crossoverRate, MutationPolicy mutationPolicy, double mutationRate, SelectionPolicy selectionPolicy) Create a new genetic algorithm. -
Method Summary
Modifier and TypeMethodDescriptionevolve
(Population initial, StoppingCondition condition) Evolve the given population.Returns the crossover policy.double
Returns the crossover rate.int
Returns the number of generations evolved to reachStoppingCondition
in the last run.Returns the mutation policy.double
Returns the mutation rate.static RandomGenerator
Returns the (static) random generator.Returns the selection policy.nextGeneration
(Population current) Evolve the given population into the next generation.static void
setRandomGenerator
(RandomGenerator random) Set the (static) random generator.
-
Field Details
-
randomGenerator
Static random number generator shared by GA implementation classes. Set the randomGenerator seed to get reproducible results. UsesetRandomGenerator(RandomGenerator)
to supply an alternative to the default JDK-provided PRNG. -
crossoverPolicy
the crossover policy used by the algorithm. -
crossoverRate
private final double crossoverRatethe rate of crossover for the algorithm. -
mutationPolicy
the mutation policy used by the algorithm. -
mutationRate
private final double mutationRatethe rate of mutation for the algorithm. -
selectionPolicy
the selection policy used by the algorithm. -
generationsEvolved
private int generationsEvolvedthe number of generations evolved to reachStoppingCondition
in the last run.
-
-
Constructor Details
-
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 Details
-
setRandomGenerator
Set the (static) random generator.- Parameters:
random
- random generator
-
getRandomGenerator
Returns the (static) random generator.- Returns:
- the static random generator shared by GA implementation classes
-
evolve
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
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
- Return nextGeneration
- Parameters:
current
- the current population.- Returns:
- the population for the next generation.
- Get nextGeneration population to fill from
-
getCrossoverPolicy
Returns the crossover policy.- Returns:
- crossover policy
-
getCrossoverRate
public double getCrossoverRate()Returns the crossover rate.- Returns:
- crossover rate
-
getMutationPolicy
Returns the mutation policy.- Returns:
- mutation policy
-
getMutationRate
public double getMutationRate()Returns the mutation rate.- Returns:
- mutation rate
-
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
-