|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectes.udc.gii.common.eaf.algorithm.operator.reproduction.ReproductionOperator
es.udc.gii.common.eaf.algorithm.operator.reproduction.mutation.MutationOperator
es.udc.gii.common.eaf.algorithm.operator.reproduction.mutation.de.DEMutationOperator
public class DEMutationOperator
For each target vector xi,G, i = 1,2,...,NP; a mutant vector is generated according to:
vi,G = xr1,G + F*(xr2,G -xr3,G)
With random indexes r1, r2, r3∈{1,2,...,NP}, integer, mutually different and F ≥ 0. The randomnly chosen integers r1, r2 and r3 are algo chosen to be different from the running index i, so that NP must be greater or equal to four to allow for this condition. F is a real and constant factor ∈ [0,2] wich controls the amplification of the differential variation (xr2,G - xr3,G).
The number of differential vectors could be greater or equan to one, this is controlled by the parameter diffVector wich indicates the number of differential pairs.
There are two different mutation strategies. The best mutation stategy uses the best individual of the population as xr1,G, wich is base vector. And the rand mutation strategy wich uses a random individual like its explained before. The parameter to indicate which one we will use is mutationStr. In the case of best mutation strategy we need a fitness comparator to indicate which is the best individual.
In order to increase the diversity of the perturbed parameter vectors,
crossover is introduced. Differents crossover schemes could be implemented.
You could find them at es.udc.gii.common.eaf.algorithm.operator.reproduction.mutation.de.crossover
.
To config this operator the xml code is:
<Operator>
<Class>es.udc.gii.common.eaf.algorithm.operator.reproduction.mutation.de.DEMutationOperator</Class>
<MutationStr>rand</MutationStr>
<Comparator>es.udc.gii.common.eaf.algorithm.fitness.comparator.LessFitnessComparator</Comparator>
<DiffVector>1</DiffVector>
<F>0.9</F>
<CrossOverScheme>es.udc.gii.common.eaf.algorithm.operator.reproduction.mutation.de.crossover.ExpCrossOverCheme</CrossOverScheme> </Operator>
Field Summary | |
---|---|
private CrossOverScheme |
crossOverScheme
In order to increase the divertity a CrossOver operator is introduced. |
private int |
diffVector
Number of difference vectors. |
private double |
F
F is a real constant factor (F > 0 and F in [0,2]) which controls de amplification of the differential variation. |
private DEMutationStrategy |
mutationStrategy
The strategy to choose the base vector. |
Constructor Summary | |
---|---|
DEMutationOperator()
Creates a new instance of DEMutationOperator |
Method Summary | |
---|---|
void |
configure(org.apache.commons.configuration.Configuration conf)
|
protected java.util.List<Individual> |
mutation(EvolutionaryAlgorithm algorithm,
Individual target)
|
Methods inherited from class es.udc.gii.common.eaf.algorithm.operator.reproduction.mutation.MutationOperator |
---|
getProbability, operate, setProbability |
Methods inherited from class es.udc.gii.common.eaf.algorithm.operator.reproduction.ReproductionOperator |
---|
checkBounds |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
private int diffVector
private double F
private CrossOverScheme crossOverScheme
private DEMutationStrategy mutationStrategy
Constructor Detail |
---|
public DEMutationOperator()
Method Detail |
---|
public void configure(org.apache.commons.configuration.Configuration conf)
configure
in interface Configurable
configure
in class MutationOperator
protected java.util.List<Individual> mutation(EvolutionaryAlgorithm algorithm, Individual target)
mutation
in class MutationOperator
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |