Skip to content

Embedding Dual-Fixing into Probing - #3244

Open
Opt-Mucca wants to merge 46 commits into
latestfrom
probe-dual-fix
Open

Embedding Dual-Fixing into Probing#3244
Opt-Mucca wants to merge 46 commits into
latestfrom
probe-dual-fix

Conversation

@Opt-Mucca

@Opt-Mucca Opt-Mucca commented Aug 27, 2026

Copy link
Copy Markdown
Collaborator

Description

This implement the technique from https://link.springer.com/article/10.1007/s12532-026-00336-z

Locally I've observed 1.5% time improvement and 8% node improvement across all-optimal. It affects roughly 50% of the instances that solve under both settings. That seems to be a bit better than the numbers that are reported in the paper, and I'd chalk it up to (1) I'm using a 30min time limit (2) I happen to have randomly dropped some unlucky MIPLIB instances (3) My implementation is more efficient (4) I fixed some errors in the reference implementation that were missing some fixings.

Edit: Forgot good old (5). I've written incorrect code.

It seems to affect sub-mips extremely heavily, so introduces a lot of noise on instances that are racing for a primal solution. I'd not trust my results without extra testing from @fwesselm (There's not that many instances where the size of the presolved problem changes, and even for those that do, it's usually only a minor reduction)

@fwesselm I tested this before the last commit, so there's a small chance I broke something (I will test it again over the weekend). I realised that copying the object each time a domain is copied doesn't make sense because it's only used in presolve, and now have tried to get a bit fancy with the copy constructors of HighsDomain. Hopefully this shaves off another small time improvement.

Checklist

  • I have read the contributing guidelines
  • This PR targets the latest branch
  • Tests are passing
  • Documentation was updated where relevant
  • This PR is not primarily AI-generated (per the AI contributions policy in CONTRIBUTING.md)

@Opt-Mucca
Opt-Mucca requested a review from fwesselm August 27, 2026 15:03
@Opt-Mucca

Copy link
Copy Markdown
Collaborator Author

@ZhaoWeiWang0319 feel like reviewing the code? I ended up changing a fair bit, but the core is the same.

@Opt-Mucca

Opt-Mucca commented Aug 27, 2026

Copy link
Copy Markdown
Collaborator Author

I clearly still have a bug given the failing tests..... Will fix that now

Edit: @ZhaoWeiWang0319 should now be good to review

@codecov

codecov Bot commented Aug 27, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 96.13260% with 14 lines in your changes missing coverage. Please review.
✅ Project coverage is 73.29%. Comparing base (f3a6291) to head (47deb3f).
⚠️ Report is 73 commits behind head on latest.

Files with missing lines Patch % Lines
highs/mip/HighsImplications.cpp 89.55% 14 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           latest    #3244      +/-   ##
==========================================
+ Coverage   73.21%   73.29%   +0.08%     
==========================================
  Files         445      445              
  Lines      107890   108381     +491     
  Branches    17278    17385     +107     
==========================================
+ Hits        78990    79438     +448     
- Misses      28624    28666      +42     
- Partials      276      277       +1     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants