Cannot use Options with box constrained optimization (without providing gradient?)
I am trying to optimize a function in a box constrained setting. I cannot provide its gradient. This seems not to be an issue if I am not asking for any options, but as soon as I put some, I have the following error.
x_0 = [1., 1.]
lower = zeros(length(x_0))
upper = ones(length(x_0))
optimize(f, x_0, Optim.Options(time_limit = 15.0))
# works
optimize(f,lower, upper, x_0)
# works
optimize(f,lower, upper, x_0 , Optim.Options(time_limit = 15.0))
# fails :
# MethodError: objects of type Vector{Float64} are not callable
# Use square brackets [] for indexing an Array.
# I assume that the problem comes from not providing "g"
I am not sure if this comes from misuse from my side.
Have you tried explicitly instantiating the solver and wrapping it in Fminbox? e.g. Fminbox(NelderMead()).
Fminbox is used in the examples under Box Constrained Optimization. It's a bit indirect to learn about it; the documentation could certainly use some updating. Also, I am not sure if Fminbox works for gradient-free solvers.
Edit: I just checked the source code and Fminbox does indeed seem to support gradient-free methods.
There might be missing a dispatch somewhere. Try to specify Fminbox explicitly before the options as @jecs stated.