Repository navigation
Conversation
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## latest #3463 +/- ##
==========================================
- Coverage 75.13% 75.09% -0.04%
==========================================
Files 460 460
Lines 112194 112249 +55
Branches 17788 17800 +12
==========================================
- Hits 84298 84296 -2
- Misses 27614 27671 +57
Partials 282 282 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
|
Centring is not documented, so it's probably better not to report its status. |
|
I've got no strong opinion here aside from preferring any additional guardrails. Wouldn't we need to keep the status regardless though, or would we trust a failed centering call that happens to pass our center-like checks? |
|
We can discuss this Thursday. I am not sure of what is actually important for the MIP heuristic, because it only seems to use the primal analytic centre, so having a good quality primal-dual centre (what IPX does) may be overkill. |
Description
Add two helper functions to assess the centrality of a point.
These can be used to assess whether the analytic centre solution is well centred, before using it in the heuristic.
primalDualCentringRatiomimics IPX's internal check during the centring phase. It doesn't have access to the IPX internal solution format though, so the computed ratio may differ from what IPX computed. It returns a ratio that should be small (say <100) for well centred points. However, this is a primal-dual metric, while the MIP heuristic only uses the primal solution (col_value), so using this ratio may be too conservative.numNearlyActiveBoundscomputes the number of bounds that are almost active, based on a tolerance. This should be much larger than the tolerance of IPX, say 1e-4. If it returns a number larger than zero, then there are variables that are close to their bounds and the points should not be used for the heuristic.I'm not sure which one is better to assess the solution of the analytic centre, but I think that either of them is better than just looking at the centring status. Running test
issue-3451on my mac, the centring calculation succeeds, but both helper functions reject the point (primalDualCentringRatioreturns infinity,numNearlyActiveBoundsreturns 1).@fwesselm @Opt-Mucca I'm not sure where to go from here. Maybe we need to do some tests.
Checklist
latestbranch