-
Notifications
You must be signed in to change notification settings - Fork 19
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
Better integration with JuMP + GSOC #55
Comments
Oscar, Thanks for reaching out and for the kind works, it has been a lot of work to get to this point. For the most part, JuMP has been fairly straightforward to extend and most of the complexity in this code is trying to retain a lot of JuMP's flexibility while considering the complexities of interdependent variable types (e.g., a lot of variables depend on infinite parameters which complicates methods like deletion). Before mentioning some additions that would be helpful, I should mention that we are about 90% complete with a major restructuring and enhancement that will be comprise v0.2.0 which greatly streamlines a lot of methods, implements a much cleaner data structure, increases performance, and will add implicit ODE/PDE support of arbitrary orders (thus closing the majority of the open issues). This overhaul also changes our variable type hierarchy by introducing a general variable reference that allows us to build expressions with a concrete variable type for better performance (and better JuMP compatibility) and we now use a dynamic mapping scheme to track which expressions are infinite. With regard to JuMP, the following additions comprise most of my wish list:
I'll leave it at that for now, but I would be happy to discuss any of this in more detail. Feel free to email me to set something up (I believe you have my email). |
I spoke to @pulsipher offline. Here is a summary of the points, with links to open issues:
jump-dev/MathOptInterface.jl#846
jump-dev/JuMP.jl#2176
Low priority.
Approach taken in InfiniteOpt 2.0 is the way to go. Make one concrete model type with some internal state which dictates whether it is a normal decision variable, infinite decision variable, etc.
I need to think more about this. Current hack is okay in near-term.
Should probably be implemented in InfiniteOpt for now.
Should probably be implemented in InfiniteOpt for now.
jump-dev/JuMP.jl#2246
Essentially, if you have an outer
Yes. |
@odow I am going to close this, since most of it has been addressed now. The only item that remains is making |
There is a pretty incredible amount of work here (docs are outstanding).
I haven't quite wrapped my head around all of the functionality you have, so my question is: what, if anything, can we add to JuMP to make this simpler?
@tomasfmg is doing a GSOC adding parameters to MOI. I think there is some overlap, particularly with https://pulsipher.github.io/InfiniteOpt.jl/stable/guide/expression/#Datatype-Hierarchy-1. At the very least, we should understand the differences so we're not duplicating a lot of work
cc @blegat @mlubin @joaquimg
The text was updated successfully, but these errors were encountered: