I am searching for a minimum using NLopt.LN_SBPLX
. The optimizer stops prematurely after ~100 iterations without throwing any errors or printing any messages. display(sol)
simply returns the last parameter vector that was used by the solver. I know the termination is premature because the value of the objective function was decreasing immediately before the termination (I can tell because the function moment_for_optimizer
prints the value of the objective function).
How can I display the solver status and reason for termination? Usually solvers give you messages such as xtol was reached
etc. I am looking for something like that so I know which tolerance to increase if I want the solver to continue running.
Below is how I call the optimizer
# moment_for_optimizer(x) = somefunction(x)
g(p_vec, pp) = moment_for_optimizer(p_vec)
f = OptimizationFunction(g)
prob = Optimization.OptimizationProblem(f, param_vec_guess, 1)
sol = solve(prob, NLopt.LN_SBPLX())
display(sol)