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!

@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.

3 participants