release/4.3a0
jingnanshi 2020-12-07 17:28:35 -05:00
parent 428d17a4bc
commit 594f63d1f6
1 changed files with 21 additions and 3 deletions

View File

@ -135,7 +135,7 @@ TEST(GncOptimizer, initializeMu) {
GncOptimizer<GncParams<LevenbergMarquardtParams>>(fg, initial, gncParams); GncOptimizer<GncParams<LevenbergMarquardtParams>>(fg, initial, gncParams);
// according to rmk 5 in the gnc paper: m0 = barcSq / (2 * rmax^2 - barcSq) // according to rmk 5 in the gnc paper: m0 = barcSq / (2 * rmax^2 - barcSq)
// (barcSq=1 in this example) // (barcSq=1 in this example)
EXPECT_DOUBLES_EQUAL(gnc_gm.initializeMu(), 1 / (2 * 198.999 - 1), 1e-3); EXPECT_DOUBLES_EQUAL(gnc_tls.initializeMu(), 1 / (2 * 198.999 - 1), 1e-3);
} }
/* ************************************************************************* */ /* ************************************************************************* */
@ -185,7 +185,7 @@ TEST(GncOptimizer, updateMuTLS) {
} }
/* ************************************************************************* */ /* ************************************************************************* */
TEST(GncOptimizer, checkMuConvergence) { TEST(GncOptimizer, checkMuConvergenceGM) {
// has to have Gaussian noise models ! // has to have Gaussian noise models !
auto fg = example::createReallyNonlinearFactorGraph(); auto fg = example::createReallyNonlinearFactorGraph();
@ -202,8 +202,26 @@ TEST(GncOptimizer, checkMuConvergence) {
double mu = 1.0; double mu = 1.0;
CHECK(gnc.checkMuConvergence(mu, 0)); CHECK(gnc.checkMuConvergence(mu, 0));
}
// TODO: test relative mu convergence /* ************************************************************************* */
TEST(GncOptimizer, checkMuConvergenceTLS) {
// 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.setLossType(
GncParams<LevenbergMarquardtParams>::RobustLossType::TLS);
auto gnc =
GncOptimizer<GncParams<LevenbergMarquardtParams>>(fg, initial, gncParams);
double mu = 1.0;
CHECK(gnc.checkMuConvergence(mu, mu));
} }
/* ************************************************************************* */ /* ************************************************************************* */