|
JGAP | ||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectorg.jgap.BaseGeneticOperator
org.jgap.impl.MutationOperator
org.jgap.impl.RangedSwappingMutationOperator
public class RangedSwappingMutationOperator
Swaps the genes instead of mutating them. This kind of operator is required by Traveling Salesman Problem. Copied and modified from SwappingMutationOperator. This implementation takes a range as parameter and uses it to only swap genes that are -/+ range indexes away from the gene being mutated. This basically allows for local searches before propagating through the entire problem space. Seems to work much better/quicker than a random swapping across the entire chromosome.
| Field Summary |
|---|
| Fields inherited from class org.jgap.BaseGeneticOperator |
|---|
m_monitor, m_monitorActive |
| Constructor Summary | |
|---|---|
RangedSwappingMutationOperator()
Constructs a new instance of this operator. |
|
RangedSwappingMutationOperator(Configuration a_config,
int a_range)
|
|
RangedSwappingMutationOperator(Configuration a_config,
int a_desiredMutationRate,
int a_range)
Constructs a new instance of this MutationOperator with the given mutation rate. |
|
RangedSwappingMutationOperator(Configuration a_config,
IUniversalRateCalculator a_mutationRateCalculator,
int a_range)
Constructs a new instance of this operator with a specified mutation rate calculator, which results in dynamic mutation being turned on. |
|
| Method Summary | |
|---|---|
int |
getRange()
Gets the mutation range. |
int |
getStartOffset()
Gets a number of genes at the start of chromosome, that are excluded from the swapping. |
protected IChromosome |
operate(IChromosome a_chrom,
int a_rate,
RandomGenerator a_generator)
Operate on the given chromosome with the given mutation rate. |
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. |
protected Gene[] |
operate(RandomGenerator a_generator,
int a_target_gene,
Gene[] a_genes)
Operate on the given array of genes. |
void |
setRange(int a_range)
Sets the mutation range. |
void |
setStartOffset(int a_offset)
Sets a number of genes at the start of chromosome, that are excluded from the swapping. |
| Methods inherited from class org.jgap.impl.MutationOperator |
|---|
compareTo, equals, getMutationRate, getMutationRateCalc, setMutationRate, setMutationRateCalc |
| Methods inherited from class org.jgap.BaseGeneticOperator |
|---|
getConfiguration |
| Methods inherited from class java.lang.Object |
|---|
clone, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public RangedSwappingMutationOperator()
throws InvalidConfigurationException
Attention: The configuration used is the one set with the static method Genotype.setConfiguration.
InvalidConfigurationException
public RangedSwappingMutationOperator(Configuration a_config,
int a_range)
throws InvalidConfigurationException
a_config - the configuration to usea_range - the maximum range to use for considering genes to be
swapped. The range is computed as the difference of the indices between
two genes
InvalidConfigurationException
public RangedSwappingMutationOperator(Configuration a_config,
IUniversalRateCalculator a_mutationRateCalculator,
int a_range)
throws InvalidConfigurationException
a_config - the configuration to usea_mutationRateCalculator - calculator for dynamic mutation rate
computationa_range - the maximum range to use for considering genes to be
swapped. The range is computed as the difference of the indices between
two genes
InvalidConfigurationException
public RangedSwappingMutationOperator(Configuration a_config,
int a_desiredMutationRate,
int a_range)
throws InvalidConfigurationException
a_config - the configuration to usea_desiredMutationRate - desired rate of mutation, expressed as
the denominator of the 1 / X fraction. For example, 1000 would result
in 1/1000 genes being mutated on average. A mutation rate of zero disables
mutation entirelya_range - the maximum range to use for considering genes to be
swapped. The range is computed as the difference of the indices between
two genes
InvalidConfigurationException| Method Detail |
|---|
public void operate(Population a_population,
java.util.List a_candidateChromosomes)
GeneticOperator
operate in interface GeneticOperatoroperate in class MutationOperatora_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
protected IChromosome operate(IChromosome a_chrom,
int a_rate,
RandomGenerator a_generator)
a_chrom - chromosome to operatea_rate - mutation ratea_generator - random generator to use (must not be null)
protected Gene[] operate(RandomGenerator a_generator,
int a_target_gene,
Gene[] a_genes)
a_generator - a random number generator that may be needed to
perform a mutationa_target_gene - an index of gene in the chromosome that will mutatea_genes - the array of all genes in the chromosome
public void setStartOffset(int a_offset)
a_offset - the offset to setpublic int getStartOffset()
public void setRange(int a_range)
a_range - the offset to setpublic int getRange()
|
JGAP | ||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||