【问题标题】:CBC - know "why" a program is infeasibleCBC - 知道“为什么”一个程序是不可行的
【发布时间】:2016-10-02 07:35:36
【问题描述】:

我使用 CBC 来解决不同的整数线性规划问题。对于其中一些,约束集是没有解决方案的。在这种情况下,我会得到这样的结果:

Problem is infeasible - 0.30 seconds
Infeasible - objective value -6832.50000000

CBC 有什么方法可以告诉我“为什么”这个问题不可行?例如,我很乐意拥有一组不兼容的最小约束。

【问题讨论】:

  • 当松弛多面体(决策变量是连续的约束集)不包含任何整数点时,可能会出现这种情况,因此 MIP 松弛是可行的并且存在一些客观值,而MIP 本身不是。

标签: python linear-programming


【解决方案1】:

我很确定,CBC 中没有实现此功能。

替代软件

CplexGurobi 支持这个概念。对于后者,我可以确认,这非常有效(称为 Irreducible Inconsistent Subsystem (IIS))。如果您在学术环境中(您的访问域需要被识别为大学)并且您的项目符合学术项目的条件(最好自己查看使用条款),Gurobi 也可以免费使用。

自定义实现

如果您想自己实现,请查看:

哦。 Guieu 和 J.W. Chinneck (1999),“分析不可行的混合整数 和整数线性规划”,INFORMS Journal on Computing,第 11 卷,第 1 期。 1,第 63-77 页。

乌尔里希·容克。 2004. QUICKXPLAIN:过度约束问题的首选解释和放松。在第 19 届全国人工智能会议论文集 (AAAI'04) 中,Anthony G. Cohn(主编)。 AAAI 按 167-172。

后者在this Ruby wrapper for cbc中实现

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多