-
Notifications
You must be signed in to change notification settings - Fork 31
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
Clarabel 7.1 errors with insufficient progress on a seemingly simple SOCP #96
Comments
PR RobotLocomotion#21053 to upgrade clarabel fell over on some numerical problems in the PhiConstraint unit test. I've captured that failure and reported it in oxfordcontrol/Clarabel.rs#96 . In examining the problem, I found a number of small errors in the existing test. Resolving those errors allows clarabel 7.1 to pass the tests without any upstream changes required. The changes in the PhiConstraint test are: - QuadraticCost was being used incorrectly (we forgot the factor of 2). It was also documented as being the L2 norm, instead of the L2 norm squared. - Added a diagram to the doc and minor code cleanup. In GCS, I made two changes, both of which have no functional impact: - The bounding box constraint with lb==ub was replaced with a linear equality constraint (which should be preferred). - I've slightly improved the variable names used in the mathematical program, for readability during debugging. This program is intentionally not exposed to the user, and all of the changes were to internally defined variables. Although a user _could_ have gotten to these by mucking around in the MathematicalProgramResult, there is nothing in the API contract that is changing on them.
PR 21053 to upgrade clarabel fell over on some numerical problems in the PhiConstraint unit test. I've captured that failure and reported it in oxfordcontrol/Clarabel.rs#96 . In examining the problem, I found a number of small errors in the existing test. Resolving those errors allows clarabel 7.1 to pass the tests without any upstream changes required. The changes in the PhiConstraint test are: - QuadraticCost was being used incorrectly (we forgot the factor of 2). It was also documented as being the L2 norm, instead of the L2 norm squared. - Added a diagram to the doc and minor code cleanup. In GCS, I made two changes, both of which have no functional impact: - The bounding box constraint with lb==ub was replaced with a linear equality constraint (which should be preferred). - I've slightly improved the variable names used in the mathematical program, for readability during debugging. This program is intentionally not exposed to the user, and all of the changes were to internally defined variables. Although a user _could_ have gotten to these by mucking around in the MathematicalProgramResult, there is nothing in the API contract that is changing on them.
In 0.7.1 we fixed a bug in the data equilibration that allowed the matrix scaling to exceed the limits set by the user. In the course of fixing that I also relaxed the bounds slightly (because hey, at least the bounds always work now....). Probably that was a mistake. A temporary fix is to go back to the old limits:
We will make this reversion permanent in the next minor release assuming it doesn't break something elsewhere. I'll also add this case to our unit testing. |
Old limits have been restored in new v0.8.0. |
PR 21053 to upgrade clarabel fell over on some numerical problems in the PhiConstraint unit test. I've captured that failure and reported it in oxfordcontrol/Clarabel.rs#96 . In examining the problem, I found a number of small errors in the existing test. Resolving those errors allows clarabel 7.1 to pass the tests without any upstream changes required. The changes in the PhiConstraint test are: - QuadraticCost was being used incorrectly (we forgot the factor of 2). It was also documented as being the L2 norm, instead of the L2 norm squared. - Added a diagram to the doc and minor code cleanup. In GCS, I made two changes, both of which have no functional impact: - The bounding box constraint with lb==ub was replaced with a linear equality constraint (which should be preferred). - I've slightly improved the variable names used in the mathematical program, for readability during debugging. This program is intentionally not exposed to the user, and all of the changes were to internally defined variables. Although a user _could_ have gotten to these by mucking around in the MathematicalProgramResult, there is nothing in the API contract that is changing on them.
While upgrading Drake to clarabel 7.1 (RobotLocomotion/drake#21053), one of our (seemingly simple) unit tests started falling down with "insufficient progress". Mosek solves it fine.
I've carved out the following reproduction
Results in
Admittedly there are some ugly small coefficients in there... this was generated through our higher-level GCS abstraction. But I thought it was best to capture the instance and report.
The text was updated successfully, but these errors were encountered: