diff --git a/edo/src/edoEstimatorNormalAdaptive.h b/edo/src/edoEstimatorNormalAdaptive.h index a2566772..cda466a4 100644 --- a/edo/src/edoEstimatorNormalAdaptive.h +++ b/edo/src/edoEstimatorNormalAdaptive.h @@ -38,8 +38,9 @@ Authors: #include "edoNormalAdaptive.h" #include "edoEstimatorAdaptive.h" - -//! edoEstimatorNormalMulti< EOT > +/** An estimator that works on adaptive normal distributions, basically the heart of the CMA-ES algorithm. + * + */ template< typename EOT, typename EOD = edoNormalAdaptive > class edoEstimatorNormalAdaptive : public edoEstimatorAdaptive< EOD > { diff --git a/edo/src/edoNormalAdaptive.h b/edo/src/edoNormalAdaptive.h index 7c6e80a6..17ffb8c2 100644 --- a/edo/src/edoNormalAdaptive.h +++ b/edo/src/edoNormalAdaptive.h @@ -35,6 +35,16 @@ Authors: #include +/** A normal distribution that can be updated via several components. This is the data structure on which works the CMA-ES + * algorithm. + * + * This is *just* a data structure, the operators working on it are supposed to maintain its consistency (e.g. of the + * covariance matrix against its eigen vectors). + * + * The distribution is defined by its mean, its covariance matrix (which can be decomposed in its eigen vectors and + * values), a scaling factor (sigma) and the so-called evolution paths for the covariance and sigma. + * evolution paths. + */ template < typename EOT > class edoNormalAdaptive : public edoDistrib< EOT > { @@ -107,11 +117,11 @@ public: private: unsigned int _dim; - Vector _mean; // + Vector _mean; // mean vector Matrix _C; // covariance matrix Matrix _B; // eigen vectors / coordinates system Vector _D; // eigen values / scaling - double _sigma; // + double _sigma; // absolute scaling of the distribution Vector _p_c; // evolution path for C Vector _p_s; // evolution path for sigma }; diff --git a/edo/src/edoSamplerNormalAdaptive.h b/edo/src/edoSamplerNormalAdaptive.h index e8188105..39e33a78 100644 --- a/edo/src/edoSamplerNormalAdaptive.h +++ b/edo/src/edoSamplerNormalAdaptive.h @@ -33,12 +33,8 @@ Authors: #include -/** Sample points in a multi-normal law defined by a mean vector and a covariance matrix. - * - * Given M the mean vector and V the covariance matrix, of order n: - * - draw a vector T in N(0,I) (i.e. each value is drawn in a normal law with mean=0 an stddev=1) - * - compute the Cholesky decomposition L of V (i.e. such as V=LL*) - * - return X = M + LT +/** Sample points in a multi-normal law defined by a mean vector, a covariance matrix, a sigma scale factor and + * evolution paths. This is a step of the CMA-ES algorithm. */ #ifdef WITH_EIGEN