-
Notifications
You must be signed in to change notification settings - Fork 34
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
Tolerance tuning for inequality constraints #36
Comments
I'm close to pushing SCS 3.0, which handles both the quadratic x'Px term and the box constraints (lb <= x <= ub) natively, so no conversions required, which should be much easier for qpsolvers to handle and give better results, and handle things like ub = infty. Currently it's sitting in the qp branch. If you want to test it let me know and we can work out any issues together. |
Sounds good! I just gave it a whirl it qpsolvers/qpsolvers#43 and it worked out of the box 👍 Performance-wise avoiding the conversion reduces solve times significantly (details in the PR). Have you documented the API for specifying box constraints? Right now |
Great! Thanks for trying it! The box cone API is as follows: The cone is determined by two vectors Recall that the constraints are The order of cones assumed in the A matrix is now:
|
Thank you for these details 🙂 Unfortunately it will be a while before I take the time to look at these box constraints. Do you have an ETA for the release of SCS 3.0? The results at qpsolvers/qpsolvers#43 are great (and the PR is ready so it wouldn't take me too much time to review and merge it ^.^). Even without the proper box constraints there's already a clear improvement for SCS users. |
Hi @stephane-caron , I'm very close to releasing SCS 3.0, just putting on the finishing touches and allowing some time for feedback etc. It should land in the next week or two. Here is the PR to update core SCS: cvxgrp/scs#169 And here is the PR to update the python interface: #50 Also we have a new documentation website that should hopefully make it easier to work with. In fact we should mention qpsolvers on the website somewhere. Any feedback welcome! |
Nice! 😃 The new Python example is straightforward and helpful. I'm close to releasing a new version of qpsolvers with SCS 3.0. Feel free to check out the code of the |
From an API standpoint, it would be nice if SCS would also return the solution to unconstrained problems. The other QP solvers do, and throwing an exception when there is no constraint can become a pain point to some users (for instance those who solve sequences of problems with variable numbers of constraints). |
I think it would take some rewriting to support that, but if there are no constraints the solution is just |
Sounds good to me. This is done in qpsolvers/qpsolvers@eafa8ac. |
Thanks for pushing SCS to PyPI 😀 I'm adding support for it to qpsolvers for solving quadratic programs (after QP→SOCP conversion).
The only thing that doesn't work out of the box so far are the default tolerances on inequality constraints. On a sample problem, the solution violates inequalities by about
1e-6
, while the other solvers are< 1e-10
. I can get around it by settingeps=1e-7
anduse_indirect=True
(or keepuse_indirect=False
and set an even lowereps=1e-8
), but I don't know how SCS works so this may be inefficient. Would you recommend something else?For now I've written a comment on it in the doc qpsolvers/qpsolvers@6e12ffe, but I'd rather not override solvers' default values if possible.
The text was updated successfully, but these errors were encountered: