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

java.lang.Object
  extended by es.udc.gii.common.eaf.algorithm.operator.reproduction.mutation.de.mutationStrategy.DEMutationStrategy
Direct Known Subclasses:
BestDEMutationStrategy, CurrentToPBestMutationStrategy, RandomDEMutationStrategy

public abstract class DEMutationStrategy
extends java.lang.Object

The mutation operator of the Differential Evolution Algorithm use different mutation strategies to create the individuals of the population. This abstract class represents these mutation strategies. Each specific mutation strategy should override the method getMutatedIndividual in order to generate a new mutated individual.

All the mutation strategies share two parameters the mutation factor, F and the number of difference vectors that are used to generate the new individual, diffVector. The parameter F is implemented as a plugin so it could be set to a constat value, using the Constat class from the parameter package, or it could be set as an adaptive parameter using some of the adaptive parameters classes. In the canonical version of the DE algorithm the DE/rand/1/- configuration is used, where rand indicates the random mutation strategy and 1 is the number of difference vectors.

As this is an abstract class, it could not be instanciate, but when we use a subclass that inherit from it, its xml configuration code should have at least a configuration for the F parameter and the diffVector parameter, among other specific configuration parameters of the subclass. So the xml code should be like this:

 <MutationStrategy>
      <Class>value</Class<br>
      <F>value</F<<br>
      <diffVector>value</diffVector>
      ...
 <MutationStrategy>
 
 
where the tag Class indicates a subclass of this abstract class, F indicates the plugin used and diffVector is an integer which indicates the number of difference vector used to generate the mutated individual. If some of the parameters do not appear in the configuration, they are set to their default values.

Default values:

Since:
1.0
Author:
Grupo Integrado de IngenierĂ­a (www.gii.udc.es)

Field Summary
private  int diffVector
          Integer value which indicate the number of difference vectors used to generate a new solution.
private  Parameter F_plugin
          F is a real factor (F > 0 and F in [0,2]) which controls de amplification of the differential variation.
 
Constructor Summary
DEMutationStrategy()
           
 
Method Summary
 void configure(org.apache.commons.configuration.Configuration conf)
           
 int getDiffVector()
           
 Parameter getFPlugin()
           
abstract  Individual getMutatedIndividual(EvolutionaryAlgorithm algorithm, Individual target)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

F_plugin

private Parameter F_plugin
F is a real 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. F is a parameter plugin, it could be a constant or an adaptive parameter.


diffVector

private int diffVector
Integer value which indicate the number of difference vectors used to generate a new solution.

Constructor Detail

DEMutationStrategy

public DEMutationStrategy()
Method Detail

getMutatedIndividual

public abstract Individual getMutatedIndividual(EvolutionaryAlgorithm algorithm,
                                                Individual target)

getFPlugin

public Parameter getFPlugin()

getDiffVector

public int getDiffVector()

configure

public void configure(org.apache.commons.configuration.Configuration conf)