问题标签 [coin-or-cbc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
69 浏览

c++ - 我可以将 CPLEX 更改为 CBC 求解器吗?

我有基于 CPLEX 求解器(可行性泵 2.0)的 MIP 程序。

我的任务是让这个程序在 CBC 求解器上运行。

所以我尝试用相应的功能更改代码,但程序大小太大,无法修改每个 CPLEX 代码(源代码大小几乎 2MB)。

你知道有效的方法或有用的参考吗?

0 投票
3 回答
1254 浏览

python - 如何在 Python 中将时间和间隙限制与 Google OR-Tools 结合起来?

我正在使用带有 CBC_MIXED_INTEGER_PROGRAMMING 求解器的 Google OR-Tools。

大多数情况下,求解器会在不到 20 秒的时间内找到最优解,但有时需要几分钟才能找到。它可以非常快速地猜测出对解决方案的良好估计,但找到最佳解决方案需要很长时间。

我的第一个想法是设置一个简单的时间限制,以返回 30 秒后找到的最佳解决方案:

不幸的是,此时找到的解决方案可能与最佳解决方案相差太远。

是否有可能:

  1. [00 - 30 秒] 如果在不到 30 秒内找到最佳解决方案,则返回该解决方案。
  2. [30 - 60 秒] 如果未找到最佳解决方案,则接受 5% 的 GAP 额外 30 秒(GAP LIMIT)
  3. [60+ 秒] 如果求解器在一分钟后仍在运行,则返回找到的最佳解决方案 (TIME LIMIT)

提前谢谢了,

罗曼

0 投票
2 回答
327 浏览

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

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

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

这是 Cbc 优化器的日志:

欢迎使用 CBC MILP Solver 版本: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 在?? () 来自目标:/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 在 CbcHeuristicDive::solution(double&, int&, int&, OsiRowCut**, CbcSubProblem&, double*) () from target:/root/.julia/packages/Cbc/vWzyC/deps/usr/lib/libCbc.so.3 #8 0x00007f163b8ebf42 in CbcHeuristicDive::solution(double&, double*) () from target:/root/.julia/packages/Cbc/vWzyC/deps/usr/lib/libCbc.so.3 #9 0x00007f163b938fd2 in CbcModel::solveWithCuts(OsiCuts&, int, CbcNode*) () from target:/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/libCbc.so.3 #11 0x00007f163c214c47 in CbcMain1(int, char const , CbcModel&, int ( )(CbcModel, int), CbcSolverUsefulData&) () from target:/root/.julia/packages/Cbc/vWzyC/deps/usr/lib/libCbcSolver.so #12 0x00007f163c2252ae in CbcMain1(int, char const**, CbcModel&) () from target:/root/.julia/packages/Cbc/vWzyC/deps/usr/lib/libCbcSolver.so #13 0x00007f163c19bc50 in Cbc_solve () from target:/root/.julia/packages/Cbc/vWzyC/deps/usr/lib /libCbcSolver.so #14 0x00007f16698e7e71 在?? () #15 0x000000000000000c 在 ?? () #16 0x00007fff70694480 在?? () #17 0x00007f16604ce110 在?? () #18 0x000000000000262e 在?? () #19 0x0000000000000006 在?? () #20 0x00007fff70694480 在?? () #21 0x00007f165966ab40 在?? () #22 0x00007f164a7ce1d0 在?? () #23 0x00007f164a7ce220 在?? () #24 0x00007f164a7ce1d0 在?? () #25 0x00007f1688be7b00 在?? () 在 /buildworker/worker/package_linux64/build/src/array.c:738 来自目标:/opt/julia/bin/../lib/libjulia.so。1 #26 0x00007f163d909af0 在?? () #27 0x00007f164439d3c0 在?? () #28 0x00007f1689524200 在?? () #29 0x0000000000000000 在 ?? ()

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

目标函数是否有太多项?

任何帮助都是非常可观的。

谢谢

0 投票
1 回答
67 浏览

julia - Julia JuMP Cbc v 0.7.0。docker linux 容器中的奇怪构建日期(1970 年 1 月 1 日)

我有一个带有 Julia 1.3.1 和 JuMP 0.20.0 的 linux docker 容器 Ubuntu 16.04。最近我已将 Cbc 包从 0.6.6 更新到最新版本 0.7.0。当打印求解器的日志(日志级别设置为 1)时,这是我得到的:

欢迎使用 CBC MILP 求解器

版本:2.10.3

建造日期:1970 年 1 月 1 日

只是解析日志中的日期的问题吗?如何检查使用的实际构建日期?

先感谢您

0 投票
2 回答
151 浏览

python - 如何从使用 cvxpy 和 CBC 的 python 脚本中使用 pyinstaller 构建 exe?

我正在尝试从 python 脚本构建 exe,以使用 cvxpy 和 CBC(通过 cylp)和 pyinstaller 来解决 LP 问题。
代码是这样的:

这适用于 python 解释器

但是pyinstaller制作的exe会抛出错误

有没有办法来解决这个问题?
我无法避免使用 CBC,因为我真正想做的是制作一个解决混合整数编程问题的 exe。



我的环境:
  numpy:1.19.1
  cvxpy:1.1.4
  cylp:0.91.0
  PyInstaller:4.0
  Python:3.7.9
  平台:Windows 10 v1909 64bit

我的规范文件(由pyinstaller .\LP.py -F我修改datas):

0 投票
1 回答
380 浏览

python - 纸浆求解器 - Python 3.8 和 Spyder 4

我将 Pulp 与 Python 3.8 和 Spyder 4 一起使用。

我能够毫无问题地运行优化问题,但我无法更改求解器的参数。事实上,Pulp 似乎没有识别出任何求解器。

当我进入

my_lp_problem.solve(PULP_CBC_CMD())

我有错误:

名称“PULP_CBC_CMD”未定义

我该如何处理这个问题?

谢谢!

0 投票
1 回答
580 浏览

python - 调试帮助:Python PuLP 中的混合整数线性规划问题

我有一个 MILP 问题,我正在使用 Python 中的 PuLP 解决该问题,并且遇到了一些我无法理解的解算器的有趣行为。我很想就可能导致此问题的原因获得一些想法。

先说一点问题陈述。这是一个交通网络问题,需要连接一堆节点,这样总成本最小,同时满足一些约束,比如禁用/强制一些车道。

当我使用 PuLP 的捆绑求解器解决问题时,它给了我以下解决方案。

我意识到 PuLP 使用的求解器版本是 2.9.0,但在 COIN-OR 网站上最新的是 2.10.3,因此决定使用最新的 CBC 求解器。当我这样做时,对于新的求解器,这个完全相同的问题变得不可行。

然而,有趣的是,只有当我通过 PuLP 解决问题时,它才会给我一个问题。如果我使用 PuLP 创建的 .lp 文件并直接使用下载的 cbc 二进制文件求解,它会求解并给我一个与 PuLP 求解器的答案非常接近的最佳答案!

我在这里想念什么?我尝试了不同的方法,例如将 PuLP 更新到最新版本,但这并没有帮助。我需要更改任何求解器选项吗?我是新手,所以不知道该尝试什么。

0 投票
0 回答
24 浏览

coin-or-cbc - 如何检查 CBC 中模型的解决方案是否可行

我为我的模型找到了解决方案,我怎么知道它在 CBC 中是否可行?非常感谢!

0 投票
1 回答
34 浏览

solver - GAMS 会优化 Solver 的默认参数吗?

我有一个 MILP 问题。我使用CBC求解器来解决它。如果我通过 GAMS 调用 CBC,计算时间会很短。但是当我直接使用CBC.exe解决时,时间太长了。在这两种情况下,我都使用参数的默认值。是GAMS优化了CBC的参数吗?谢谢你告诉我原因。

0 投票
0 回答
227 浏览

excel - 求解器为特定约束设置优先级

我尝试使用 OpenSolver 解决 Excel 中的大型优化问题。

问题是我有两组约束:

  • “必须”约束(图片中的“=”行)
  • “NICE TO HAVE”约束(图片中的'>='行):如果这些被违反,我不介意

当我单独解决“必须”约束时,我可以很容易地获得最佳解决方案,但是当我在模型中添加“很高兴”时,我会违反其中的一些(“必须”和“很高兴”)

我需要以某种方式告诉求解器第一组规则是绝对优先级的,而第二组规则可能会被违反。

(不幸的是,较软的规则不是解决方案)

在此处输入图像描述