Conversation
…nning and failing tests shortly.
…undAndShifting # Conflicts: # check/TestMipSolver.cpp
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## latest #2287 +/- ##
==========================================
+ Coverage 79.10% 79.16% +0.06%
==========================================
Files 343 343
Lines 83376 83694 +318
==========================================
+ Hits 65951 66258 +307
- Misses 17425 17436 +11 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
…into ZIRoundAndShifting # Conflicts: # src/mip/HighsMipSolverData.cpp
jajhall
left a comment
There was a problem hiding this comment.
Since the MIP solver doesn't conform completely to the naming conventions, and HighsPrimalHeuristics::shifting and HighsPrimalHeuristics::ziRound are new methods owned by @fwesselm, I don't insist on the wholesale changes so that they conform completely to the naming conventions. However, outside these - particularly in places like HighsOptions.h, I feel that the conventions are important.
@jajhall, thank you for reviewing this. I have tried to address your comments regarding code outside of |
|
I realise, @fwesselm, that I may not have pointed you to the convention that we use (99% of the time) https://google.github.io/styleguide/cppguide.html |
|
CI looks good, please ignore the documentation failing, this will fix itself once latest goes into master fot the upcoming release. |
|
Thanks @deryaozyurt and @fwesselm! |
We have implemented ZI Round and Shifting heuristics in HiGHS and added 5 new options: mip_heuristic_run_RINS, mip_heuristic_run_RENS, mip_heuristic_run_rootReducedCost, mip_heuristic_run_ZIRound, mip_heuristic_run_Shifting. The ability to turn off the SubMIP using heuristics, namely RINS, RENS and RootReducedCost seems to be beneficial on some problems. By default ZI Round and Shifting heuristics are turned off to maintain the current HiGHS code behavior.
The heuristics code is added in HighsPrimalHeuristics.cpp with two new member functions of HighsPrimalHeuristics class. A new utility function (getInfeasibleRows) is needed and implemented in HighsMipSolverData.cpp. We also altered the function tryRoundedPoint in HighsPrimalHeuristics.cpp and added the aforementioned options to HighsOptions.h.
For ZI Round, we followed the algorithm description in Chris Wallace’s paper in Journal of Heuristics (Vol. 16, pp. 715-722, 2010) titled “ZI round, a MIP rounding heuristic”.
We mostly followed the Shifting algorithm described in Timo Berthold’s Diplomarbeit titled “Primal Heuristics for Mixed Integer Programs” with several alterations.
Note that MipTimerStart/Stop is not implemented for the new heuristics.