From b30a2a527ef2c10f9650d3e4801027c76d9e9351 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20S=C3=A1nchez?= Date: Wed, 2 Mar 2022 19:31:20 +0000 Subject: [PATCH] Remove poor non-convergence checks in NonLinearOptimization. (cherry picked from commit d819a33bf64c4fce95c55f8e44a68b486f064a79) --- unsupported/test/NonLinearOptimization.cpp | 136 +++++++----- unsupported/test/levenberg_marquardt.cpp | 239 ++++++++++++--------- 2 files changed, 220 insertions(+), 155 deletions(-) diff --git a/unsupported/test/NonLinearOptimization.cpp b/unsupported/test/NonLinearOptimization.cpp index c667b7247..b6c29ca4d 100644 --- a/unsupported/test/NonLinearOptimization.cpp +++ b/unsupported/test/NonLinearOptimization.cpp @@ -12,14 +12,10 @@ // It is intended to be done for this test only. #include -// tolerance for chekcing number of iterations -#define LM_EVAL_COUNT_TOL 4/3 +// tolerance for checking number of iterations +#define LM_EVAL_COUNT_TOL 2 #define LM_CHECK_N_ITERS(SOLVER,NFEV,NJEV) { \ - ++g_test_level; \ - VERIFY_IS_EQUAL(SOLVER.nfev, NFEV); \ - VERIFY_IS_EQUAL(SOLVER.njev, NJEV); \ - --g_test_level; \ VERIFY(SOLVER.nfev <= NFEV * LM_EVAL_COUNT_TOL); \ VERIFY(SOLVER.njev <= NJEV * LM_EVAL_COUNT_TOL); \ } @@ -186,9 +182,10 @@ void testLmder1() lmder_functor functor; LevenbergMarquardt lm(functor); info = lm.lmder1(x); + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, 1); + // VERIFY_IS_EQUAL(info, 1); LM_CHECK_N_ITERS(lm, 6, 5); // check norm @@ -214,9 +211,10 @@ void testLmder() lmder_functor functor; LevenbergMarquardt lm(functor); info = lm.minimize(x); + EIGEN_UNUSED_VARIABLE(info) // check return values - VERIFY_IS_EQUAL(info, 1); + // VERIFY_IS_EQUAL(info, 1); LM_CHECK_N_ITERS(lm, 6, 5); // check norm @@ -298,9 +296,10 @@ void testHybrj1() hybrj_functor functor; HybridNonLinearSolver solver(functor); info = solver.hybrj1(x); + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, 1); + // VERIFY_IS_EQUAL(info, 1); LM_CHECK_N_ITERS(solver, 11, 1); // check norm @@ -332,9 +331,10 @@ void testHybrj() solver.diag.setConstant(n, 1.); solver.useExternalScaling = true; info = solver.solve(x); + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, 1); + // VERIFY_IS_EQUAL(info, 1); LM_CHECK_N_ITERS(solver, 11, 1); // check norm @@ -385,10 +385,11 @@ void testHybrd1() hybrd_functor functor; HybridNonLinearSolver solver(functor); info = solver.hybrd1(x); + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, 1); - VERIFY_IS_EQUAL(solver.nfev, 20); + // VERIFY_IS_EQUAL(info, 1); + VERIFY(solver.nfev <= 20*LM_EVAL_COUNT_TOL); // check norm VERIFY_IS_APPROX(solver.fvec.blueNorm(), 1.192636e-08); @@ -416,10 +417,11 @@ void testHybrd() solver.diag.setConstant(n, 1.); solver.useExternalScaling = true; info = solver.solveNumericalDiff(x); + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, 1); - VERIFY_IS_EQUAL(solver.nfev, 14); + // VERIFY_IS_EQUAL(info, 1); + VERIFY(solver.nfev <= 14*LM_EVAL_COUNT_TOL); // check norm VERIFY_IS_APPROX(solver.fvec.blueNorm(), 1.192636e-08); @@ -487,9 +489,10 @@ void testLmstr1() lmstr_functor functor; LevenbergMarquardt lm(functor); info = lm.lmstr1(x); + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, 1); + // VERIFY_IS_EQUAL(info, 1); LM_CHECK_N_ITERS(lm, 6, 5); // check norm @@ -515,9 +518,10 @@ void testLmstr() lmstr_functor functor; LevenbergMarquardt lm(functor); info = lm.minimizeOptimumStorage(x); + EIGEN_UNUSED_VARIABLE(info) // check return values - VERIFY_IS_EQUAL(info, 1); + // VERIFY_IS_EQUAL(info, 1); LM_CHECK_N_ITERS(lm, 6, 5); // check norm @@ -570,10 +574,11 @@ void testLmdif1() lmdif_functor functor; DenseIndex nfev = -1; // initialize to avoid maybe-uninitialized warning info = LevenbergMarquardt::lmdif1(functor, x, &nfev); + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, 1); - VERIFY_IS_EQUAL(nfev, 26); + // VERIFY_IS_EQUAL(info, 1); + VERIFY( nfev <= 26*LM_EVAL_COUNT_TOL); // check norm functor(x, fvec); @@ -601,10 +606,11 @@ void testLmdif() NumericalDiff numDiff(functor); LevenbergMarquardt > lm(numDiff); info = lm.minimize(x); + EIGEN_UNUSED_VARIABLE(info) // check return values - VERIFY_IS_EQUAL(info, 1); - VERIFY_IS_EQUAL(lm.nfev, 26); + // VERIFY_IS_EQUAL(info, 1); + VERIFY(lm.nfev <= 26*LM_EVAL_COUNT_TOL); // check norm fnorm = lm.fvec.blueNorm(); @@ -686,9 +692,10 @@ void testNistChwirut2(void) chwirut2_functor functor; LevenbergMarquardt lm(functor); info = lm.minimize(x); + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, 1); + // VERIFY_IS_EQUAL(info, 1); LM_CHECK_N_ITERS(lm, 10, 8); // check norm^2 VERIFY_IS_APPROX(lm.fvec.squaredNorm(), 5.1304802941E+02); @@ -706,9 +713,10 @@ void testNistChwirut2(void) lm.parameters.ftol = 1.E6*NumTraits::epsilon(); lm.parameters.xtol = 1.E6*NumTraits::epsilon(); info = lm.minimize(x); + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, 1); + // VERIFY_IS_EQUAL(info, 1); LM_CHECK_N_ITERS(lm, 7, 6); // check norm^2 VERIFY_IS_APPROX(lm.fvec.squaredNorm(), 5.1304802941E+02); @@ -764,9 +772,10 @@ void testNistMisra1a(void) misra1a_functor functor; LevenbergMarquardt lm(functor); info = lm.minimize(x); + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, 1); + // VERIFY_IS_EQUAL(info, 1); LM_CHECK_N_ITERS(lm, 19, 15); // check norm^2 VERIFY_IS_APPROX(lm.fvec.squaredNorm(), 1.2455138894E-01); @@ -780,9 +789,10 @@ void testNistMisra1a(void) x<< 250., 0.0005; // do the computation info = lm.minimize(x); + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, 1); + // VERIFY_IS_EQUAL(info, 1); LM_CHECK_N_ITERS(lm, 5, 4); // check norm^2 VERIFY_IS_APPROX(lm.fvec.squaredNorm(), 1.2455138894E-01); @@ -852,9 +862,10 @@ void testNistHahn1(void) hahn1_functor functor; LevenbergMarquardt lm(functor); info = lm.minimize(x); + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, 1); + // VERIFY_IS_EQUAL(info, 1); LM_CHECK_N_ITERS(lm, 11, 10); // check norm^2 VERIFY_IS_APPROX(lm.fvec.squaredNorm(), 1.5324382854E+00); @@ -873,9 +884,10 @@ void testNistHahn1(void) x<< .1, -.1, .005, -.000001, -.005, .0001, -.0000001; // do the computation info = lm.minimize(x); + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, 1); + // VERIFY_IS_EQUAL(info, 1); LM_CHECK_N_ITERS(lm, 11, 10); // check norm^2 VERIFY_IS_APPROX(lm.fvec.squaredNorm(), 1.5324382854E+00); @@ -936,9 +948,10 @@ void testNistMisra1d(void) misra1d_functor functor; LevenbergMarquardt lm(functor); info = lm.minimize(x); + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, 3); + // VERIFY_IS_EQUAL(info, 3); LM_CHECK_N_ITERS(lm, 9, 7); // check norm^2 VERIFY_IS_APPROX(lm.fvec.squaredNorm(), 5.6419295283E-02); @@ -952,9 +965,10 @@ void testNistMisra1d(void) x<< 450., 0.0003; // do the computation info = lm.minimize(x); + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, 1); + // VERIFY_IS_EQUAL(info, 1); LM_CHECK_N_ITERS(lm, 4, 3); // check norm^2 VERIFY_IS_APPROX(lm.fvec.squaredNorm(), 5.6419295283E-02); @@ -1012,13 +1026,14 @@ void testNistLanczos1(void) lanczos1_functor functor; LevenbergMarquardt lm(functor); info = lm.minimize(x); + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, 2); + // VERIFY_IS_EQUAL(info, 2); LM_CHECK_N_ITERS(lm, 79, 72); // check norm^2 - std::cout.precision(30); - std::cout << lm.fvec.squaredNorm() << "\n"; + // std::cout.precision(30); + // std::cout << lm.fvec.squaredNorm() << "\n"; VERIFY(lm.fvec.squaredNorm() <= 1.4307867721E-25); // check x VERIFY_IS_APPROX(x[0], 9.5100000027E-02); @@ -1034,9 +1049,10 @@ void testNistLanczos1(void) x<< 0.5, 0.7, 3.6, 4.2, 4., 6.3; // do the computation info = lm.minimize(x); + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, 2); + // VERIFY_IS_EQUAL(info, 2); LM_CHECK_N_ITERS(lm, 9, 8); // check norm^2 VERIFY(lm.fvec.squaredNorm() <= 1.4307867721E-25); @@ -1098,9 +1114,10 @@ void testNistRat42(void) rat42_functor functor; LevenbergMarquardt lm(functor); info = lm.minimize(x); + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, 1); + // VERIFY_IS_EQUAL(info, 1); LM_CHECK_N_ITERS(lm, 10, 8); // check norm^2 VERIFY_IS_APPROX(lm.fvec.squaredNorm(), 8.0565229338E+00); @@ -1115,9 +1132,10 @@ void testNistRat42(void) x<< 75., 2.5, 0.07; // do the computation info = lm.minimize(x); + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, 1); + // VERIFY_IS_EQUAL(info, 1); LM_CHECK_N_ITERS(lm, 6, 5); // check norm^2 VERIFY_IS_APPROX(lm.fvec.squaredNorm(), 8.0565229338E+00); @@ -1174,9 +1192,10 @@ void testNistMGH10(void) MGH10_functor functor; LevenbergMarquardt lm(functor); info = lm.minimize(x); + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, 2); + // VERIFY_IS_EQUAL(info, 2); LM_CHECK_N_ITERS(lm, 284, 249); // check norm^2 VERIFY_IS_APPROX(lm.fvec.squaredNorm(), 8.7945855171E+01); @@ -1191,9 +1210,10 @@ void testNistMGH10(void) x<< 0.02, 4000., 250.; // do the computation info = lm.minimize(x); + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, 3); + // VERIFY_IS_EQUAL(info, 3); LM_CHECK_N_ITERS(lm, 126, 116); // check norm^2 VERIFY_IS_APPROX(lm.fvec.squaredNorm(), 8.7945855171E+01); @@ -1251,9 +1271,10 @@ void testNistBoxBOD(void) lm.parameters.xtol = 1.E6*NumTraits::epsilon(); lm.parameters.factor = 10.; info = lm.minimize(x); + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, 1); + // VERIFY_IS_EQUAL(info, 1); LM_CHECK_N_ITERS(lm, 31, 25); // check norm^2 VERIFY_IS_APPROX(lm.fvec.squaredNorm(), 1.1680088766E+03); @@ -1270,10 +1291,11 @@ void testNistBoxBOD(void) lm.parameters.ftol = NumTraits::epsilon(); lm.parameters.xtol = NumTraits::epsilon(); info = lm.minimize(x); + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, 1); - LM_CHECK_N_ITERS(lm, 15, 14); + // VERIFY_IS_EQUAL(info, 1); + LM_CHECK_N_ITERS(lm, 20, 14); // check norm^2 VERIFY_IS_APPROX(lm.fvec.squaredNorm(), 1.1680088766E+03); // check x @@ -1331,6 +1353,7 @@ void testNistMGH17(void) lm.parameters.xtol = NumTraits::epsilon(); lm.parameters.maxfev = 1000; info = lm.minimize(x); + EIGEN_UNUSED_VARIABLE(info) // check norm^2 VERIFY_IS_APPROX(lm.fvec.squaredNorm(), 5.4648946975E-05); @@ -1342,7 +1365,7 @@ void testNistMGH17(void) VERIFY_IS_APPROX(x[4], 2.2122699662E-02); // check return value - VERIFY_IS_EQUAL(info, 2); + // VERIFY_IS_EQUAL(info, 2); LM_CHECK_N_ITERS(lm, 602, 545); /* @@ -1352,9 +1375,10 @@ void testNistMGH17(void) // do the computation lm.resetParameters(); info = lm.minimize(x); + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, 1); + // VERIFY_IS_EQUAL(info, 1); LM_CHECK_N_ITERS(lm, 18, 15); // check norm^2 VERIFY_IS_APPROX(lm.fvec.squaredNorm(), 5.4648946975E-05); @@ -1417,9 +1441,10 @@ void testNistMGH09(void) LevenbergMarquardt lm(functor); lm.parameters.maxfev = 1000; info = lm.minimize(x); + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, 1); + // VERIFY_IS_EQUAL(info, 1); LM_CHECK_N_ITERS(lm, 490, 376); // check norm^2 VERIFY_IS_APPROX(lm.fvec.squaredNorm(), 3.0750560385E-04); @@ -1436,9 +1461,10 @@ void testNistMGH09(void) // do the computation lm.resetParameters(); info = lm.minimize(x); + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, 1); + // VERIFY_IS_EQUAL(info, 1); LM_CHECK_N_ITERS(lm, 18, 16); // check norm^2 VERIFY_IS_APPROX(lm.fvec.squaredNorm(), 3.0750560385E-04); @@ -1501,9 +1527,10 @@ void testNistBennett5(void) LevenbergMarquardt lm(functor); lm.parameters.maxfev = 1000; info = lm.minimize(x); + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, 1); + // VERIFY_IS_EQUAL(info, 1); LM_CHECK_N_ITERS(lm, 758, 744); // check norm^2 VERIFY_IS_APPROX(lm.fvec.squaredNorm(), 5.2404744073E-04); @@ -1518,9 +1545,10 @@ void testNistBennett5(void) // do the computation lm.resetParameters(); info = lm.minimize(x); + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, 1); + // VERIFY_IS_EQUAL(info, 1); LM_CHECK_N_ITERS(lm, 203, 192); // check norm^2 VERIFY_IS_APPROX(lm.fvec.squaredNorm(), 5.2404744073E-04); @@ -1587,9 +1615,10 @@ void testNistThurber(void) lm.parameters.ftol = 1.E4*NumTraits::epsilon(); lm.parameters.xtol = 1.E4*NumTraits::epsilon(); info = lm.minimize(x); + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, 1); + // VERIFY_IS_EQUAL(info, 1); LM_CHECK_N_ITERS(lm, 39,36); // check norm^2 VERIFY_IS_APPROX(lm.fvec.squaredNorm(), 5.6427082397E+03); @@ -1611,9 +1640,10 @@ void testNistThurber(void) lm.parameters.ftol = 1.E4*NumTraits::epsilon(); lm.parameters.xtol = 1.E4*NumTraits::epsilon(); info = lm.minimize(x); + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, 1); + // VERIFY_IS_EQUAL(info, 1); LM_CHECK_N_ITERS(lm, 29, 28); // check norm^2 VERIFY_IS_APPROX(lm.fvec.squaredNorm(), 5.6427082397E+03); @@ -1677,9 +1707,10 @@ void testNistRat43(void) lm.parameters.ftol = 1.E6*NumTraits::epsilon(); lm.parameters.xtol = 1.E6*NumTraits::epsilon(); info = lm.minimize(x); + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, 1); + // VERIFY_IS_EQUAL(info, 1); LM_CHECK_N_ITERS(lm, 27, 20); // check norm^2 VERIFY_IS_APPROX(lm.fvec.squaredNorm(), 8.7864049080E+03); @@ -1698,9 +1729,10 @@ void testNistRat43(void) lm.parameters.ftol = 1.E5*NumTraits::epsilon(); lm.parameters.xtol = 1.E5*NumTraits::epsilon(); info = lm.minimize(x); + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, 1); + // VERIFY_IS_EQUAL(info, 1); LM_CHECK_N_ITERS(lm, 9, 8); // check norm^2 VERIFY_IS_APPROX(lm.fvec.squaredNorm(), 8.7864049080E+03); @@ -1760,9 +1792,10 @@ void testNistEckerle4(void) eckerle4_functor functor; LevenbergMarquardt lm(functor); info = lm.minimize(x); + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, 1); + // VERIFY_IS_EQUAL(info, 1); LM_CHECK_N_ITERS(lm, 18, 15); // check norm^2 VERIFY_IS_APPROX(lm.fvec.squaredNorm(), 1.4635887487E-03); @@ -1777,9 +1810,10 @@ void testNistEckerle4(void) x<< 1.5, 5., 450.; // do the computation info = lm.minimize(x); + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, 1); + // VERIFY_IS_EQUAL(info, 1); LM_CHECK_N_ITERS(lm, 7, 6); // check norm^2 VERIFY_IS_APPROX(lm.fvec.squaredNorm(), 1.4635887487E-03); diff --git a/unsupported/test/levenberg_marquardt.cpp b/unsupported/test/levenberg_marquardt.cpp index 7f9a81cd3..d0748d13a 100644 --- a/unsupported/test/levenberg_marquardt.cpp +++ b/unsupported/test/levenberg_marquardt.cpp @@ -24,7 +24,7 @@ using std::sqrt; // tolerance for chekcing number of iterations -#define LM_EVAL_COUNT_TOL 4/3 +#define LM_EVAL_COUNT_TOL 2 struct lmder_functor : DenseFunctor { @@ -75,11 +75,11 @@ void testLmder1() lmder_functor functor; LevenbergMarquardt lm(functor); info = lm.lmder1(x); - + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, 1); - VERIFY_IS_EQUAL(lm.nfev(), 6); - VERIFY_IS_EQUAL(lm.njev(), 5); + // VERIFY_IS_EQUAL(info, 1); + // VERIFY_IS_EQUAL(lm.nfev(), 6); + // VERIFY_IS_EQUAL(lm.njev(), 5); // check norm VERIFY_IS_APPROX(lm.fvec().blueNorm(), 0.09063596); @@ -104,11 +104,12 @@ void testLmder() lmder_functor functor; LevenbergMarquardt lm(functor); info = lm.minimize(x); + EIGEN_UNUSED_VARIABLE(info) // check return values - VERIFY_IS_EQUAL(info, 1); - VERIFY_IS_EQUAL(lm.nfev(), 6); - VERIFY_IS_EQUAL(lm.njev(), 5); + // VERIFY_IS_EQUAL(info, 1); + // VERIFY_IS_EQUAL(lm.nfev(), 6); + // VERIFY_IS_EQUAL(lm.njev(), 5); // check norm fnorm = lm.fvec().blueNorm(); @@ -177,9 +178,10 @@ void testLmdif1() lmdif_functor functor; DenseIndex nfev; info = LevenbergMarquardt::lmdif1(functor, x, &nfev); + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, 1); + // VERIFY_IS_EQUAL(info, 1); // VERIFY_IS_EQUAL(nfev, 26); // check norm @@ -208,9 +210,10 @@ void testLmdif() NumericalDiff numDiff(functor); LevenbergMarquardt > lm(numDiff); info = lm.minimize(x); + EIGEN_UNUSED_VARIABLE(info) // check return values - VERIFY_IS_EQUAL(info, 1); + // VERIFY_IS_EQUAL(info, 1); // VERIFY_IS_EQUAL(lm.nfev(), 26); // check norm @@ -293,11 +296,12 @@ void testNistChwirut2(void) chwirut2_functor functor; LevenbergMarquardt lm(functor); info = lm.minimize(x); + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, 1); + // VERIFY_IS_EQUAL(info, 1); // VERIFY_IS_EQUAL(lm.nfev(), 10); - VERIFY_IS_EQUAL(lm.njev(), 8); + // VERIFY_IS_EQUAL(lm.njev(), 8); // check norm^2 VERIFY_IS_APPROX(lm.fvec().squaredNorm(), 5.1304802941E+02); // check x @@ -314,11 +318,12 @@ void testNistChwirut2(void) lm.setFtol(1.E6*NumTraits::epsilon()); lm.setXtol(1.E6*NumTraits::epsilon()); info = lm.minimize(x); + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, 1); + // VERIFY_IS_EQUAL(info, 1); // VERIFY_IS_EQUAL(lm.nfev(), 7); - VERIFY_IS_EQUAL(lm.njev(), 6); + // VERIFY_IS_EQUAL(lm.njev(), 6); // check norm^2 VERIFY_IS_APPROX(lm.fvec().squaredNorm(), 5.1304802941E+02); // check x @@ -373,11 +378,12 @@ void testNistMisra1a(void) misra1a_functor functor; LevenbergMarquardt lm(functor); info = lm.minimize(x); + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, 1); - VERIFY_IS_EQUAL(lm.nfev(), 19); - VERIFY_IS_EQUAL(lm.njev(), 15); + // VERIFY_IS_EQUAL(info, 1); + // VERIFY_IS_EQUAL(lm.nfev(), 19); + // VERIFY_IS_EQUAL(lm.njev(), 15); // check norm^2 VERIFY_IS_APPROX(lm.fvec().squaredNorm(), 1.2455138894E-01); // check x @@ -390,11 +396,12 @@ void testNistMisra1a(void) x<< 250., 0.0005; // do the computation info = lm.minimize(x); + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, 1); - VERIFY_IS_EQUAL(lm.nfev(), 5); - VERIFY_IS_EQUAL(lm.njev(), 4); + // VERIFY_IS_EQUAL(info, 1); + // VERIFY_IS_EQUAL(lm.nfev(), 5); + // VERIFY_IS_EQUAL(lm.njev(), 4); // check norm^2 VERIFY_IS_APPROX(lm.fvec().squaredNorm(), 1.2455138894E-01); // check x @@ -464,11 +471,12 @@ void testNistHahn1(void) hahn1_functor functor; LevenbergMarquardt lm(functor); info = lm.minimize(x); + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, 1); - VERIFY_IS_EQUAL(lm.nfev(), 11); - VERIFY_IS_EQUAL(lm.njev(), 10); + // VERIFY_IS_EQUAL(info, 1); + // VERIFY_IS_EQUAL(lm.nfev(), 11); + // VERIFY_IS_EQUAL(lm.njev(), 10); // check norm^2 VERIFY_IS_APPROX(lm.fvec().squaredNorm(), 1.5324382854E+00); // check x @@ -486,11 +494,12 @@ void testNistHahn1(void) x<< .1, -.1, .005, -.000001, -.005, .0001, -.0000001; // do the computation info = lm.minimize(x); + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, 1); + // VERIFY_IS_EQUAL(info, 1); // VERIFY_IS_EQUAL(lm.nfev(), 11); - VERIFY_IS_EQUAL(lm.njev(), 10); + // VERIFY_IS_EQUAL(lm.njev(), 10); // check norm^2 VERIFY_IS_APPROX(lm.fvec().squaredNorm(), 1.5324382854E+00); // check x @@ -550,11 +559,12 @@ void testNistMisra1d(void) misra1d_functor functor; LevenbergMarquardt lm(functor); info = lm.minimize(x); + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, 1); - VERIFY_IS_EQUAL(lm.nfev(), 9); - VERIFY_IS_EQUAL(lm.njev(), 7); + // VERIFY_IS_EQUAL(info, 1); + // VERIFY_IS_EQUAL(lm.nfev(), 9); + // VERIFY_IS_EQUAL(lm.njev(), 7); // check norm^2 VERIFY_IS_APPROX(lm.fvec().squaredNorm(), 5.6419295283E-02); // check x @@ -567,11 +577,12 @@ void testNistMisra1d(void) x<< 450., 0.0003; // do the computation info = lm.minimize(x); + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, 1); - VERIFY_IS_EQUAL(lm.nfev(), 4); - VERIFY_IS_EQUAL(lm.njev(), 3); + // VERIFY_IS_EQUAL(info, 1); + // VERIFY_IS_EQUAL(lm.nfev(), 4); + // VERIFY_IS_EQUAL(lm.njev(), 3); // check norm^2 VERIFY_IS_APPROX(lm.fvec().squaredNorm(), 5.6419295283E-02); // check x @@ -628,11 +639,12 @@ void testNistLanczos1(void) lanczos1_functor functor; LevenbergMarquardt lm(functor); info = lm.minimize(x); + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, LevenbergMarquardtSpace::RelativeErrorTooSmall); - VERIFY_IS_EQUAL(lm.nfev(), 79); - VERIFY_IS_EQUAL(lm.njev(), 72); + // VERIFY_IS_EQUAL(info, LevenbergMarquardtSpace::RelativeErrorTooSmall); + // VERIFY_IS_EQUAL(lm.nfev(), 79); + // VERIFY_IS_EQUAL(lm.njev(), 72); // check norm^2 VERIFY(lm.fvec().squaredNorm() <= 1.4307867721E-25); // check x @@ -649,11 +661,12 @@ void testNistLanczos1(void) x<< 0.5, 0.7, 3.6, 4.2, 4., 6.3; // do the computation info = lm.minimize(x); + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, LevenbergMarquardtSpace::RelativeErrorTooSmall); - VERIFY_IS_EQUAL(lm.nfev(), 9); - VERIFY_IS_EQUAL(lm.njev(), 8); + // VERIFY_IS_EQUAL(info, LevenbergMarquardtSpace::RelativeErrorTooSmall); + // VERIFY_IS_EQUAL(lm.nfev(), 9); + // VERIFY_IS_EQUAL(lm.njev(), 8); // check norm^2 VERIFY(lm.fvec().squaredNorm() <= 1.4307867721E-25); // check x @@ -714,11 +727,12 @@ void testNistRat42(void) rat42_functor functor; LevenbergMarquardt lm(functor); info = lm.minimize(x); + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, LevenbergMarquardtSpace::RelativeReductionTooSmall); - VERIFY_IS_EQUAL(lm.nfev(), 10); - VERIFY_IS_EQUAL(lm.njev(), 8); + // VERIFY_IS_EQUAL(info, LevenbergMarquardtSpace::RelativeReductionTooSmall); + // VERIFY_IS_EQUAL(lm.nfev(), 10); + // VERIFY_IS_EQUAL(lm.njev(), 8); // check norm^2 VERIFY_IS_APPROX(lm.fvec().squaredNorm(), 8.0565229338E+00); // check x @@ -732,11 +746,12 @@ void testNistRat42(void) x<< 75., 2.5, 0.07; // do the computation info = lm.minimize(x); + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, LevenbergMarquardtSpace::RelativeReductionTooSmall); - VERIFY_IS_EQUAL(lm.nfev(), 6); - VERIFY_IS_EQUAL(lm.njev(), 5); + // VERIFY_IS_EQUAL(info, LevenbergMarquardtSpace::RelativeReductionTooSmall); + // VERIFY_IS_EQUAL(lm.nfev(), 6); + // VERIFY_IS_EQUAL(lm.njev(), 5); // check norm^2 VERIFY_IS_APPROX(lm.fvec().squaredNorm(), 8.0565229338E+00); // check x @@ -787,14 +802,15 @@ void testNistMGH10(void) /* * First try */ - x<< 2., 400000., 25000.; + x << 2., 400000., 25000.; // do the computation MGH10_functor functor; LevenbergMarquardt lm(functor); info = lm.minimize(x); - ++g_test_level; - VERIFY_IS_EQUAL(info, LevenbergMarquardtSpace::RelativeReductionTooSmall); - --g_test_level; + EIGEN_UNUSED_VARIABLE(info) + // ++g_test_level; + // VERIFY_IS_EQUAL(info, LevenbergMarquardtSpace::RelativeReductionTooSmall); + // --g_test_level; // was: VERIFY_IS_EQUAL(info, 1); // check norm^2 @@ -805,11 +821,11 @@ void testNistMGH10(void) VERIFY_IS_APPROX(x[2], 3.4522363462E+02); // check return value - - ++g_test_level; - VERIFY_IS_EQUAL(lm.nfev(), 284 ); - VERIFY_IS_EQUAL(lm.njev(), 249 ); - --g_test_level; + + // ++g_test_level; + // VERIFY_IS_EQUAL(lm.nfev(), 284 ); + // VERIFY_IS_EQUAL(lm.njev(), 249 ); + // --g_test_level; VERIFY(lm.nfev() < 284 * LM_EVAL_COUNT_TOL); VERIFY(lm.njev() < 249 * LM_EVAL_COUNT_TOL); @@ -819,11 +835,12 @@ void testNistMGH10(void) x<< 0.02, 4000., 250.; // do the computation info = lm.minimize(x); - ++g_test_level; - VERIFY_IS_EQUAL(info, LevenbergMarquardtSpace::RelativeReductionTooSmall); - // was: VERIFY_IS_EQUAL(info, 1); - --g_test_level; - + EIGEN_UNUSED_VARIABLE(info) + // ++g_test_level; + // VERIFY_IS_EQUAL(info, LevenbergMarquardtSpace::RelativeReductionTooSmall); + // // was: VERIFY_IS_EQUAL(info, 1); + // --g_test_level; + // check norm^2 VERIFY_IS_APPROX(lm.fvec().squaredNorm(), 8.7945855171E+01); // check x @@ -832,10 +849,10 @@ void testNistMGH10(void) VERIFY_IS_APPROX(x[2], 3.4522363462E+02); // check return value - ++g_test_level; - VERIFY_IS_EQUAL(lm.nfev(), 126); - VERIFY_IS_EQUAL(lm.njev(), 116); - --g_test_level; + // ++g_test_level; + // VERIFY_IS_EQUAL(lm.nfev(), 126); + // VERIFY_IS_EQUAL(lm.njev(), 116); + // --g_test_level; VERIFY(lm.nfev() < 126 * LM_EVAL_COUNT_TOL); VERIFY(lm.njev() < 116 * LM_EVAL_COUNT_TOL); } @@ -888,6 +905,7 @@ void testNistBoxBOD(void) lm.setXtol(1.E6*NumTraits::epsilon()); lm.setFactor(10); info = lm.minimize(x); + EIGEN_UNUSED_VARIABLE(info) // check norm^2 VERIFY_IS_APPROX(lm.fvec().squaredNorm(), 1.1680088766E+03); @@ -896,9 +914,9 @@ void testNistBoxBOD(void) VERIFY_IS_APPROX(x[1], 5.4723748542E-01); // check return value - VERIFY_IS_EQUAL(info, 1); - VERIFY(lm.nfev() < 31); // 31 - VERIFY(lm.njev() < 25); // 25 + // VERIFY_IS_EQUAL(info, 1); + // VERIFY(lm.nfev() < 31); // 31 + // VERIFY(lm.njev() < 25); // 25 /* * Second try @@ -909,13 +927,14 @@ void testNistBoxBOD(void) lm.setFtol(NumTraits::epsilon()); lm.setXtol( NumTraits::epsilon()); info = lm.minimize(x); + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, 1); - ++g_test_level; - VERIFY_IS_EQUAL(lm.nfev(), 16 ); - VERIFY_IS_EQUAL(lm.njev(), 15 ); - --g_test_level; + // VERIFY_IS_EQUAL(info, 1); + // ++g_test_level; + // VERIFY_IS_EQUAL(lm.nfev(), 16 ); + // VERIFY_IS_EQUAL(lm.njev(), 15 ); + // --g_test_level; VERIFY(lm.nfev() < 16 * LM_EVAL_COUNT_TOL); VERIFY(lm.njev() < 15 * LM_EVAL_COUNT_TOL); // check norm^2 @@ -975,6 +994,7 @@ void testNistMGH17(void) lm.setXtol(NumTraits::epsilon()); lm.setMaxfev(1000); info = lm.minimize(x); + EIGEN_UNUSED_VARIABLE(info) // check norm^2 VERIFY_IS_APPROX(lm.fvec().squaredNorm(), 5.4648946975E-05); @@ -987,8 +1007,8 @@ void testNistMGH17(void) // check return value // VERIFY_IS_EQUAL(info, 2); //FIXME Use (lm.info() == Success) - VERIFY(lm.nfev() < 700 ); // 602 - VERIFY(lm.njev() < 600 ); // 545 + // VERIFY(lm.nfev() < 700 ); // 602 + // VERIFY(lm.njev() < 600 ); // 545 /* * Second try @@ -997,11 +1017,12 @@ void testNistMGH17(void) // do the computation lm.resetParameters(); info = lm.minimize(x); + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, 1); - VERIFY_IS_EQUAL(lm.nfev(), 18); - VERIFY_IS_EQUAL(lm.njev(), 15); + // VERIFY_IS_EQUAL(info, 1); + // VERIFY_IS_EQUAL(lm.nfev(), 18); + // VERIFY_IS_EQUAL(lm.njev(), 15); // check norm^2 VERIFY_IS_APPROX(lm.fvec().squaredNorm(), 5.4648946975E-05); // check x @@ -1063,6 +1084,7 @@ void testNistMGH09(void) LevenbergMarquardt lm(functor); lm.setMaxfev(1000); info = lm.minimize(x); + EIGEN_UNUSED_VARIABLE(info) // check norm^2 VERIFY_IS_APPROX(lm.fvec().squaredNorm(), 3.0750560385E-04); @@ -1072,9 +1094,9 @@ void testNistMGH09(void) VERIFY_IS_APPROX(x[2], 0.12305309914); // should be 1.2305650693E-01 VERIFY_IS_APPROX(x[3], 0.13605395375); // should be 1.3606233068E-01 // check return value - VERIFY_IS_EQUAL(info, 1); - VERIFY(lm.nfev() < 510 ); // 490 - VERIFY(lm.njev() < 400 ); // 376 + // VERIFY_IS_EQUAL(info, 1); + // VERIFY(lm.nfev() < 510 ); // 490 + // VERIFY(lm.njev() < 400 ); // 376 /* * Second try @@ -1083,11 +1105,12 @@ void testNistMGH09(void) // do the computation lm.resetParameters(); info = lm.minimize(x); + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, 1); - VERIFY_IS_EQUAL(lm.nfev(), 18); - VERIFY_IS_EQUAL(lm.njev(), 16); + // VERIFY_IS_EQUAL(info, 1); + // VERIFY_IS_EQUAL(lm.nfev(), 18); + // VERIFY_IS_EQUAL(lm.njev(), 16); // check norm^2 VERIFY_IS_APPROX(lm.fvec().squaredNorm(), 3.0750560385E-04); // check x @@ -1149,11 +1172,12 @@ void testNistBennett5(void) LevenbergMarquardt lm(functor); lm.setMaxfev(1000); info = lm.minimize(x); + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, 1); - VERIFY_IS_EQUAL(lm.nfev(), 758); - VERIFY_IS_EQUAL(lm.njev(), 744); + // VERIFY_IS_EQUAL(info, 1); + // VERIFY_IS_EQUAL(lm.nfev(), 758); + // VERIFY_IS_EQUAL(lm.njev(), 744); // check norm^2 VERIFY_IS_APPROX(lm.fvec().squaredNorm(), 5.2404744073E-04); // check x @@ -1167,11 +1191,12 @@ void testNistBennett5(void) // do the computation lm.resetParameters(); info = lm.minimize(x); + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, 1); - VERIFY_IS_EQUAL(lm.nfev(), 203); - VERIFY_IS_EQUAL(lm.njev(), 192); + // VERIFY_IS_EQUAL(info, 1); + // VERIFY_IS_EQUAL(lm.nfev(), 203); + // VERIFY_IS_EQUAL(lm.njev(), 192); // check norm^2 VERIFY_IS_APPROX(lm.fvec().squaredNorm(), 5.2404744073E-04); // check x @@ -1237,11 +1262,12 @@ void testNistThurber(void) lm.setFtol(1.E4*NumTraits::epsilon()); lm.setXtol(1.E4*NumTraits::epsilon()); info = lm.minimize(x); + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, 1); - VERIFY_IS_EQUAL(lm.nfev(), 39); - VERIFY_IS_EQUAL(lm.njev(), 36); + // VERIFY_IS_EQUAL(info, 1); + // VERIFY_IS_EQUAL(lm.nfev(), 39); + // VERIFY_IS_EQUAL(lm.njev(), 36); // check norm^2 VERIFY_IS_APPROX(lm.fvec().squaredNorm(), 5.6427082397E+03); // check x @@ -1262,11 +1288,12 @@ void testNistThurber(void) lm.setFtol(1.E4*NumTraits::epsilon()); lm.setXtol(1.E4*NumTraits::epsilon()); info = lm.minimize(x); + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, 1); - VERIFY_IS_EQUAL(lm.nfev(), 29); - VERIFY_IS_EQUAL(lm.njev(), 28); + // VERIFY_IS_EQUAL(info, 1); + // VERIFY_IS_EQUAL(lm.nfev(), 29); + // VERIFY_IS_EQUAL(lm.njev(), 28); // check norm^2 VERIFY_IS_APPROX(lm.fvec().squaredNorm(), 5.6427082397E+03); // check x @@ -1329,11 +1356,12 @@ void testNistRat43(void) lm.setFtol(1.E6*NumTraits::epsilon()); lm.setXtol(1.E6*NumTraits::epsilon()); info = lm.minimize(x); + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, 1); - VERIFY_IS_EQUAL(lm.nfev(), 27); - VERIFY_IS_EQUAL(lm.njev(), 20); + // VERIFY_IS_EQUAL(info, 1); + // VERIFY_IS_EQUAL(lm.nfev(), 27); + // VERIFY_IS_EQUAL(lm.njev(), 20); // check norm^2 VERIFY_IS_APPROX(lm.fvec().squaredNorm(), 8.7864049080E+03); // check x @@ -1351,11 +1379,12 @@ void testNistRat43(void) lm.setFtol(1.E5*NumTraits::epsilon()); lm.setXtol(1.E5*NumTraits::epsilon()); info = lm.minimize(x); + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, 1); - VERIFY_IS_EQUAL(lm.nfev(), 9); - VERIFY_IS_EQUAL(lm.njev(), 8); + // VERIFY_IS_EQUAL(info, 1); + // VERIFY_IS_EQUAL(lm.nfev(), 9); + // VERIFY_IS_EQUAL(lm.njev(), 8); // check norm^2 VERIFY_IS_APPROX(lm.fvec().squaredNorm(), 8.7864049080E+03); // check x @@ -1414,11 +1443,12 @@ void testNistEckerle4(void) eckerle4_functor functor; LevenbergMarquardt lm(functor); info = lm.minimize(x); + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, 1); - VERIFY_IS_EQUAL(lm.nfev(), 18); - VERIFY_IS_EQUAL(lm.njev(), 15); + // VERIFY_IS_EQUAL(info, 1); + // VERIFY_IS_EQUAL(lm.nfev(), 18); + // VERIFY_IS_EQUAL(lm.njev(), 15); // check norm^2 VERIFY_IS_APPROX(lm.fvec().squaredNorm(), 1.4635887487E-03); // check x @@ -1432,11 +1462,12 @@ void testNistEckerle4(void) x<< 1.5, 5., 450.; // do the computation info = lm.minimize(x); + EIGEN_UNUSED_VARIABLE(info) // check return value - VERIFY_IS_EQUAL(info, 1); - VERIFY_IS_EQUAL(lm.nfev(), 7); - VERIFY_IS_EQUAL(lm.njev(), 6); + // VERIFY_IS_EQUAL(info, 1); + // VERIFY_IS_EQUAL(lm.nfev(), 7); + // VERIFY_IS_EQUAL(lm.njev(), 6); // check norm^2 VERIFY_IS_APPROX(lm.fvec().squaredNorm(), 1.4635887487E-03); // check x