Conversation
…into fix-neos-631710-2
…into fix-neos-631710-2
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## latest #3286 +/- ##
==========================================
+ Coverage 73.56% 73.71% +0.14%
==========================================
Files 446 446
Lines 109514 109846 +332
Branches 17543 17564 +21
==========================================
+ Hits 80569 80977 +408
+ Misses 28668 28592 -76
Partials 277 277 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Opt-Mucca
left a comment
There was a problem hiding this comment.
This is a great change! It's surely going to be a nice performance bump.
…into fix-neos-631710-2
|
|
||
| // add clique to clique table | ||
| if (clique.size() >= 2) { | ||
| addClique(mipsolver, clique.data(), |
There was a problem hiding this comment.
I've spent way too long looking at this, but I think the current code (and original code) is missing a case here. If you had some row like 0.5 <= x1 + x2 <= 1 then it'd be stored as a non-equality clique. Assuming the clique then gets merged into something else, the entire row will be deleted. The equality information is now missing however and the resulting problem could admit incorrect solutions! I am guessing this never happens because all (my concern is near all) solution paths have gone through row presolve and upgraded the row to an equality.
There was a problem hiding this comment.
@Opt-Mucca, thanks! extractCliques should handle this. I will update the code shortly.
Description
HPresolve::normaliseCliqueRowsscales all-binary rows to+-1coefficients and<=form for clique extraction if possible.neos-631710the normalisation enables clique merging to detect and remove 166500 binary-binary implication (clique) rows, reducing the presolved model to 3076 rows.Checklist
latestbranch