python - 添加二进制变量的不可行性
问题描述
我真的很感激这里的任何指示;我被困了一段时间。
问题是这样的:我有一个用 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 个新约束很简单,并且与问题的其余部分绝对没有重叠,它们不应该是必要的。
有人见过这个吗?
解决方案
推荐阅读
- arrays - 比较两张纸并突出显示每张纸上的差异 - 循环是唯一的方法吗?
- git - 为什么我的 git history 命令出错?
- laravel - 模型工厂访问 Faker 内部状态函数
- php - PayPal Express 错误:位置 0 处的 JSON 中的意外令牌 S
- javascript - 当 this.state.msg 为 0 时,此 React 应用程序不显示零消息?
- swiftui - 来自 watchOS 中 if 条件 { Text() } 的 SwiftUI 运行时错误
- python - 带有两个变量的循环语句
- laravel - laravel create eloquent on mass assignment $request->all() 单个字段始终为空
- php - 如何在 PHP 中从数组创建 JSON
- vulkan - 资源分配的数量是否应该是“每个交换链图像”?