-
Notifications
You must be signed in to change notification settings - Fork 38
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
[RFC] New abstraction for LPQP/Conic/NLP solvers #91
Conversation
How does the quadratic part of |
Same as now, no changes. You use |
Adding a quadratic objective/constraint part to |
From my end of things it looks good. It will be a bit more work to implement, but it will make underlying mappings simpler and the interface clearer. Question for the AbstractConicModel: getunboundedray() and getinfeasibilityray() seems to only be defined for AbstractLinearQuadraticModel. Do getsolution()/getduals() for AbstractConicModel return rays or certificates? |
@ulfworsoe, |
I've updated a few solvers (ECOS, SCS, Cplex, Gurobi, GLPK) and have JuMP passing tests locally. I'm going to plan on merging and doing the massive version bumps early next week. Thanks to @carlobaldassi, many packages using MPB set 0.4 as an upper bound in REQUIRE, which means they won't immediately break when MPB 0.4 is tagged. The ones that don't have this will immediately break. The fixes should be very easy (< 5 lines diff) though. @ulfworsoe, will you have a chance to look at the corresponding updates to Mosek.jl? That one might be a bit more complex since it's the only solver which implements all three interfaces. |
Already on it. |
I think there is a file "LinearQuadratic.jl" missing in the mpb0.4 branch. |
Oops, pushed. |
@ulfworsoe, you can take a look at the PRs referenced above to see the changes involved. |
Given that the current changes are mostly implemented and seem manageable, I'm open to suggestions/votes for other breaking changes as long as we're at it. We don't do this very often. |
Edit: Never mind. Stupid question.
|
@ulfworsoe, it's not mandatory, but we'll have to do some extra work in JuMP to handle this case in order to avoid breaking existing models. Won't be too difficult to do though. |
Ok. That means that I can actually implement the nonlinear and the model in the same object. |
@mlubin, I have updated the Mosek interface. Changes are in the mpb0.4-impl branch of Mosek.jl. It should pass at least the tests I threw at it (MathProgBase tests plus a few more). |
[RFC] New abstraction for LPQP/Conic/NLP solvers
New interface is as follows:
For LP/QP/QCQP:
For conic:
For NLP:
The purpose of this change is to address the confusion of interfaces described in #73. Existing methods are categorized in the new docs as to which interface they belong to.
loadconicproblem!
andloadnonlinearproblem!
are renamed toloadproblem!
, andgetconicdual
is renamed togetdual
. I'd like to minimize any other changes we make to the interface at this point (#87, #84, #79,loadquadraticproblem!
from #73). Just implementing the proposed breaking change will be enough work and will make those changes easier to do in the future.CC @tkelman @madeleineudell @IainNZ @joehuchette @dpo @ulfworsoe @carlobaldassi @JackDunnNZ @yeesian