Some more documentation
This commit is contained in:
parent
3b7770fe38
commit
57a07840c4
1 changed files with 40 additions and 16 deletions
|
|
@ -43,19 +43,18 @@
|
||||||
#define M_PI 3.1415926535897932384626433832795
|
#define M_PI 3.1415926535897932384626433832795
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/** @ingroup EvolutionStrategies
|
/** ES-style mutation in the large
|
||||||
|
|
||||||
@brief ES-style mutation in the large
|
@ingroup EvolutionStrategies
|
||||||
|
|
||||||
Obviously, valid only for eoES*. It is currently valid for three types
|
Obviously, valid only for eoES*. It is currently valid for three types
|
||||||
of ES chromosomes:
|
of ES chromosomes:
|
||||||
- eoEsSimple: only 1 std deviation
|
- eoEsSimple: Exactly one stdandard-deviation
|
||||||
- eoEsStdev: as many standard deviations as object variables
|
- eoEsStdev: As many standard deviations as object variables
|
||||||
- eoEsFull: The whole guacemole: correlations, stdevs and object variables
|
- eoEsFull: The whole guacemole: correlations, stdevs and object variables
|
||||||
|
|
||||||
Each of these three variant has it's own operator() in eoEsMutate and
|
Each of these three variant has it's own operator() in eoEsMutate and
|
||||||
intialization is also split into three cases (that share some
|
intialization is also split into three cases (that share some commonalities)
|
||||||
commonalities)
|
|
||||||
*/
|
*/
|
||||||
template <class EOT>
|
template <class EOT>
|
||||||
class eoEsMutate : public eoMonOp< EOT >
|
class eoEsMutate : public eoMonOp< EOT >
|
||||||
|
|
@ -65,6 +64,7 @@ public:
|
||||||
/** Fitness-type */
|
/** Fitness-type */
|
||||||
typedef typename EOT::Fitness FitT;
|
typedef typename EOT::Fitness FitT;
|
||||||
|
|
||||||
|
|
||||||
/** Initialization.
|
/** Initialization.
|
||||||
|
|
||||||
@param _init Proxy class for initializating the three parameters
|
@param _init Proxy class for initializating the three parameters
|
||||||
|
|
@ -76,6 +76,7 @@ public:
|
||||||
init(EOT(), _init); // initialize on actual type used
|
init(EOT(), _init); // initialize on actual type used
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/** @brief Virtual Destructor */
|
/** @brief Virtual Destructor */
|
||||||
virtual ~eoEsMutate() {};
|
virtual ~eoEsMutate() {};
|
||||||
|
|
||||||
|
|
@ -89,7 +90,10 @@ public:
|
||||||
virtual std::string className() const {return "eoESMutate";};
|
virtual std::string className() const {return "eoESMutate";};
|
||||||
|
|
||||||
|
|
||||||
/** Mutate eoEsSimple */
|
/** Mutate eoEsSimple
|
||||||
|
|
||||||
|
@param _eo Individual to mutate.
|
||||||
|
*/
|
||||||
virtual bool operator()( eoEsSimple<FitT>& _eo)
|
virtual bool operator()( eoEsSimple<FitT>& _eo)
|
||||||
{
|
{
|
||||||
_eo.stdev *= exp(TauLcl * rng.normal());
|
_eo.stdev *= exp(TauLcl * rng.normal());
|
||||||
|
|
@ -105,7 +109,9 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/** Standard mutation in ESs
|
/** Standard mutation in ES
|
||||||
|
|
||||||
|
@overload
|
||||||
|
|
||||||
Standard mutation of object variables and standard deviations in ESs.
|
Standard mutation of object variables and standard deviations in ESs.
|
||||||
|
|
||||||
|
|
@ -115,7 +121,8 @@ public:
|
||||||
|
|
||||||
@param _eo Individual to mutate.
|
@param _eo Individual to mutate.
|
||||||
|
|
||||||
@see Schwefel 1977: Numerische Optimierung von Computer-Modellen mittels der
|
@see
|
||||||
|
Schwefel 1977: Numerische Optimierung von Computer-Modellen mittels der
|
||||||
Evolutionsstrategie, pp. 165 ff.
|
Evolutionsstrategie, pp. 165 ff.
|
||||||
*/
|
*/
|
||||||
virtual bool operator()( eoEsStdev<FitT>& _eo )
|
virtual bool operator()( eoEsStdev<FitT>& _eo )
|
||||||
|
|
@ -135,17 +142,24 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/** Correlated mutations in ESs
|
/** Correlated mutations in ES
|
||||||
|
|
||||||
Correlated mutations in ESs, according to the following sources:
|
@overload
|
||||||
- H.-P. Schwefel: Internal Report of KFA Juelich, KFA-STE-IB-3/80, p. 43, 1980
|
|
||||||
|
Mutation of object variables, standard deviations, and their correlations in
|
||||||
|
ESs.
|
||||||
|
|
||||||
|
@param _eo Individual to mutate.
|
||||||
|
|
||||||
|
@see
|
||||||
|
- H.-P. Schwefel: Internal Report of KFA Juelich, KFA-STE-IB-3/80, p. 43, 1980.
|
||||||
- G. Rudolph: Globale Optimierung mit parallelen Evolutionsstrategien,
|
- G. Rudolph: Globale Optimierung mit parallelen Evolutionsstrategien,
|
||||||
Diploma Thesis, University of Dortmund, 1990
|
Diploma Thesis, University of Dortmund, 1990.
|
||||||
- Code from Thomas Baeck
|
|
||||||
*/
|
*/
|
||||||
virtual bool operator()( eoEsFull<FitT> & _eo )
|
virtual bool operator()( eoEsFull<FitT> & _eo )
|
||||||
|
// Code originally from Thomas Bäck
|
||||||
{
|
{
|
||||||
// First: mutate standard deviations (as above).
|
// First: mutate standard deviations (as for eoEsStdev<FitT>).
|
||||||
double global = TauGlb * rng.normal();
|
double global = TauGlb * rng.normal();
|
||||||
unsigned i;
|
unsigned i;
|
||||||
for (i = 0; i < _eo.size(); i++)
|
for (i = 0; i < _eo.size(); i++)
|
||||||
|
|
@ -197,6 +211,7 @@ public:
|
||||||
|
|
||||||
private :
|
private :
|
||||||
|
|
||||||
|
/** Initialization of simple ES */
|
||||||
void init(eoEsSimple<FitT>, eoEsMutationInit& _init)
|
void init(eoEsSimple<FitT>, eoEsMutationInit& _init)
|
||||||
{
|
{
|
||||||
unsigned size = bounds.size();
|
unsigned size = bounds.size();
|
||||||
|
|
@ -205,6 +220,11 @@ public:
|
||||||
std::cout << "Init<eoEsSimple>: tau local " << TauLcl << std::endl;
|
std::cout << "Init<eoEsSimple>: tau local " << TauLcl << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** Initialization of standard ES
|
||||||
|
|
||||||
|
@overload
|
||||||
|
*/
|
||||||
void init(eoEsStdev<FitT>, eoEsMutationInit& _init)
|
void init(eoEsStdev<FitT>, eoEsMutationInit& _init)
|
||||||
{
|
{
|
||||||
unsigned size = bounds.size();
|
unsigned size = bounds.size();
|
||||||
|
|
@ -216,6 +236,11 @@ public:
|
||||||
std::cout << "Init<eoStDev>: tau local " << TauLcl << " et global " << TauGlb << std::endl;
|
std::cout << "Init<eoStDev>: tau local " << TauLcl << " et global " << TauGlb << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** Initialization of full ES
|
||||||
|
|
||||||
|
@overload
|
||||||
|
*/
|
||||||
void init(eoEsFull<FitT>, eoEsMutationInit& _init)
|
void init(eoEsFull<FitT>, eoEsMutationInit& _init)
|
||||||
{
|
{
|
||||||
init(eoEsStdev<FitT>(), _init);
|
init(eoEsStdev<FitT>(), _init);
|
||||||
|
|
@ -259,4 +284,3 @@ template <class EOT>
|
||||||
const double eoEsMutate<EOT>::stdev_eps = 1.0e-40;
|
const double eoEsMutate<EOT>::stdev_eps = 1.0e-40;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
||||||
Reference in a new issue