From 40f831272a296aa2eee76f4af153bf123cac1e0a Mon Sep 17 00:00:00 2001 From: Vladislav Sovrasov Date: Fri, 27 Jul 2018 18:45:37 +0300 Subject: [PATCH] AGS: add force stop, fix max_iters value when maxevals not specified (#199) --- src/algs/ags/ags.cc | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/algs/ags/ags.cc b/src/algs/ags/ags.cc index 63f3a3e..88312f1 100644 --- a/src/algs/ags/ags.cc +++ b/src/algs/ags/ags.cc @@ -3,9 +3,11 @@ #include "ags.h" #include "solver.hpp" + #include #include #include +#include double ags_eps = 0; double ags_r = 3; @@ -46,7 +48,7 @@ int ags_minimize(unsigned n, nlopt_func func, void *data, unsigned m, nlopt_cons ags::SolverParameters params; params.r = ags_r; - params.itersLimit = stop->maxeval != 0 ? stop->maxeval : 5000; + params.itersLimit = stop->maxeval != 0 ? stop->maxeval : std::numeric_limits::max(); params.eps = ags_eps; params.evolventDensity = evolvent_density; params.epsR = eps_res; @@ -65,6 +67,10 @@ int ags_minimize(unsigned n, nlopt_func func, void *data, unsigned m, nlopt_cons ret_code = NLOPT_MAXTIME_REACHED; return true; } + else if (nlopt_stop_forced(stop)) { + ret_code = NLOPT_FORCED_STOP; + return true; + } else return false; }; optPoint = solver.Solve(external_stop_func); -- 2.30.2