【问题标题】:Semi continuous section in LP format file provided to cbc crashes提供给 cbc 崩溃的 LP 格式文件中的半连续部分
【发布时间】:2018-01-15 10:33:28
【问题描述】:

我在 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”时它失败并显示相同的错误

【问题讨论】:

    标签: solver continuous coin-or-cbc


    【解决方案1】:

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

    b * L ≤ x ≤ b * U
    b in {0,1}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-31
      • 2015-09-26
      • 2017-10-01
      • 2020-11-10
      • 2023-03-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多