Skip to content

RENS - #1719

Open
nguidotti wants to merge 8 commits into
root-heuristicsfrom
rens
Open

RENS#1719
nguidotti wants to merge 8 commits into
root-heuristicsfrom
rens

Conversation

@nguidotti

@nguidotti nguidotti commented Aug 14, 2026

Copy link
Copy Markdown
Contributor

This PR implements RENS (Relaxation Enforced Neighborhood Search, see [1, 2]) heuristic. RENS construct and then solve the following sub-MIP:

$$\begin{align} & z^* = \min \, \vec{c}^T \vec{x} \\ & \text{subject to} & \mathbf{A} \vec{x} = \vec{b} \\ & & l_i \leq x_i \leq u_i, \forall i \in \mathcal{N} \setminus \mathcal{I} \\ & & \lfloor \check{x}_j \rfloor \leq x_i \leq \lceil \check{x}_j \rceil, \forall i \in \mathcal{I} \\ & & \vec{x} \in \mathbb{R}^n \\ & & x_j \in \mathbb{Z}, \forall j \in \mathcal{I} \end{align}$$

where $\mathcal{N}$ is the set of all variables and $\mathcal{I}$ is the set of integer values. In essence, all integer variables with integral values are fixed, while the ones with fractional values are restricted to be rounded up or down.

This re-use the same infrastructure as RINS, i.e., it passes through presolve and can recurse. It requires some refactoring of the sub-MIP code to support these additional features.

Closes #1584.

Refences

[1] T. Berthold, “RENS: The optimal rounding,” Math. Prog. Comp., vol. 6, no. 1, pp. 33–54, Mar. 2014, doi: 10.1007/s12532-013-0060-9.
[2] T. Achterberg, “Constraint Integer Programming,” PhD, Technischen Universität Berlin, Berlin, 2007. doi: 10.14279/depositonce-1634.

Checklist

  • I am familiar with the Contributing Guidelines.
  • Testing
    • New or existing tests cover these changes
    • Added tests
    • Created an issue to follow-up
    • NA
  • Documentation
    • The documentation is up to date with these changes
    • Added new documentation
    • NA

@nguidotti nguidotti added this to the 26.10 milestone Aug 14, 2026
@nguidotti nguidotti self-assigned this Aug 14, 2026
@nguidotti nguidotti added non-breaking Introduces a non-breaking change improvement Improves an existing functionality mip labels Aug 14, 2026
@copy-pr-bot

copy-pr-bot Bot commented Aug 14, 2026

Copy link
Copy Markdown

Auto-sync is disabled for draft pull requests in this repository. Workflows must be run manually.

Contributors can view more details about this message here.

Comment thread cpp/src/branch_and_bound/branch_and_bound.cpp Outdated
@nguidotti

nguidotti commented Aug 14, 2026

Copy link
Copy Markdown
Contributor Author

/ok to test 7a9e5f4

@github-actions

github-actions Bot commented Aug 14, 2026

Copy link
Copy Markdown

CI Test Summary

⏭️ All 5 test job(s) skipped.

@nguidotti
nguidotti marked this pull request as ready for review August 15, 2026 08:10
@nguidotti
nguidotti requested a review from a team as a code owner August 15, 2026 08:10
@nguidotti
nguidotti requested review from aliceb-nv, chris-maes, kaatish and rg20 and removed request for kaatish and rg20 August 15, 2026 08:10
Signed-off-by: Nicolas L. Guidotti <nguidotti@nvidia.com>
Signed-off-by: Nicolas L. Guidotti <nguidotti@nvidia.com>
Signed-off-by: Nicolas L. Guidotti <nguidotti@nvidia.com>
Signed-off-by: Nicolas L. Guidotti <nguidotti@nvidia.com>
Signed-off-by: Nicolas L. Guidotti <nguidotti@nvidia.com>
…ll variables to be picked.

Signed-off-by: Nicolas L. Guidotti <nguidotti@nvidia.com>
Signed-off-by: Nicolas L. Guidotti <nguidotti@nvidia.com>
Signed-off-by: Nicolas L. Guidotti <nguidotti@nvidia.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FEA] RENS

2 participants