Skip to content

Add option to disable cut separation at nodes#2678

Merged
jajhall merged 5 commits intoERGO-Code:latestfrom
fwesselm:cutSeparationOption
Dec 8, 2025
Merged

Add option to disable cut separation at nodes#2678
jajhall merged 5 commits intoERGO-Code:latestfrom
fwesselm:cutSeparationOption

Conversation

@fwesselm
Copy link
Copy Markdown
Collaborator

@fwesselm fwesselm commented Dec 3, 2025

  • I have a model where a considerable fraction of the time is spent on separating cuts at branching nodes, but either no cuts are found or they are not effective.
  • I am proposing to add a boolean option mip_allow_cut_separation_at_nodes (default: true) to control cut separation at nodes.
  • I am happy to change the option name if there are concerns.

@codecov
Copy link
Copy Markdown

codecov Bot commented Dec 3, 2025

Codecov Report

❌ Patch coverage is 83.33333% with 2 lines in your changes missing coverage. Please review.
✅ Project coverage is 81.27%. Comparing base (4d0fc37) to head (ed3fdc4).
⚠️ Report is 16 commits behind head on latest.

Files with missing lines Patch % Lines
highs/lp_data/HighsOptions.h 85.71% 1 Missing ⚠️
highs/mip/HighsMipSolver.cpp 80.00% 1 Missing ⚠️
Additional details and impacted files
@@           Coverage Diff           @@
##           latest    #2678   +/-   ##
=======================================
  Coverage   81.27%   81.27%           
=======================================
  Files         349      349           
  Lines       85779    85739   -40     
=======================================
- Hits        69713    69682   -31     
+ Misses      16066    16057    -9     

☔ View full report in Codecov by Sentry.
📢 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.

Copy link
Copy Markdown
Collaborator

@Opt-Mucca Opt-Mucca left a comment

Choose a reason for hiding this comment

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

Happy with the correctness of the change! (and adding the parameter as a feature)
Not sure I love the parameter name, but I'm not coming up with anything better.... Thoughts on mip_separate_cuts_at_nodes or mip_separate_cuts_in_search?

Comment thread highs/mip/HighsMipSolver.cpp
@fwesselm
Copy link
Copy Markdown
Collaborator Author

fwesselm commented Dec 4, 2025

Happy with the correctness of the change! (and adding the parameter as a feature) Not sure I love the parameter name, but I'm not coming up with anything better.... Thoughts on mip_separate_cuts_at_nodes or mip_separate_cuts_in_search?

Thanks @Opt-Mucca - I am not married to the name. Since there is mip_allow_restart, I tried to come up with something similar.

@jajhall
Copy link
Copy Markdown
Member

jajhall commented Dec 4, 2025

Since this is a somewhat niche option, and ere is already a 'mip_allow' option, I don't mind the long name

@fwesselm
Copy link
Copy Markdown
Collaborator Author

fwesselm commented Dec 5, 2025

Thank you both, @jajhall and @Opt-Mucca. If you both think that mip_separate_cuts_at_nodes would be better, I am happy to change the name. Please let me know.

@jajhall
Copy link
Copy Markdown
Member

jajhall commented Dec 5, 2025

Sorry, I meant to send imply that the original 'mip_allow_cut_separation_at_nodes' is fine by me

@Opt-Mucca
Copy link
Copy Markdown
Collaborator

Also happy with the name (don't think my suggestions are actually better).

@jajhall jajhall merged commit 346e090 into ERGO-Code:latest Dec 8, 2025
237 checks passed
@svigerske
Copy link
Copy Markdown
Collaborator

So, to clarify for me, this option is disable separation on all nodes other than root nodes?

Or does have HiGHS separation that isn't at any node, like presolve or MPS parsing?

Maybe at least the description of the option could clarify this.

@Opt-Mucca
Copy link
Copy Markdown
Collaborator

@svigerske your first sentence is correct.

this option is disable separation on all nodes other than root nodes?

Would "Whether cut separation at nodes (after root) is permitted" be better?

@svigerske
Copy link
Copy Markdown
Collaborator

Yes. After root, or other than the root node.

Some other solvers work avoid the naming issue by having options to specify the maximal depth of the node at which to do separation, or a multiple and offset for the node depth when to do separation.

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.

4 participants