es.udc.gii.common.eaf.algorithm.operator.reproduction.mutation.de
Class DEMutationOperator

java.lang.Object
  extended by es.udc.gii.common.eaf.algorithm.operator.reproduction.ReproductionOperator
      extended by es.udc.gii.common.eaf.algorithm.operator.reproduction.mutation.MutationOperator
          extended by es.udc.gii.common.eaf.algorithm.operator.reproduction.mutation.de.DEMutationOperator
All Implemented Interfaces:
Operator, Configurable

public class DEMutationOperator
extends MutationOperator

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>

Author:
pilar

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

diffVector

private int diffVector
Number of difference vectors.


F

private double F
F is a real constant factor (F > 0 and F in [0,2]) which controls de amplification of the differential variation. F should not be smaller than certain value to prevent premature convergence. A larger F increases the probability for escaping a local optimum. However for F > 1 the convergence speed decreases. It is difficult to converge for a population when the perturbation is larger than the distance between to members.


crossOverScheme

private CrossOverScheme crossOverScheme
In order to increase the divertity a CrossOver operator is introduced. There are several CrossOver schemes. The default one is the Binaray Crossover scheme.


mutationStrategy

private DEMutationStrategy mutationStrategy
The strategy to choose the base vector.

Constructor Detail

DEMutationOperator

public DEMutationOperator()
Creates a new instance of DEMutationOperator

Method Detail

configure

public void configure(org.apache.commons.configuration.Configuration conf)
Specified by:
configure in interface Configurable
Overrides:
configure in class MutationOperator

mutation

protected java.util.List<Individual> mutation(EvolutionaryAlgorithm algorithm,
                                              Individual target)
Specified by:
mutation in class MutationOperator