首页 > 解决方案 > 添加二进制变量的不可行性

问题描述

我真的很感激这里的任何指示;我被困了一段时间。

问题是这样的:我有一个用 Pyomo 编写的线性程序,当我解决它时,它会运行到最优。但是,当我引入任何涉及二进制变量的约束时,求解器声称不可行,而不管使用的约束如何。我已经完全隔离了这个问题,但仍然没有解决方案。我注释掉了我所有的整数约束并添加了以下三行:

model.a = Var(within=Real)
model.b = Var(within=Binary)
model.DummyConstraint = Constraint(expr = model.a <= model.b)

也就是说,我定义了两个新的虚拟变量(一个二进制),它们不会出现在代码的任何地方,以及一个涉及它们的新约束。求解器(glpk)应该能够将原始问题求解到与以前完全相同的最优值,然后将新变量“a”和“b”任意设置为满足约束的值(simplex 会将它们设置为 0 或两者都设置为1)。

然而,这不起作用。由于某种原因,这个问题是不可行的,但只有在添加了 3 条新行时才可行。我将这 3 行复制并粘贴到一个单独的不相关的优化问题中,它按预期工作得很好。

不幸的是,我不能分享公式的其余部分,因为它是机密的,但是看到我的 2 个新变量和 1 个新约束很简单,并且与问题的其余部分绝对没有重叠,它们不应该是必要的。

有人见过这个吗?

标签: pythonoptimizationlinear-programmingpyomomixed-integer-programming

解决方案


推荐阅读