How to fully disable automatic node fathoming in PySCIPOpt? #1233
Replies: 2 comments
-
|
Hey @ICSRicotero ! I don't think there's a single parameter for this, but what may help is the following.
model.setPresolve(SCIP_PARAMSETTING.OFF)
model.setHeuristics(SCIP_PARAMSETTING.OFF)
model.setSeparating(SCIP_PARAMSETTING.OFF)
model.setParam("propagating/maxrounds", 0)
model.setParam("propagating/maxroundsroot", 0)
model.setParam("conflict/enable", False)
model.setParam("misc/allowstrongdualreds", False)
model.setParam("misc/allowweakdualreds", False)I may have missed some, but beware that this will have an impact on solving time. For the branch-and-bound tree traversal, I then suggest implementing a node selector. This is all super hacky, can you think of a better way to do this @DominikKamp ? |
Beta Was this translation helpful? Give feedback.
-
|
If the LP solver finds a primal solution, it will cut off the current node, so one would also need to disable LP solving with |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Hi all,
I'm implementing a custom Branch-and-Bound logic using PySCIPOpt. While I can manually prune nodes (e.g., by returning SCIP_RESULT.CUTOFF from my custom plugins), I want exclusive control over when fathoming occurs.
Currently, SCIP automatically prunes nodes in the background via:
Bound: LP lower bound exceeds the cutoff bound.
Infeasibility: LP relaxation or domain propagation proves infeasibility.
Is there a way to completely disable these automatic internal fathoming mechanisms so my logic is the sole trigger?
If no global parameter exists, is the best workaround to use Model.setObjlimit(float('inf')) to prevent bound pruning, and turn off all propagators to prevent infeasibility pruning?
Thanks!
Beta Was this translation helpful? Give feedback.
All reactions