0

我在 ubuntu 17.10 docker 映像中使用 2.9.9 版的 cbc。我的 test.lp 文件有以下内容:

Maximize
 obj: x1 + 2 x2 + 3 x3 + x4
Subject To
 c1: - x1 + x2 + x3 + 10 x4 <= 20
 c2: x1 - 3 x2 + x3 <= 30
 c3: x2 - 3.5 x4 = 0
Bounds
 0 <= x1 <= 40
 2 <= x4 <= 3
General
 x4
Semis
 x1 x2 x3

尝试使用 semis 部分时,我收到错误“在抛出“CoinError”实例后调用终止?中止”

在 Mac 上我得到:libc++abi.dylib:以 CoinError 类型的未捕获异常终止?中止陷阱:6

但是,如果我注释掉 Semis,它就可以正常工作。我希望支持 Semis。难道我做错了什么?

我的命令是:cbc -presolve on -import test.lp solve solu out.txt

在进一步分析中,我发现当在 cbc 提示中输入“import test.lp”时它失败并显示相同的错误是

4

1 回答 1

0

CBC MPS 文件阅读器似乎也不接受SC界限。我认为 CBC 实际上支持半连续变量(我使用小型 GAMS 模型进行了测试),但似乎很难在 LP 或 MPS 文件中传递它。作为一种解决方法,我建议使用二进制变量来模拟半连续行为:

b * L ≤ x ≤ b * U
b in {0,1}
于 2018-01-16T14:01:13.587 回答