gpt4 book ai didi

python - gurobipy 中的反向指标约束

转载 作者:行者123 更新时间:2023-12-01 01:54:40 31 4
gpt4 key购买 nike

我是 gurobipy 的初学者。我想添加一个反向指标约束。

指标约束只不过取决于约束是否成立的二元变量。在 gurobipy 中,这被写为

model.addConstr((x == 1) >> (y + z <= 5))

其中 x 是二进制变量,y 和 z 是整型变量。该语句表示,如果 x 为 True,则约束 y+z <= 5 成立。

但我想要一个像这样的反向约束。如果 y+z <= 5,则 x == 1。但是 gurobi 不允许语句的 lhs 部分为不等式。它只能是等于常量(0 或 1)的二进制变量。

因此反转语句会引发错误。

model.addConstr((y + z <= 5) >> (x == 1))

有什么想法如何在 gurobipy 中重写这样的条件约束吗?!

最佳答案

含义

y+z ≤ 5  ⇒  x = 1

可以重写为:

x = 0  ⇒  y+z ≥ 6

这可以直接实现为指标约束。

<小时/>

这是基于命题逻辑的。这称为转置:

A ⇒ B

not B ⇒ not A

所以理论上我们有

y+z ≤ 5  ⇒  x = 1

x = 0 ⇒ y+z > 5

如果 x 和 y 是整数,我们可以说 x = 0 ⇒ y+z ≥ 6 如果它们是连续变量,你可以这样做:x = 0 ⇒ y+z ≥ 5.0001 (实际上我会这样做:x = 0 ⇒ y+z ≥ 5 并在 y+z = 5 处保持模糊性)。

这是使用指标约束时的一种标准技巧。似乎并不是每个人都意识到或欣赏这一点。

关于python - gurobipy 中的反向指标约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50366433/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com