-
Notifications
You must be signed in to change notification settings - Fork 218
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
Enable the hybrid solver interface #1366
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should we install osqp and highs by default? I raised the same question on optlang. Quite possibly the answer is no, since installation can be difficult on non-Linux systems?
Btw, I saw that both osqp and highs are available as conda packages, so maybe our recommendation for Mac & Windows platforms could be to use conda? |
I wish, but unfortunately the highs conda package is only the compiled (C) library. It does not include highspy (the Python interface). I did notice in the CI though that the current wheels actually do work on Windows. So it's only MAC that does not work. But I do think this will be fixed in the coming months. I do know the HIGHS team is working on fixing the wheels. |
This enables the hybrid solver from optlang.
Example
Things to consider
There is currently an issue with the wheels for highspy. The wheels on PyPI only work with linux at the moment. There are some candiates here in the artifacts. Installing from source will work on all OSs. Broken wheels are handled by optlang and if code is run on a platform with a broken highspy wheel it will not be listed as an available solver.
This is not specific to the hybrid interface but in some case one has to set the configuration for LP/QP methods before switching if the next solver does not support he same methods. Maybe this should be handled more gracefully in optlang by using the default and issuing a warning instead of raising an error.
HIGHS and OSQP only support getting the full set of primals/duals at once, so there is no good way of getting primals for only one variable. Right now, the interface will thus obtain the full solution on every solve, which makes basis recycling a bit slower. So it is not the best solver for FVA or gene deletions.
Is it okay if I also fix the
minimal_medium
pandas deprecation warning here?Full test and benchmark results