-
-
Notifications
You must be signed in to change notification settings - Fork 398
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
solver capabilities table #83
Comments
It would actually be nice to make this programmatic as well. Choosing default solvers is getting a little hairy... we should be able to request a default solver from MathProgBase given a list of the required capabilities. |
I wonder what does AMPL do without a solver specified... Baking in a capability matrix seems fine to me though. |
The default solver for AMPL is MINOS (??): http://www.ampl.com/DOWNLOADS/ "The default solver will be MINOS" I think the easiest way to build the capability matrix programmatically is by checking which MathProgBase tests pass. This might be a bit of an overhead, so we could cache or hardcode the result. We don't have any MathProgBase tests for callbacks, but we could. |
Oops, haven't addressed choosing default solvers. |
Looks like you meant to close this already. |
Nope, still need the programmatic part of it I think |
Lol whoops. Is there a better way to do this than try/catch the MathProgBase tests? That seems really brittle. |
This doesn't need to block the release, untagging. |
With the recent changes in MPB, we can now do this programmatically using |
This would be a nice addition. |
How would you update this table programmatically? Could we hook into |
I was thinking that this could just be computed at runtime given an instance of an |
That's true, if it's just |
The only issue I see with |
Well then it probably shouldn't be in a release for a JuliaOpt package :) |
We could also require solvers support a |
That introduces an extra level of complexity in that we have to separately define what the problem "classes" are, which could be a bit hairy. Let's just go with |
I think the problem classes are pretty well-defined, at least at this point. We can probably wait until this actually is an issue in practice before we worry about it, though. |
As Miles said at jump-dev/Convex.jl#32, for the conic interfaces it makes sense to implement 2 functions
We are already checking if we support the cone in each solver: We might as well expose this nicely. As of now, Convex.jl has an ugly check here: As for default solver, as of now Convex checks for ECOS, SCS, Gurobi and Mosek in that order and throw an error if none are found.
Perhaps, it would make sense to have that functionality in MPB? |
I agree that this would be nice to have at the MPB level. We've been toying around with a way to construct the lookup table programmatically, but the easy thing to do would just be to hardcode everything in MPB (i.e. not require solvers to implement anything new, at least at this point). |
For the conic interface it makes a lot of sense just to ask solvers to implement |
I think this can be largely addressed with traits at the MPB level. |
* Fix @unix_only and @windows_only depreciation * Removing @static * Added @static for runtime code
This discussion is completely stale after the transition to MOI. It could still be interesting to be able to identify which solvers are able to solve a given model (especially with bridges in the mix), but if someone is interested in this, it should be brought up in a new issue. |
We need a table (either here or in MathProgBase docs) with the capabilities of each of the different solver objects and the names of their corresponding packages.
The text was updated successfully, but these errors were encountered: