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

python - 纸浆编程输出

我正在与一个合作者合作进行某个涉及线性规划的优化项目。我们都使用 Coin-OR 分支和切割求解器来解决问题。我使用基于 Python 的 PuLP 包构建 .LP 文件。我不完全确定合作者如何创建他们的 .LP 文件(绝对不使用 Python),但本质上,我们有两个不同的系统为完全相同的问题生成 .LP 文件 - 即目标函数、变量、约束完全相同.

我通常在 Python myProblm.solve()(接下来,我将从我的系统(Python 或命令行)获得的输出与我的合作者获得的输出进行比较。[请注意,无论是在 PuLP 中还是在命令行中解决,我这边的问题的输出都是完全相同的。]

我们之间的目标函数值匹配得很好,但其他细节并不完全匹配。例如,如果我们要解决这个 Whiskas 混合问题,成分的总成本将完全相同,但成分的比例不同。知道为什么会这样吗?

我手动比较了我们的 .LP 文件,发现了一些差异。对于初学者来说,约束和变量的顺序是不同的。换句话说,如果有 5 个约束,我的文件将它们列为C1,C2,C5,C4,C3,而相同的约束将列为C1,C2,C3,C4,C5。此外,我的 Python 代码将所有数字四舍五入到 10 的位置,而他的系统将它们四舍五入到 1 的位置。因此,一些变量的系数值略有不同。

这些差异是否在求解器的确切输出中起作用?

此外,下一个扩展问题是:在解决线性规划优化问题时,我们应该怎么做才能获得完全相同的输出?哪些因素会影响 LP 问题的解决方案?.LP 文件的结构等因素是否起作用?如果我在不同的计算机上以完全相同的条件运行相同的 LP 文件,我会得到完全相同的输出吗?

0 投票
1 回答
85 浏览

coin-or-cbc - 构建 CoinOR 时出错

我正在尝试构建 CoinOR,我正在按照https://projects.coin-or.org/CoinBinary上的简单说明进行操作。配置成功,所以我应该拥有所有依赖项。但是我在运行“make”命令时遇到了这个错误:

g++ -DHAVE_CONFIG_H -I。-我。

-I/home/user/CoinOR/COIN-1.8/Osi/src/Osi -I/home/user/CoinOR/COIN-1.8/CoinUtils/src -O3 -pipe -DNDEBUG -pedantic-errors -W括号 -Wreturn-type -Wcast-qual -Wall -Wpointer-arith -Wwrite-strings -Wconversion -Wno-unknown-pragmas -Wno-long-long -DFLOPCPP_BUILD -MT MP_boolean.lo -MD -MP -MF .deps/MP_boolean.Tpo -c MP_boolean .cpp -fPIC -DPIC -o .libs/MP_boolean.o 在 MP_boolean.cpp:12 包含的文件中:

MP_set.hpp:在成员函数 'flopc::MP_domain&

flopc::MP_subset::operator()(const flopc::SUBSETREF&)':

MP_set.hpp:212:9:错误:无法绑定非常量左值引用

将 'flopc::MP_domain&' 键入到 'flopc::MP_domain' 类型的右值

返回 MP_domain(s);

有人有 id 或解决方案,比如预编译的二进制文件吗?我正在运行 Arch Linux。

0 投票
2 回答
189 浏览

cplex - 当我修改约束 (GLPK) 的 RHS 时会发生什么?

我正在增加GLPK 的 MIP 问题的小于或等于约束的 RHS。但是,有时,在重新优化后,GLPK 在时限内找不到任何可行的解决方案。所以我猜它不会检查以前的解决方案是否可行。有没有人有这方面的经验?或者可以将我指向一个不是源代码本身的文档?

此外,我想知道在为任何其他求解器(例如 Gurobi、Cplex、SCIP、CBC)添加约束后的工作流程是什么,因此任何信息都会有所帮助。

干杯!

0 投票
1 回答
592 浏览

c++ - 线性规划:模约束

我正在使用 Coin-Or 的排练来实现线性规划。

我需要一个模约束。示例:x应为 的倍数3

结果x应该是 6。但是,z设置为2.5,这应该是不可能的,因为我将它声明为CellIntVar.

我怎样才能强制z成为一个整数?

0 投票
1 回答
116 浏览

pyomo - 如何从 Coin-OR 框架获取可行性泵的迭代和运行时间

我编写了一个算法,可以找到混合整数凸优化问题的可行点。现在我希望将它与MINLPlib 库中的测试平台上的混合整数非线性程序的可行性泵进行比较。

我可以通过 Pyomo 从Coin OR项目访问 BONMIN 求解器,该项目还实施了可行性泵。是此求解器的可能选项列表。

我的问题是

  1. 以下选项对于测试(普通香草)可行性泵是否正确?

    如果没有,任何提示如何正确地做到这一点表示赞赏。

  2. 如何访问可行性泵的迭代次数(即泵送周期)?我可以在打印输出中看到迭代信息,但如果它存储在某个变量中,这将非常有帮助。
0 投票
1 回答
52 浏览

mathematical-optimization - OSI 的传入 API(开放求解器接口)

我们希望将 COIN-OR 与其他一些优化程序一起用于研究项目,如果我们可以使用标准化 API(最好是基于 Web 的 API)从一个点启动所有求解器,那就太好了。

遗憾的是,我无法找到有关从另一个角度访问 OSI 的任何信息,所以我希望这里的人能够体验到什么是可能的,哪些是不可能的。

到目前为止,通用邮件列表无济于事,因为我的注册仍然开放,我不确定整个项目是否仍在维护。

谢谢!

0 投票
1 回答
427 浏览

c++ - 如何通过命令行工具在 COIN-OR Cbc 中设置超时?

我正在通过其命令行工具使用COIN-OR Cbccbc ,如果计算时间过长,则需要中止一些计算。

我知道我可以在 cbc 周围编写一个控制过程以在超时到期后将其杀死。我也知道我可以使用 cbc 作为 C++ 库。两者看起来都很麻烦,我正在寻找一个更简单、直接的解决方案。

这可以直接通过cbc命令行工具吗?

如果没有,是否有使用 cbc 作为 C++ 库的简单方法?(读取*.lp文件,应用超时,创建*.soln文件)

0 投票
1 回答
650 浏览

optimization - .lp 文件的大小或 CBC/GLPK 中的变量数量是否有限制?

我正在尝试解决 GLPK 和/或 CBC 中的 MIP。.lp 文件有 907 兆字节,大约有 500 万个变量,但它甚至不能在 CBC 上运行,并且在 GLPK 上运行了 8 天以上,但没有找到解决方案。此外,每当我对 GLPK 设置时间限制时,它都会显示 TIME LIMIT EXCEEDED;SEARCH TERMINATED 并想知道是否可以使用 CMD 窗口或 python 获得输出。

0 投票
1 回答
617 浏览

linear-programming - Pulp & coin-or-cbc:SOS 权重的含义是什么?

当使用纸浆定义混合整数线性规划问题时,可以这样定义 sos:

(“sos”或特殊排序的集合是一种特殊约束,指定集合中只有一个变量可以是非零的)。

我们看到这允许为 sos 变量(在本例中为 1,2)指定权重。大概它们定义了每个变量的优先级,即在分支时哪些变量首先允许为非零。

但是权重究竟是如何定义的呢?

底层求解器是 coin-or-cbc,我找不到任何关于他们如何使用 SOS 权重的信息。

0 投票
1 回答
2798 浏览

python - PuLP CBC 多线程不适用于 COIN_CMD

我正在使用 PuLP 和 Python 进行一些优化,因为我的数据很大,所以我决定尝试多线程,因为我的问题很大,即选择

但是,在测试主要问题的一小部分(10k 而不是 1M 人)时,我无法让多线程实际使用多个线程。

我按照说明使用Coin-OR 网站上描述../configure --enable-cbc-parallel的标志从源代码构建求解器;一切都很好,所有的测试都通过了。我检查了 CBC 配置登录,它在第 845 行有消息,所以它肯定可以工作。build/Cbc/config.logconfigure:30105: Cbc multithreading enabled

系统:

  • Mac OS X 10.14.3
  • i7-4870HQ 四核
  • Python 3.6.7 w/Anaconda
  • 在 Jupyter 和从命令行在 Python 解释器中运行时都会出现问题

代码,类似于此处的示例

如果我指定了多线程求解器或者我只使用了默认求解器,那么那个时间大致相同。

在运行时的 CBC 消息中有一行:

还有以下几行:

这意味着所有线程都已创建但未使用?

我想到但不知道如何解决的一种解决方案:也许我的求解器路径是错误的,即 COIN_CMD 求解器不应该被定向到.../cbc其他东西。我还没有找到任何东西。

那么我做错了什么?我找不到有关如何使用线程的任何其他文档。希望这是一个简单的解决方案的愚蠢问题。谢谢你的帮助。