# eoEsMutate< EOT > Class Template Reference
[EvolutionStrategies]

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

`#include <eoEsMutate.h>`

Inheritance diagram for eoEsMutate< EOT >:

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.
eoRealVectorBounds & | bounds
| Bounds of parameters.

## Static Private Attributes

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 60 of file eoEsMutate.h.

## Constructor & Destructor Documentation

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

Initialization.

Parameters:

  | _init | Proxy class for initializating the three parameters eoEsMutate needs
  | _bounds | Bounds for the objective variables

Definition at line 74 of file eoEsMutate.h.

References eoEsMutate< EOT >::bounds, and 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 90 of file eoEsMutate.h.

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

Mutate eoEsSimple.

Parameters:

  | _eo | Individual to mutate.

Definition at line 97 of file eoEsMutate.h.

References eoEsMutate< EOT >::bounds, eoRealBaseVectorBounds::foldsInBounds(), eoRng::normal(), eoEsSimple< Fit >::stdev, and eoEsMutate< EOT >::TauLcl.

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:

  | _eo | Individual to mutate.

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

Definition at line 128 of file eoEsMutate.h.

References eoEsMutate< EOT >::bounds, eoRealBaseVectorBounds::foldsInBounds(), eoRng::normal(), eoEsStdev< Fit >::stdevs, 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:

  | _eo | Individual 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 159 of file eoEsMutate.h.

References eoEsMutate< EOT >::bounds, eoEsFull< Fit >::correlations, eoRealBaseVectorBounds::foldsInBounds(), eoRng::normal(), eoEsFull< Fit >::stdevs, 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 228 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 244 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 284 of file eoEsMutate.h.

The documentation for this class was generated from the following file:

- eoEsMutate.h