EvolvingObjects
eoEsMutate< EOT > Class Template Reference

ES-style mutation in the large. More...

#include <eoEsMutate.h>

Inheritance diagram for eoEsMutate< EOT >:
eoMonOp< EOT > eoOp< EOT > eoUF< EOT &, bool > eoFunctorBase unary_function

List of all members.

Public Types

typedef EOT::Fitness FitT
 Fitness-type.

Public Member Functions

 eoEsMutate (eoEsMutationInit &_init, eoRealVectorBounds &_bounds)
 Initialization.
virtual ~eoEsMutate ()
 Virtual Destructor.
virtual std::string className () const
 Classname.
virtual bool operator() (eoEsSimple< FitT > &_eo)
 Mutate eoEsSimple.
virtual bool operator() (eoEsStdev< FitT > &_eo)
 Standard mutation in ES.
virtual bool operator() (eoEsFull< FitT > &_eo)
 Correlated mutations in ES.

Private Member Functions

void init (eoEsSimple< FitT >, eoEsMutationInit &_init)
 Initialization of simple ES.
void init (eoEsStdev< FitT >, eoEsMutationInit &_init)
 Initialization of standard ES.
void init (eoEsFull< FitT >, eoEsMutationInit &_init)
 Initialization of full ES.

Private Attributes

double TauLcl
 Local factor for mutation of std deviations.
double TauGlb
 Global factor for mutation of std deviations.
double TauBeta
 Factor for mutation of correlation parameters.
eoRealVectorBoundsbounds
 Bounds of parameters.

Static Private Attributes

static const double stdev_eps = 1.0e-40
 Minimum stdev.

Detailed Description

template<class EOT>
class eoEsMutate< EOT >

ES-style mutation in the large.

Obviously, valid only for eoES*. It is currently valid for three types of ES chromosomes:

  • eoEsSimple: Exactly one stdandard-deviation
  • eoEsStdev: As many standard deviations as object variables
  • eoEsFull: The whole guacemole: correlations, stdevs and object variables

Each of these three variant has it's own operator() in eoEsMutate and intialization is also split into three cases (that share some commonalities)

Definition at line 61 of file eoEsMutate.h.


Constructor & Destructor Documentation

template<class EOT>
eoEsMutate< EOT >::eoEsMutate ( eoEsMutationInit _init,
eoRealVectorBounds _bounds 
) [inline]

Initialization.

Parameters:
_initProxy class for initializating the three parameters eoEsMutate needs
_boundsBounds for the objective variables

Definition at line 75 of file eoEsMutate.h.

References eoEsMutate< EOT >::init().


Member Function Documentation

template<class EOT>
virtual std::string eoEsMutate< EOT >::className ( void  ) const [inline, virtual]

Classname.

Inherited from eoObject

See also:
eoObject
Returns:
Name of class.

Reimplemented from eoMonOp< EOT >.

Definition at line 91 of file eoEsMutate.h.

template<class EOT>
virtual bool eoEsMutate< EOT >::operator() ( eoEsSimple< FitT > &  _eo) [inline, virtual]
template<class EOT>
virtual bool eoEsMutate< EOT >::operator() ( eoEsStdev< FitT > &  _eo) [inline, virtual]

Standard mutation in ES.

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. Standard mutation of object variables and standard deviations in ESs.

If there are fewer different standard deviations available than the dimension of the objective function requires, the last standard deviation is responsible for ALL remaining object variables.

Parameters:
_eoIndividual to mutate.
See also:
Schwefel 1977: Numerische Optimierung von Computer-Modellen mittels der Evolutionsstrategie, pp. 165 ff.

Definition at line 129 of file eoEsMutate.h.

References eoEsMutate< EOT >::bounds, eoRealBaseVectorBounds::foldsInBounds(), eoRng::normal(), eoEsMutate< EOT >::stdev_eps, eoEsMutate< EOT >::TauGlb, and eoEsMutate< EOT >::TauLcl.

template<class EOT>
virtual bool eoEsMutate< EOT >::operator() ( eoEsFull< FitT > &  _eo) [inline, virtual]

Correlated mutations in ES.

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. Mutation of object variables, standard deviations, and their correlations in ESs.

Parameters:
_eoIndividual to mutate.
See also:
  • H.-P. Schwefel: Internal Report of KFA Juelich, KFA-STE-IB-3/80, p. 43, 1980.
  • G. Rudolph: Globale Optimierung mit parallelen Evolutionsstrategien, Diploma Thesis, University of Dortmund, 1990.

Definition at line 160 of file eoEsMutate.h.

References eoEsMutate< EOT >::bounds, eoRealBaseVectorBounds::foldsInBounds(), eoRng::normal(), eoEsMutate< EOT >::stdev_eps, eoEsMutate< EOT >::TauBeta, eoEsMutate< EOT >::TauGlb, and eoEsMutate< EOT >::TauLcl.

template<class EOT>
void eoEsMutate< EOT >::init ( eoEsStdev< FitT ,
eoEsMutationInit _init 
) [inline, private]

Initialization of standard ES.

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 229 of file eoEsMutate.h.

References eoEsMutate< EOT >::bounds, eoEsMutationInit::TauGlb(), eoEsMutate< EOT >::TauGlb, eoEsMutationInit::TauLcl(), and eoEsMutate< EOT >::TauLcl.

template<class EOT>
void eoEsMutate< EOT >::init ( eoEsFull< FitT ,
eoEsMutationInit _init 
) [inline, private]

Initialization of full ES.

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 245 of file eoEsMutate.h.

References eoEsMutate< EOT >::init(), eoEsMutationInit::TauBeta(), eoEsMutate< EOT >::TauBeta, eoEsMutate< EOT >::TauGlb, and eoEsMutate< EOT >::TauLcl.


Member Data Documentation

template<class EOT>
const double eoEsMutate< EOT >::stdev_eps = 1.0e-40 [static, private]

Minimum stdev.

If you let the step-size go to 0, self-adaptation stops, therefore we give a lower bound. The actual value used is somewhat arbitrary and the is no theoretical reasoning known for it (Sep 2005).

The code that we have in EO is a port from a C code that Thomas Bäck kindly donated to the community some years ago. It has been modified by Marc Schoenauer for inclusion in EvolC, than by Maarten Keijzer into EO. The exact value was adjusted based on practice.

Removing this doesn't work well, but it was never tried to figure out what the best value would be.

Definition at line 279 of file eoEsMutate.h.

Referenced by eoEsMutate< EOT >::operator()().


The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Friends