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. |
CVS_REVISION
static final java.lang.String CVS_REVISION
- String containing the CVS revision. Read out via reflection!
- See Also:
- Constant Field Values
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 issuesa_candidateChromosomes - the pool of chromosomes that have been
selected for the next evolved population- Since:
- 2.0 (earlier versions referenced the Configuration object)