diff --git a/Framework/CurveFitting/src/FuncMinimizers/FABADAMinimizer.cpp b/Framework/CurveFitting/src/FuncMinimizers/FABADAMinimizer.cpp index 60a8ad16179a2c2d3b75ef3c0b2fcedc22eecc7f..97c026344ce20ed52c0950d996052941b5cd2a34 100644 --- a/Framework/CurveFitting/src/FuncMinimizers/FABADAMinimizer.cpp +++ b/Framework/CurveFitting/src/FuncMinimizers/FABADAMinimizer.cpp @@ -39,6 +39,8 @@ const size_t LOWER_CONVERGENCE_LIMIT = 350; const size_t JUMP_CHECKING_RATE = 200; // low jump limit const double LOW_JUMP_LIMIT = 1e-25; +// random number generator +std::mt19937 rng; } DECLARE_FUNCMINIMIZER(FABADAMinimizer, FABADA) @@ -352,8 +354,6 @@ void FABADAMinimizer::finalize() { * @return :: the step */ double FABADAMinimizer::gaussianStep(const double &jump) { - std::mt19937 rng(123 * (int(m_counter) + 45 * int(jump)) + - 14 * int(time_t())); return Kernel::normal_distribution<double>(0.0, std::abs(jump))(rng); } @@ -477,8 +477,6 @@ void FABADAMinimizer::algorithmDisplacement(const size_t ¶meterIndex, double prob = exp((m_chi2 - chi2New) / (2.0 * m_temperature)); // Decide if changing or not - std::mt19937 rng(int(time_t()) + - 48 * (int(m_counter) + 76 * int(parameterIndex))); double p = std::uniform_real_distribution<double>(0.0, 1.0)(rng); if (p <= prob) { for (size_t j = 0; j < m_nParams; j++) { diff --git a/Framework/CurveFitting/test/FuncMinimizers/FABADAMinimizerTest.h b/Framework/CurveFitting/test/FuncMinimizers/FABADAMinimizerTest.h index 26ddce2a4e2741c001fd20c30fe072f8fe6436d9..f1f5ad62963d2ab5e847ad16d202b1c6aee53966 100644 --- a/Framework/CurveFitting/test/FuncMinimizers/FABADAMinimizerTest.h +++ b/Framework/CurveFitting/test/FuncMinimizers/FABADAMinimizerTest.h @@ -178,7 +178,7 @@ public: TS_ASSERT_THROWS_NOTHING(fit.execute()); TS_ASSERT(fit.isExecuted()); - TS_ASSERT_DELTA(fun->getParameter("Height"), 10.0, 0.02); + TS_ASSERT_DELTA(fun->getParameter("Height"), 10.0, 0.1); TS_ASSERT_DELTA(fun->getParameter("Lifetime"), 0.5, 0.01); TS_ASSERT_DELTA(fun->getError(0), 0.7, 1e-1); TS_ASSERT_DELTA(fun->getError(1), 0.06, 1e-2); @@ -194,7 +194,7 @@ public: TS_ASSERT_EQUALS(PDF->x(0).size(), 21); TS_ASSERT_EQUALS(PDF->y(0).size(), 20); TS_ASSERT_DELTA(PDF->y(0)[7], 0.41, 0.3); - TS_ASSERT_DELTA(PDF->y(1)[8], 5.24, 1.0); + TS_ASSERT_DELTA(PDF->y(1)[8], 3.5, 1.0); TS_ASSERT_DELTA(PDF->y(2)[0], 0.44, 0.3); // Test CostFunction table