问题标签 [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.
python - 为什么 Python 解释器在使用 Pyomo 调用 CBC 求解器后关闭,尽管没有引发错误?
我编写了一个 Python 脚本,它使用 Pyomo 构建抽象模型,创建具体模型实例,然后使用 Coin-Or Branch-and-Cut (CBC) 求解器求解具体模型。一旦找到最佳解决方案,Python 脚本就会对结果进行一些后处理。当我在家中的 Windows 10 计算机上从命令提示符运行脚本时,它按预期执行。但是,当我通过另一台计算机上的 bash shell 运行脚本时,Python 脚本在调用 CBC 求解器后终止。CBC 求解器写入一个日志文件,显示找到了最佳解决方案,并且 Python 脚本没有引发任何错误。
进入 bash shell 的命令如下:
出现错误的 script.py 部分是:
“logfile1.log”或 bash 终端中没有打印任何错误,Python 解释器似乎只是在调用求解器后关闭。
当我在自己的计算机上安装 CBC 求解器时,我下载了二进制文件并将它们复制到 anaconda3/Library/bin 中,包括 cbc.exe 文件(带有solverpath_exe = path/to/cbc.exe
)。当我在使用 bash shell 的计算机上安装 CBC 求解器时,我使用 coinbrew 来获取和构建求解器(使用solverpath_exe = path/to/cbc
)。问题可能是由于solverpath_exe变量调用“cbc”而不是“cbc.exe”吗?当没有引发表明 Python 解释器关闭原因的错误时,如何解决此问题?
python - CoinOR cbc 不接受期权 (pyomo)
我正在使用 pyomo 和 cbc 来求解模型。我尝试使用以下方法传递选项:
在输出中,我得到以下信息:“秒数从 1e+100 更改为 3”,但仍需要大约 7 秒才能解决。关于传递选项,我做错了什么?谢谢
python-3.x - Gurobi 的速度比 CBC 求解器慢(使用 PuLP)?
我在 python 3.7 中使用 PuLP 设置了一个混合整数编程问题。使用默认求解器 CBC,我的代码需要3.9s。我想缩短这段时间,所以为了加快速度,我去获得了 Gurobi 的学术许可证。但是,当我将其用作求解器时,它会在运行时间上增加近整整一秒:4.7s,这与我希望的相反!
我通过将这些行添加/更新到设置中来更新它以使用 Gurobi 求解器(我认为这是正确的,因为它给出了相同的结果):
有谁知道慢的原因是什么?如果我想使用 gurobi,是否有更快的 PuLP 替代品可以用于设置?
编辑:
这是日志文件:
- 加拿大广播公司
- 古罗比
在这次运行中,Gurobi 比 CBC 差了约 0.5 秒
c++ - 如何在 C++ 中完全省略 CBC 日志记录?
我正在使用 CBC 求解器来求解程序,并且方法 model.branchAndBound 被多次调用(很多次)。因为必须将日志消息写入文件,所以它实际上会减慢程序的速度。我想知道是否可以完全省略日志消息?这是在 c++ 中,我现在认为许多建议的答案纸浆仅适用于 python。此外,如果纸浆是解决这个问题的方法,我不太确定如何使用纸浆。有没有什么好的文档可以帮助理解纸浆和CBC之间的关系,以及如何使用它们?如果有人可以帮助我解决这个问题,我将不胜感激!
例如(这是来自 github 的示例):
日志输出是:
pyomo - Pyomo 和 CBC:sos2 不可用
我正在使用 Pyomo 编写 MILP 问题:Gurobi 和 CPLEX 一切正常,但我想使用 CBC。
我已经安装了它,找到了求解器,但 sos2 不可用。但是,我知道 CBC 处理 sos2(通过 python-mip 尝试过)。你知道如何激活它吗?通过Pyomo?通过正确安装CBC?我应该在 Windows 10 上安装哪个 CBC 软件包?
非常感谢你的帮助 :)
最大限度。
pyomo - 如何使用pyomo的solverfactory在CBC求解器中定义容差水平?
我正在尝试使用 pyomo 的求解器工厂用 CBC 求解 MIP,但是遇到了一些不可行的问题。在深入研究可能导致不可行的数据点之前,我想先尝试配置容差水平,看看是否可行。
但是,当我使用此命令时,cbc 求解器会输出错误:
谁能帮助我了解如何在 cbc 中定义容忍度?谢谢!
python - CVXPY 中求解器之间的结果不一致
我正在使用CVXPY
和测试许多求解器进行 LP 优化。以前,当运行我的问题的相同数学公式时,无论使用哪个求解器,我都会收到一致的结果(Gurobi, CBC, or ECOS)
。自 2021 年年中以来,ECOS 的结果保持一致,但其他求解器存在差异。
例如,我正在解决一个配电问题,其中的结果提供了整个运营范围内的发电机调度。
以前的结果(以及当前的 ECOS)
当前结果
当我为目标函数添加惩罚以避免这种行为时,求解时间会大幅增加(5 倍)。
我的问题是是否有人看到过类似的行为并找到了解决方案。
coin-or-cbc - CBC 求解器结果 - 线性松弛不可行
我正在尝试使用 Linux 中的 CBC 求解器解决 LP 问题。
当我尝试解决它时,模型被确定为线性不可行但找到了解决方案,所以我不明白为什么会这样。
这是求解器输出:
我关闭了预处理以查看它是否进行了任何更改,但没有。
所以问题是LP问题的线性松弛是不可行的,但我不知道这意味着什么或如何解决它。
这是 LP 文件,以防万一。
python - 问题对于 Gurobi 是不可行的,对于 cbc 是可行的(但无法访问目标值)
我正在用 cbc 和 gurobi(通过 pyomo)解决 MILP。Gurobi 指出该模型是不可行的。至于 cbc,求解器状态表明找到了可行且最优的解决方案,但随后它无法访问目标的值(这反过来又使我的程序崩溃)。
这是我访问目标值的方式
随着 cbc 我得到
另一方面,我得到 gurobi
我假设问题确实不可行,并且错误来自 cbc。这种错误是否常见,有什么方法可以避免这种情况?
最后,这是gurobi返回的lp模型
branch-and-bound - 暂停并保存CBC的求解过程
我们正在研究混合整数编程并使用硬币 CBC 作为我们的工具。我们正在考虑在获得原始可行解决方案时在搜索节点检查子问题的可行性。
所以我们需要在搜索树中暂停求解过程并插入一个可行性检查程序。在这样的检查之后并且当检测到不可行时,我们恢复到检查节点并继续在树中执行分支和切割。
只是希望知道CBC是否支持这种暂停和恢复功能?