Add two new presolve techniques in combining probing and dual fixing - #3212
Conversation
|
Thanks for this. Although I appreciate that this is still only a draft PR, I hope that @Opt-Mucca and @fwesselm can give some initial opinions on its suitability for inclusion in HiGHS, and make an assessment of the potential performance gain. |
|
@jajhall I can look into this tomorrow. @ZhaoWeiWang0319 thanks for responding to my email request so quickly! Do you mind if we take the code (keeping contribution for your commits) and make changes ourselves? For example, I'd probably remove |
|
Thanks @jajhall, @Opt-Mucca! Not at all! Please feel free to take the code and make any changes you think are appropriate! |
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## latest #3212 +/- ##
==========================================
+ Coverage 72.77% 72.84% +0.06%
==========================================
Files 444 444
Lines 107464 108020 +556
Branches 17288 17410 +122
==========================================
+ Hits 78208 78686 +478
- Misses 28979 29056 +77
- Partials 277 278 +1 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
|
Thanks, I've merged this into the |
This PR implements two presolve techniques that combine probing and dual fixing in HiGHS: dual fixing augmented probing and generalized dual fixing, described in our paper: Enhancing Presolve in Mixed Integer Programming by Combining Probing and Dual Fixing.
The first technique embeds dual fixing into the probing framework, allowing more tentative bound changes to be detected during probing. The second extends classical dual fixing and uses probing to efficiently detect additional variable fixings.
The implementation is mainly integrated into
HighsDomainandHighsImplications, with two new options,presolve_dfprobingandpresolve_gdf, for controlling the two techniques.Note that compared with our implementation of the paper in here, the code is re-implemented so that
(1) the changes on existing HiGHS are minimal, and
(2) it is consistent with current HiGHS architecture, as HiGHS continues to evolve with many new features and improvements.
We greatly appreciate the continued development and maintenance of HiGHS and hope these techniques can provide a useful addition to the presolve framework. We would be very happy to contribute this work to the HiGHS community and welcome any feedback or suggestions!