【发布时间】:2021-10-21 05:37:24
【问题描述】:
我正在尝试线性化这种形式的约束: 如果 a == b 那么 c = 1 其中 a 和 b 是正整数,c 是二进制变量。 我正在寻找这样的解决方案 https://math.stackexchange.com/questions/2792360/how-to-linearize-if-then-constraint 在这种情况下不起作用。 感谢任何可以帮助我的人。
【问题讨论】:
-
c = 1 if a==b else 0?或者更简单,c = int(a==b) -
@not_speshal 不能这样做。我将约束插入到 Pyomo 上,我需要一个精确的数学线性公式
-
我不清楚为什么其他解决方案不适用于您的情况。你能解释为什么不吗?您是否尝试过,还是只是因为相反的框架而看起来不对?
-
@TMBailey Pyomo 要求约束表达式返回未嵌套的表达式对象。返回带有嵌套表达式 (a==b) 的表达式无法编译。此外,编程中常用的 if 不符合线性表达式的条件...尝试将其视为一种阶跃函数,其中您有一定的 x 阈值,其中 y 值发生变化,它显然是非线性的。跨度>
-
@Unziello 您应该在问题中包含该评论。了解 为什么 在这种情况下它不起作用会更有帮助。在您的问题中包含所有相关信息,因为人们可能会错过评论中提供的信息
标签: python optimization linear-programming pyomo linearization