【发布时间】:2019-07-03 22:58:43
【问题描述】:
我想根据求解过程的状态动态更改与剪切生成和原始启发式相关的参数。当我在特定节点上分支后设置 maxrounds 等参数时,它不会给我一个错误,但我无法确认它是否对后端进程进行了任何更改。
有人可以确认是否在求解过程中途更改参数实际上会将这些参数设置为新值以进一步解决问题?
【问题讨论】:
标签: scip
我想根据求解过程的状态动态更改与剪切生成和原始启发式相关的参数。当我在特定节点上分支后设置 maxrounds 等参数时,它不会给我一个错误,但我无法确认它是否对后端进程进行了任何更改。
有人可以确认是否在求解过程中途更改参数实际上会将这些参数设置为新值以进一步解决问题?
【问题讨论】:
标签: scip
是的,可以在搜索过程中更改参数。例如,SCIP 将通过根据新节点选择器的排序策略对打开的节点队列重新排序来对节点选择器优先级的切换起作用。
请注意,一般而言,SCIP 与其他求解器一样,不会期望在搜索过程中修改参数,奇怪的组合可能会终止求解过程。
在求解过程中某个参数是否“安全”可以更改,这在一定程度上取决于该参数的特定实现。应该始终安全地调整,例如 separating/maxrounds 或独立于特定插件的其他核心参数。但是,如果在搜索期间动态启用个别插件,它们可能会或可能不会正常工作,因为它们错过了初始化步骤。
您可以查看src/scip/event_solvingphases.c,它通过更改强调设置来调整几个参数。在搜索过程中调整这些参数当然是安全的。
【讨论】: