cleaner numerical errors management for EDO adaptive algos

- Change the ill-condition continuator to use eigen decomposition of the
covariance matrix, just like in the adaptive estimator.
- Add a warning message in adaptive sampler.
This commit is contained in:
Johann Dreo 2020-03-17 12:05:56 +01:00
commit 38e3f40bad
6 changed files with 174 additions and 104 deletions

View file

@ -227,14 +227,15 @@ public:
// Matrix CS = C.triangularView<Eigen::Upper>() + C.triangularView<Eigen::StrictlyUpper>().transpose();
d.covar( C );
Eigen::SelfAdjointEigenSolver<Matrix> eigensolver( d.covar() ); // FIXME use JacobiSVD?
d.coord_sys( eigensolver.eigenvectors() );
Eigen::SelfAdjointEigenSolver<Matrix> eigensolver( d.covar() );
Matrix mD = eigensolver.eigenvalues().asDiagonal();
assert( mD.innerSize() == N && mD.outerSize() == N );
// from variance to standard deviations
mD.cwiseSqrt();
d.scaling( mD.diagonal() );
d.coord_sys( eigensolver.eigenvectors() );
}
return d;