JGAP

org.jgap
Interface GeneticOperator

All Superinterfaces:
java.io.Serializable
All Known Subinterfaces:
IGPGeneticOperator
All Known Implementing Classes:
AlphaMutationOperator, AlphaOffMutationOperator, AveragingCrossoverOperator, BaseGeneticOperator, ColorMutationOperator, CrossoverOperator, GaussianMutationOperator, GreedyCrossover, InversionOperator, MutationOperator, PointMutationOperator, PolygonMutationOperator, RangedSwappingMutationOperator, SingleMutationOperator, SwappingMutationOperator, TwoWayMutationOperator

public interface GeneticOperator
extends java.io.Serializable

A GeneticOperator represents an operation that takes place on a population of Chromosomes during the evolution process. Examples of genetic operators include reproduction, crossover, and mutation. This interface contains only one method - operate() - which is responsible for performing the genetic operation on the current population of Chromosomes.

Since:
1.0

Field Summary
static java.lang.String CVS_REVISION
          String containing the CVS revision.
 
Method Summary
 void operate(Population a_population, java.util.List a_candidateChromosomes)
          The operate method will be invoked on each of the genetic operators referenced by the current Configuration object during the evolution phase.
 

Field Detail

CVS_REVISION

static final java.lang.String CVS_REVISION
String containing the CVS revision. Read out via reflection!

See Also:
Constant Field Values
Method Detail

operate

void operate(Population a_population,
             java.util.List a_candidateChromosomes)
The operate method will be invoked on each of the genetic operators referenced by the current Configuration object during the evolution phase. Operators are given an opportunity to run in the order that they are added to the Configuration. Implementations of this method may reference the population of Chromosomes as it was at the beginning of the evolutionary phase and/or they may instead reference the candidate Chromosomes, which are the results of prior genetic operators. In either case, only Chromosomes added to the list of candidate chromosomes will be considered for natural selection. The parameters a_population and a_candidateChromosomes may refer to the same list of chromosomes for performance issues. Thus would mean an in-place modification. In ealier JGAP versions it was suggested never modifying the input population. Please refer to implementations delivered with JGAP to get a picture of the way non-susceptible in-place modifications are possible. If wrongly done, ConcurrentModificationException could be risen when accessing the population by an iterator in a GeneticOperator. Or, if population.getChromosomes().size() was used inside a loop where chromosomes were added to the input population this could lead to an infinite loop in worst case.

Parameters:
a_population - the population of chromosomes from the current evolution prior to exposure to any genetic operators. Chromosomes in this array should not be modified. Please, notice, that the call in Genotype.evolve() to the implementations of GeneticOperator overgoes this due to performance issues
a_candidateChromosomes - the pool of chromosomes that have been selected for the next evolved population
Since:
2.0 (earlier versions referenced the Configuration object)

JGAP