Skip to content

Conversation

@aliceb-nv
Copy link
Contributor

@aliceb-nv aliceb-nv commented Sep 22, 2025

MIPLIB2017 problems from the enlight* series are usually hard to solve by the regular B&B and heuristics process, but they possess a specific problem structure which can be reduced to a properly constrained system of equations in GF(2). (machine translation does a decent job at translating this blog post)

In particular, each constraint is of the form
image
With x_i binary variables, b_i 0 or 1, and y_i an integer 'dummy' variable used to represent equality modulo 2.

This system can then be solved by textbook Gaussian elimination in GF(2).

Problems enlight_hard.mps (in the benchmark set) and enlight8.mps are thus solved to optimality during presolve, and enlight4.mps, enlight11.mps and enlight9.mps are proven infeasible.
This in turns improves our benchmark performance by +1 feasible and -0.5% average gap.

Benchmark results:

Main branch 53d6e74:

Regression Baseline Summary (Time Limit: 600s):
  Feasible instances: 221/240
  Average gap: 0.207478
  Average integral: 0.261499

Excel results

PR 182ac18

cuopt 600s: 
feasible 222/240 
gap 0.202463 
integral 0.267925

Excel results

@aliceb-nv aliceb-nv added this to the 25.10 milestone Sep 22, 2025
@aliceb-nv aliceb-nv requested review from a team as code owners September 22, 2025 10:28
@aliceb-nv aliceb-nv added non-breaking Introduces a non-breaking change improvement Improves an existing functionality labels Sep 22, 2025
Copy link
Contributor

@rg20 rg20 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great example of how building new presolver methods without adding new infrastructure!

aliceb-nv and others added 3 commits September 22, 2025 17:52
Co-authored-by: Rajesh Gandham <rgandham@nvidia.com>
Co-authored-by: Rajesh Gandham <rgandham@nvidia.com>
@rgsl888prabhu
Copy link
Collaborator

/merge

@rapids-bot rapids-bot bot merged commit 67d5151 into branch-25.10 Sep 23, 2025
102 checks passed
@rgsl888prabhu rgsl888prabhu deleted the gf2-pr branch October 29, 2025 16:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

improvement Improves an existing functionality non-breaking Introduces a non-breaking change

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants