我正在尝试在 Pyomo 上使用 CBC(v2.10.3) 来解决整数线性问题。
执行求解器时,我当前设置的时间限制为 600 秒。
opt = SolverFactory ("cbc")
opt.options['seconds'] =600
Run Code Online (Sandbox Code Playgroud)
在这个时间限制内,求解器设法找到多个可行的解决方案。但是,当它在 600 秒结束时超时时,它不会返回找到的最佳整数解。相反,它返回一个非整数解。
有没有办法在 pyomo 上使用 CBC 在时间限制结束时返回最佳整数解决方案?
(我知道设置了一个最优差距。但是,最好解决给定的时间并返回找到的最佳解决方案。)
Cbc0010I After 144000 nodes, 17010 on tree, 51.908959 best solution, best possible 5.2447218 (566.79 seconds)
Cbc0010I After 145000 nodes, 16985 on tree, 51.908959 best solution, best possible 5.2447218 (568.59 seconds)
Cbc0010I After 146000 nodes, 17412 on tree, 51.908959 best solution, best possible 5.2447218 (576.34 seconds)
Cbc0010I After 147000 nodes, 17433 on tree, 51.908959 best solution, best possible …Run Code Online (Sandbox Code Playgroud) 我想确保我有资格使用 Bonmin 和 Couenne 来解决 NLP 问题(但我没有整数变量),并且我渴望获得全局最优而不是局部最优。我还读到 Ipopt 首先搜索全局答案,如果没有找到,它将提供本地答案。当我使用 Ipopt 时,我如何理解我的答案是一个全局答案。另外,我想知道针对这些问题最好的 NLP 和 MINLP 开源 python 求解器是什么,可以与 Pyomo 合并?我的问题的主要原因是使用 Bonmin 的以下输出:
注意:默认情况下,您将 Ipopt 与 MUMPS 线性求解器一起使用。其他线性求解器可能更有效(请参阅 Ipopt 文档)。
问候