动态更改SCIP参数

时间:2019-07-03 22:58:43

标签: scip

我想根据求解过程的状态动态更改与切割生成和原始启发式算法有关的参数。当我在特定节点上分支之后设置诸如maxrounds之类的参数时,这不会给我带来错误,但是我无法确认它是否对后端进程进行了任何更改。

有人可以确认在解决过程中途更改参数是否将这些参数设置为新值以进一步解决问题?

1 个答案:

答案 0 :(得分:3)

是的,可以在搜索过程中更改参数。例如,SCIP将根据新节点选择器的排序策略对开放节点队列进行重新排序,从而对节点选择器优先级进行切换。

请注意,通常,SCIP不会像其他求解器那样期望在搜索过程中修改参数,并且怪异的组合可能会杀死求解过程。

如果某个参数是“安全的”,则可以在求解过程中进行更改,具体取决于该参数的特定实现。例如,separating/maxrounds或其他独立于特定插件的核心参数应始终安全地进行调整。但是,如果在搜索过程中动态启用了单个插件,则可能会无法正常工作,因为它们会错过初始化步骤。

您可以看看src/scip/event_solvingphases.c,它可以通过更改重点设置来调整几个参数。在搜索过程中可以安全地调整这些参数。