Julia JuMP Cbc解算器无限挂起,没有消息,也没有退出

问题描述

我正在使用Julia语言(版本1.3.1),JuMP软件包(版本0.20.1)和Cbc软件包(版本0.6.6)来解决ubuntu:16.04的docker容器中的优化问题。优化器Cbc似乎已挂起,CPU使用率为100%,没有退出且没有任何消息。该问题很少在类似问题上发生,并且似乎不可复制:如果我使用相同的数据运行相同的代码,它将不再挂起。希望通过gdb获得的backtrace有用。

如果需要,我可以共享我的模型。它具有11520个变量,4652个约束,10080个线性目标函数中使用的变量。

这是Cbc优化器的日志:

欢迎使用CBC MILP解算器 版本:2.10.3建立日期:2019年10月7日

命令行-Cbc_C_Interface -threads 0 -seconds 360.0 -maxNodes 30000 -logLevel 1 -solve -quit(默认策略1)秒为 从1e + 100更改为360 maxNodes从2147483647更改为 30000连续目标值为2.3607e + 08-0.11秒 Cgl0002I 3197变量已固定Cgl0005I 7 SOS,具有8323个成员 Cgl0004I处理的模型具有15行8323列(8323整数(8323 其中的二进制))和26556个元素Cbc0045I仅修复非零 变量。 Cbc0045I警告:mipstart值不能用于 建立解决方案。

此处Cbc似乎已被挂起,并且无响应,CPU使用率为100%。

以下是正在运行的pid进程的回溯记录:

#0 0x00007f163c3facc9 in ?? ()来自目标:/root/.julia/packages/Cbc/vWzyC/deps/usr/lib/libCbcSolver.so #1 0x00007f163c4125b3 in ?? ()来自目标:/root/.julia/packages/Cbc/vWzyC/deps/usr/lib/libCbcSolver.so #2 0x00007f163c467586 in ?? ()来自目标:/root/.julia/packages/Cbc/vWzyC/deps/usr/lib/libCbcSolver.so #3 0x00007f163c46aebc in ?? ()来自目标:/root/.julia/packages/Cbc/vWzyC/deps/usr/lib/libCbcSolver.so #4 0x00007f163c40594a in ?? ()来自目标:/root/.julia/packages/Cbc/vWzyC/deps/usr/lib/libCbcSolver.so #5 0x00007f163c29afbe in ?? ()来自目标:/root/.julia/packages/Cbc/vWzyC/deps/usr/lib/libCbcSolver.so #6 0x00007f163c2ad844 in ?? ()来自目标:/root/.julia/packages/Cbc/vWzyC/deps/usr/lib/libCbcSolver.so #7 0x00007f163b8ea31f in CbcHeuristicDive :: solution(double&,int&,int&,OsiRowCut **,CbcSubProblem &,double *)()从 目标:/root/.julia/packages/Cbc/vWzyC/deps/usr/lib/libCbc.so.3 来自CbcHeuristicDive :: solution(double&,double *)()的#8 0x00007f163b8ebf42 目标:/root/.julia/packages/Cbc/vWzyC/deps/usr/lib/libCbc.so.3 #9 0x00007f163b938fd2在CbcModel :: solveWithCuts(OsiCuts&,int,CbcNode *)()从 目标:/root/.julia/packages/Cbc/vWzyC/deps/usr/lib/libCbc.so.3 #10 0x00007f163b9472d7 in CbcModel :: branchAndBound(int)()from target:/root/.julia/packages/Cbc/vWzyC/deps/usr/lib/libClibc.so.3 #11 0x00007f163c214c47在CbcMain1(int,char const ,CbcModel&,int()(CbcModel ,int),CbcSolverUsefulData&)()中 目标:/root/.julia/packages/Cbc/vWzyC/deps/usr/lib/libCbcSolver.so 来自CbcMain1(int,char const **,CbcModel&)()中的#12 0x00007f163c2252ae 目标:/root/.julia/packages/Cbc/vWzyC/deps/usr/lib/libCbcSolver.so #13 0x00007f163c19bc50在Cbc_solve()中来自目标:/root/.julia/packages/Cbc/vWzyC/deps/usr/lib/libCbcSolver.so #14 0x00007f16698e7e71 in ?? () #15 0x000000000000000c in ?? () #16 0x00007fff70694480 in ?? () #17 0x00007f16604ce110 in ?? () #18 0x000000000000262e in ?? () #19 0x0000000000000006 in ?? () #20 0x00007fff70694480 in ?? () #21 0x00007f165966ab40 in ?? () #22 0x00007f164a7ce1d0 in ?? () #23 0x00007f164a7ce220 in ?? () #24 0x00007f164a7ce1d0 in ?? () #25 0x00007f1688be7b00 in ?? ()在/buildworker/worker/package_linux64/build/src/array.c:738中 目标:/ opt / julia / bin /../ lib / libjulia.so.1 #26 0x00007f163d909af0 in ?? () #27 0x00007f164439d3c0 in ?? () #28 0x00007f1689524200 in ?? () #29 0x0000000000000000 in ?? ()

next控制台中使用gdb命令,会在CbC上捕获到StackOverflowError()错误。

目标函数的术语过多吗?

任何帮助都是真的。

谢谢

解决方法

这似乎是Cbc的问题。没有可复制的示例,就不可能提供更多建议。我建议您尝试简化模型并创建MPS文件。

,

您可以使用参数设置时间限制,如下所示。

对于较新的软件包版本:

model = Model(optimizer_with_attributes(Cbc.Optimizer,"seconds" => 60,"threads" => 4,"loglevel" => 0,"ratioGap" => 0.0001))

对于较旧的软件包版本,或者像这样:

model = Model(with_optimizer(Cbc.Optimizer,seconds=60,threads=4,loglevel=0,ratioGap=0.0001))

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...