mu update test

Separated GM & TLS case
make sure the mu set size is explicitly stated (does not depend on default values)
release/4.3a0
jingnanshi 2020-12-07 16:16:21 -05:00
parent d0a81f8441
commit 9caa0d14cf
1 changed files with 23 additions and 1 deletions

View File

@ -139,7 +139,7 @@ TEST(GncOptimizer, initializeMu) {
}
/* ************************************************************************* */
TEST(GncOptimizer, updateMu) {
TEST(GncOptimizer, updateMuGM) {
// has to have Gaussian noise models !
auto fg = example::createReallyNonlinearFactorGraph();
@ -151,6 +151,7 @@ TEST(GncOptimizer, updateMu) {
GncParams<LevenbergMarquardtParams> gncParams(lmParams);
gncParams.setLossType(
GncParams<LevenbergMarquardtParams>::RobustLossType::GM);
gncParams.setMuStep(1.4);
auto gnc =
GncOptimizer<GncParams<LevenbergMarquardtParams>>(fg, initial, gncParams);
@ -162,6 +163,27 @@ TEST(GncOptimizer, updateMu) {
EXPECT_DOUBLES_EQUAL(gnc.updateMu(mu), 1.0, tol);
}
/* ************************************************************************* */
TEST(GncOptimizer, updateMuTLS) {
// has to have Gaussian noise models !
auto fg = example::createReallyNonlinearFactorGraph();
Point2 p0(3, 3);
Values initial;
initial.insert(X(1), p0);
LevenbergMarquardtParams lmParams;
GncParams<LevenbergMarquardtParams> gncParams(lmParams);
gncParams.setMuStep(1.4);
gncParams.setLossType(
GncParams<LevenbergMarquardtParams>::RobustLossType::TLS);
auto gnc =
GncOptimizer<GncParams<LevenbergMarquardtParams>>(fg, initial, gncParams);
double mu = 5.0;
EXPECT_DOUBLES_EQUAL(gnc.updateMu(mu), mu * 1.4, tol);
}
/* ************************************************************************* */
TEST(GncOptimizer, checkMuConvergence) {
// has to have Gaussian noise models !