克隆部分解决的 MIP 并保持当前的 B&B 树
Cloning partially solved MIP and keeping current B&B tree
我想部分解决 MIP,克隆问题并让问题的副本继续优化,但使用不同的策略(节点选择规则、变量选择规则等),并保持当前分支和-绑定树。我知道这不能用 CPLEX 或 Gurobi 来完成,因为它们会在副本中从头开始优化。
有什么方法可以用 SCIP 做到这一点吗?
非常感谢任何帮助。
最佳,
鲁道夫
如果您不坚持使用 copy/clone,您始终可以根据事件处理程序对停止条件进行编码。我相信你知道我们的 How to on adding event handlers.
scip源码中还有一个事件处理器,即所谓的软限时事件处理器src/scip/event_softtimelimit.c
。在那里您可以找到在找到第一个解决方案后更改时间限制的示例代码。参数可以通过代码中的SCIPchg{Real,Bool,Int,Longint,Char,String}Param()
方法一个一个地传递,或者作为设置文件传递,如果你想改变很多参数而不需要每次都调整代码,这可能会更容易。
最好使用通过 set diffsave
命令保存的设置文件,该命令仅保存非默认设置。否则,使用完整的设置文件,您可能会 运行 遇到麻烦,因为时间限制或内存限制会在不受控制的情况下更改。
目前无法复制包含分支定界求解过程中使用的数据结构(例如树)的副本。 SCIP的复制机制只允许将问题作为一个整体进行复制,并通过改变变量域and/or objective系数来调整公式。
我想部分解决 MIP,克隆问题并让问题的副本继续优化,但使用不同的策略(节点选择规则、变量选择规则等),并保持当前分支和-绑定树。我知道这不能用 CPLEX 或 Gurobi 来完成,因为它们会在副本中从头开始优化。
有什么方法可以用 SCIP 做到这一点吗?
非常感谢任何帮助。
最佳,
鲁道夫
如果您不坚持使用 copy/clone,您始终可以根据事件处理程序对停止条件进行编码。我相信你知道我们的 How to on adding event handlers.
scip源码中还有一个事件处理器,即所谓的软限时事件处理器src/scip/event_softtimelimit.c
。在那里您可以找到在找到第一个解决方案后更改时间限制的示例代码。参数可以通过代码中的SCIPchg{Real,Bool,Int,Longint,Char,String}Param()
方法一个一个地传递,或者作为设置文件传递,如果你想改变很多参数而不需要每次都调整代码,这可能会更容易。
最好使用通过 set diffsave
命令保存的设置文件,该命令仅保存非默认设置。否则,使用完整的设置文件,您可能会 运行 遇到麻烦,因为时间限制或内存限制会在不受控制的情况下更改。
目前无法复制包含分支定界求解过程中使用的数据结构(例如树)的副本。 SCIP的复制机制只允许将问题作为一个整体进行复制,并通过改变变量域and/or objective系数来调整公式。