From: Vladislav Sovrasov Date: Fri, 27 Jul 2018 15:45:37 +0000 (+0300) Subject: AGS: add force stop, fix max_iters value when maxevals not specified (#199) X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=40f831272a296aa2eee76f4af153bf123cac1e0a;p=nlopt.git AGS: add force stop, fix max_iters value when maxevals not specified (#199) --- 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);