古罗比的逻辑约束

时间:2018-08-02 00:35:56

标签: constraints logical-operators gurobi

我有一些gurobi变量a [i],b [i],c [i](对于0到某个数字中的i),我想添加约束条件

for i in range(0, number):
   m.addConstr(a[i]==b[i] if c[i]==1)

根据gurobi网站,这是可能的,但是当我尝试实现它(在python中)时,由于if,我一直收到无效的语法错误。有人知道我在做什么错吗?

谢谢

2 个答案:

答案 0 :(得分:0)

如果c [i]是二进制变量,则可以在指示符约束下实现if-then-logic:

"false"

或者您可以使用重载形式:

for i in range(0, number):
    m.addGenConstrIndicator(c[i], 1, a[i] == b[i])

有关更多详细信息和示例,请参见here

答案 1 :(得分:0)

这里运行的for循环将创建多个约束,因此,请尝试使用以下使用addConstrs()方法的代码。

m.addConstrs((a[i]==b[i] for i in range(number) if c[i]==1), name = "c")