问题标签 [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 回答
313 浏览

mathematical-optimization - CBC 求解器返回的解是否准确?

考虑 N 个变量的整数优化问题

min_x [sum_i c_i x_i ]

有约束

sum_i c_i x_i >= C,

其中 C = sum_i c_i/2 和 x_i = {0,1}。

如果优化后 model.isProvenOptimal() 返回 1,CBC 提供的解决方案是否准确

编辑

根据下面 Erwin Kalvelagen 的回答,对于这个特定问题,CBC 解决方案应该是最佳的。但是,我在后续的可疑行为中运行。

我认为 c_is 是 N 个 IID 随机变量,均匀分布在 0 和 1 之间。对于小 N,从定性上讲,解决方案看起来像 0 和 1 的随机序列:x = {0,1,0,0,... ., 1,0,1}。随着 N 的增加 (N >~ 100),解的最后一个 bin 都设置为零:x = {0,1,0,0,1,...., 0,0,0,0,0 ,0,0}。这对我来说看起来很可疑,因为对于这个问题,没有什么能以如此突然的方式破坏最小值的对称性(参见上面的 c_i 定义)。我正在使用 此代码,它是CBC 用户指南中 minimum.cpp 的副本,问题存储在 此 mps 文件中。输出将最后的 ~ 40 个变量设置为零:

正如 Erwin Kalvelagen 所指出的,我怀疑问题是否与公差有关。

你知道解决这个问题的方法吗?

0 投票
1 回答
1381 浏览

python - 在时间限制后找到最佳可行解决方案 - 纸浆

我正在尝试解决具有 10 个客户和 5 个站点的多站点车辆路线问题。添加 subtour 约束时,求解器不再在合理的时间内找到最优解。当我在一定时间后停止求解器并检索最佳解决方案时,他返回一个不可行的解决方案(连续变量,而需要整数)。我如何才能找到迄今为止找到的最佳可行解决方案,或者是否有其他方法可以解决我的问题?我知道堆栈上有一个类似的问题,但它解决了 gurobi 求解器的问题。

在这里你可以找到部分代码和他在 10 秒后给我的输出。

运行10秒后输出:

如您所见,它给了我一个不可行的解决方案。

0 投票
0 回答
348 浏览

coin-or-cbc - CBC Hangs After Finding Optimal Solution

I am trying to use CBC to solve an mps file. It frequently hangs for long periods of time and it will exit without any message.

It will also hang even after it has found the optimal solution. I don't know why it isn't returning to prompt.

I've reinstalled the latest version 2.10, and I've tried on multiple Windows 10 machines.

Prompt inputs and outputs below.

Everything before Result - Optimal solution found ran quickly, but then it prints Cuts at root node changed objective from 1.25864e+08 to -1.79769e+308, and runs for a very long time. Turning cuts off did not change anything. That specific line no longer appears, but the objective still goes from 1.25864e+08 to -1.06e15. The model then takes about an hour to get back to the actual objective value of 1.25864e+08, which is the integer optimal solution as well as the solution to LP relaxation.

It solves in clp in several seconds. The mps file was written by glpk, and solves in several seconds in CPLEX.

Any guidance you could provide would be greatly appreciated.

I've tried multiple version of cbc and I still get this long hang time for relatively simply problems. I've tried .lp and .mps formats (clp seems to solve .lp faster), but nothing changes.

0 投票
1 回答
406 浏览

python-3.x - Is there any way to create a conditional constraint while using CBC solver with or-tools?

Lets suppose I use BoolVars called 'x,y,z' in my MIP problem and I would like to set a contraint like :

I would I do that using CBC solver in ortools library for python?

0 投票
1 回答
1107 浏览

pyomo - Pyomo - 日志文件的位置

非常基本的问题,但是我在哪里可以找到 Pyomo 的求解器日志文件?我在 Ubuntu 机器上本地安装了 COIN-OR 求解器。

这发生在 Jupyter 笔记本中,但是当我从终端运行 .py 文件时,我收到了相同的错误消息。

0 投票
0 回答
254 浏览

python - 我在哪里可以找到 Pyomo 返回的 Coin-OR CBC 的求解器错误代码定义?

ERROR: - Solver (cbc) returned non-zero return code (-9)在运行我的 Pyomo 问题时看到了。

我试过solve(instance, tee=True, keepfiles=True, logfile="my.log")了,但my.log没有出现。我已经搜索了 Pyomo 和 cbc github 存储库,但我不明白如何跟踪错误代码。

0 投票
1 回答
397 浏览

python-3.x - 如何在 pyomo 中使用 cbc 时将解决方案写入 .sol 文件?求解模型后如何获取 .sol 文件的名称?

我在 Jupyter Notebook 上使用 pyomo。我一直保存keepfiles = true在.sol 文件中solve。我可以获取它存储的 .sol 文件位置。如何获取为当前实例创建的 .sol 文件的文件名?

我使用了以下内容:

但这在创建所需的解决方案文件时不起作用。

0 投票
1 回答
1821 浏览

python - 您如何使 CBC 在时间限制时返回最佳解决方案?(皮莫)

我正在尝试在 Pyomo 上使用 CBC(v2.10.3) 来解决整数线性问题。

执行求解器时,我当前设置的时间限制为 600 秒。

在这个时限内,求解器设法找到多个可行的解决方案。但是,当它在 600 秒结束时超时,它不会返回找到的最佳整数解。相反,它返回一个非整数解决方案。

有没有办法在 pyomo 上使用 CBC 在时间限制结束时返回最佳整数解决方案?

(我知道设置最优差距。但是,最好在给定的时间内解决并返回找到的最佳解决方案。)

谢谢您的帮助!

0 投票
2 回答
3651 浏览

windows - 如何在 Windows 机器上本地安装 CBC for Pyomo?

我的目标是将开源 CBC 求解器与 Spyder 中的 Pyomo 连接起来。我正在使用 Windows 10 机器,由于公司政策,我不能选择使用 NEOS 服务器。

我已经从 Bintray ( https://bintray.com/coin-or/download/Cbc#files ) 下载了包含 cbc.exe 文件的二进制文件。但是,当尝试运行它时,会出现几个错误,指出我缺少文件(在其他 libbz2-1.dll 和 zlib1.dll 中)。我对 linux 或软件开发知之甚少,但在谷歌上呆了很长时间后,我了解到这些用于解包数据等。我在同一主题的开发人员聊天中找到了除 zlib1.dll 之外的所有文件,以及在另一个页面上找到的 zlib1.dll。但是在运行时,我现在收到错误消息:“应用程序无法正确启动 (0xc000007b)。

我还尝试下载 MSYS2 MinGW 并按照 CBC 的说明进行操作。我不知道我是否需要这个,或者它是否仅适用于开发人员。

谁能告诉我该怎么做?我怀疑除了我自己以外的其他人想在 Pyomo 中使用 CBC 作为 GLPK 的替代品。

0 投票
1 回答
367 浏览

python - 如何提取纸浆中的CBC经过时间?

有没有用纸浆提取CBC经过时间的命令?

通过使用prob.solve(pulp.PULP_CBC_CMD(msg=True)),我们可以在日志中获得该过程的详细信息。但我想知道是否有任何命令可以提取经过的时间并将其写入文件。