org.apache.commons.math.genetics
Class GeneticAlgorithm

java.lang.Object
  extended by org.apache.commons.math.genetics.GeneticAlgorithm

public class GeneticAlgorithm
extends java.lang.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
Version:
$Revision: 799857 $ $Date: 2009-08-01 09:07:12 -0400 (Sat, 01 Aug 2009) $

Field Summary
private  CrossoverPolicy crossoverPolicy
          the crossover policy used by the algorithm.
private  double crossoverRate
          the rate of crossover for the algorithm.
private  MutationPolicy mutationPolicy
          the mutation policy used by the algorithm.
private  double mutationRate
          the rate of mutation for the algorithm.
private static RandomGenerator randomGenerator
          Static random number generator shared by GA implementation classes.
private  SelectionPolicy selectionPolicy
          the selection policy used by the algorithm.
 
Constructor Summary
GeneticAlgorithm(CrossoverPolicy crossoverPolicy, double crossoverRate, MutationPolicy mutationPolicy, double mutationRate, SelectionPolicy selectionPolicy)
           
 
Method Summary
 Population evolve(Population initial, StoppingCondition condition)
          Evolve the given population.
 CrossoverPolicy getCrossoverPolicy()
          Returns the crossover policy.
 double getCrossoverRate()
          Returns the crossover rate.
 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
 

Field Detail

randomGenerator

private static RandomGenerator randomGenerator
Static random number generator shared by GA implementation classes. Set the randomGenerator seed to get reproducible results. Use setRandomGenerator(RandomGenerator) to supply an alternative to the default JDK-provided PRNG.


crossoverPolicy

private final CrossoverPolicy crossoverPolicy
the crossover policy used by the algorithm.


crossoverRate

private final double crossoverRate
the rate of crossover for the algorithm.


mutationPolicy

private final MutationPolicy mutationPolicy
the mutation policy used by the algorithm.


mutationRate

private final double mutationRate
the rate of mutation for the algorithm.


selectionPolicy

private final SelectionPolicy selectionPolicy
the selection policy used by the algorithm.

Constructor Detail

GeneticAlgorithm

public GeneticAlgorithm(CrossoverPolicy crossoverPolicy,
                        double crossoverRate,
                        MutationPolicy mutationPolicy,
                        double mutationRate,
                        SelectionPolicy selectionPolicy)
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
Method Detail

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.

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:
  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


Copyright (c) 2003-2009 Apache Software Foundation