EvolvingObjects
|
ES-style mutation in the large. More...
#include <eoEsMutate.h>
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 | |
static const double | stdev_eps = 1.0e-40 |
Minimum stdev. |
ES-style mutation in the large.
Obviously, valid only for eoES*. It is currently valid for three types of ES chromosomes:
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.
eoEsMutate< EOT >::eoEsMutate | ( | eoEsMutationInit & | _init, |
eoRealVectorBounds & | _bounds | ||
) | [inline] |
Initialization.
_init | Proxy class for initializating the three parameters eoEsMutate needs |
_bounds | Bounds for the objective variables |
Definition at line 75 of file eoEsMutate.h.
References eoEsMutate< EOT >::init().
virtual std::string eoEsMutate< EOT >::className | ( | void | ) | const [inline, virtual] |
Classname.
Inherited from eoObject
Reimplemented from eoMonOp< EOT >.
Definition at line 91 of file eoEsMutate.h.
virtual bool eoEsMutate< EOT >::operator() | ( | eoEsSimple< FitT > & | _eo | ) | [inline, virtual] |
Mutate eoEsSimple.
_eo | Individual to mutate. |
Definition at line 98 of file eoEsMutate.h.
References eoEsMutate< EOT >::bounds, eoRealBaseVectorBounds::foldsInBounds(), eoRng::normal(), eoEsMutate< EOT >::stdev_eps, and eoEsMutate< EOT >::TauLcl.
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.
_eo | Individual to mutate. |
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.
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.
_eo | Individual to mutate. |
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.
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.
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.
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()().