Attempt to fix random_search_test by increasing the number of function calls

This commit is contained in:
Nick Thompson 2024-02-18 16:57:37 -08:00 committed by Nick
parent 2a7f254da2
commit c1b95ac86d

View File

@ -23,16 +23,17 @@ template <class Real> void test_ackley() {
// This makes the CI a bit more robust;
// the computation is only deterministic with a deterministic number of threads:
rs_params.threads = 2;
rs_params.max_function_calls *= 10;
std::mt19937_64 gen(12345);
auto local_minima = random_search(ackley<Real>, rs_params, gen);
CHECK_LE(std::abs(local_minima[0]), Real(0.1));
CHECK_LE(std::abs(local_minima[1]), Real(0.1));
CHECK_LE(std::abs(local_minima[0]), Real(0.2));
CHECK_LE(std::abs(local_minima[1]), Real(0.2));
// Does it work with a lambda?
auto ack = [](std::array<Real, 2> const &x) { return ackley<Real>(x); };
local_minima = random_search(ack, rs_params, gen);
CHECK_LE(std::abs(local_minima[0]), Real(0.1));
CHECK_LE(std::abs(local_minima[1]), Real(0.1));
CHECK_LE(std::abs(local_minima[0]), Real(0.2));
CHECK_LE(std::abs(local_minima[1]), Real(0.2));
// Test that if an intial guess is the exact solution, the returned solution is the exact solution:
std::array<Real, 2> initial_guess{0, 0};
@ -124,6 +125,7 @@ void test_three_hump_camel() {
rs_params.upper_bounds[0] = 5.0;
rs_params.upper_bounds[1] = 5.0;
rs_params.threads = 2;
rs_params.max_function_calls *= 10;
std::mt19937_64 gen(56789);
auto local_minima = random_search(three_hump_camel<Real>, rs_params, gen);
for (auto x : local_minima) {
@ -142,6 +144,7 @@ void test_beale() {
rs_params.upper_bounds[0]= 5.0;
rs_params.upper_bounds[1]= 5.0;
rs_params.threads = 2;
rs_params.max_function_calls *= 10;
std::mt19937_64 gen(56789);
auto local_minima = random_search(beale<Real>, rs_params, gen);
CHECK_ABSOLUTE_ERROR(Real(3), local_minima[0], Real(0.1));