-
Notifications
You must be signed in to change notification settings - Fork 46
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Compatibility with JuMP 0.19? #130
Comments
The JuMP team doesn't have any immediate plans to update NLopt for JuMP 0.19. We're happy to provide guidance on how to do so, however. |
Is there documentation on what has changed? |
I see, it needs to be changed to use MathOptInterface, I guess? |
Yes, the easiest example to follow is probably Ipopt. Compare and contrast the MOI wrapper https://github.com/JuliaOpt/Ipopt.jl/blob/master/src/MOI_wrapper.jl with the MPB wrapper https://github.com/JuliaOpt/Ipopt.jl/blob/master/src/MPB_wrapper.jl |
And feel free to ask questions at https://gitter.im/JuliaOpt/JuMP-dev. |
Slowly working on this, but in general I find the API a bit bewildering and the docs rather terse; I find myself having to read a lot of source code. Since NLopt doesn't allow you to add variables to an existing https://github.com/JuliaOpt/SemidefiniteOptInterface.jl/tree/master/src I just released NLopt 2.6.0 with functions |
The allocate-load interface is complex and underdocumented, but you don't need to use it. It's an optimization that makes bridges more efficient. The minimal interface you can support is implementing The MOI docs state:
Perhaps we should highlight that implementing Here's an example with Cbc: |
There is http://www.juliaopt.org/MathOptInterface.jl/stable/apireference/#Allocate-Load-API-1 but I think it misses examples, @stevengj let me know if you think something would be useful to add.
In more details, if you just implement
I sort of feel that while implementing |
SemidefiniteOptInterface is rather complicated because it contains hardcoded variable bridges (see jump-dev/MathOptInterface.jl#710). IMO The simplest implementation of Allocate-Load is ECOS: |
Thanks, that's helpful. |
That's a good point. It's easier to implement Thinking about it more, another issue is that our recommendation:
is based on an assumption that doesn't apply to NLopt. Specifically, NLopt doesn't really store problem data. It uses callbacks to query function values and gradients. The wrapper must cache the part of the problem that's not part of the @stevengj Is there a reason you don't want to copy the design of the Ipopt wrapper? Like NLopt, Ipopt internally doesn't support adding constraints or variables dynamically. The wrapper maintains a cache and build the Ipopt problem only during |
I've just found this error while trying to use the example in the README: julia> m = Model(solver=NLoptSolver(algorithm=:LD_MMA))
ERROR: The solver= keyword is no longer available in JuMP 0.19 and later. See the JuMP documentation (http://www.juliaopt.org/JuMP.jl/latest/) for latest syntax. |
Are there news on the compatibility of the solver with JuMP? In my case also the algorithm variable definition doesn't work. Is there an overview of all possible algorithm values and their implementation? |
I'm not aware of any progress on an NLopt/MOI wrapper. |
Hello, just to have an idea of the road map of NLopt. Are there any plans to update the package such that it can be used with JuMP version > 0.18?
The text was updated successfully, but these errors were encountered: