如何在 Gurobi 中使用多个变量触发指标约束?
How Indicator constraint can be triggered with multiple variables in Gurobi?
我正在尝试编写与多个变量相关的约束。但是,它显示错误“指标约束只能由给定值的单个二进制变量触发”。你能帮我解决这个错误吗?非常感谢!
代码如下:
mdl.addConstrs((x[i,j,k] - t[i,j,k] == 1) >> (d2[j,k] == d2[i,k] - d[i,j]) for i, j, k in arcos2 if i != 0 and j != 0)
其中:
x[i,j,k], t[i,j,k]
是二进制变量
d2[j,k], d2[i,k]
是连续变量
d[i,j]
是一个参数
我认为错误信息很清楚。定义二进制辅助变量 q[i,j,k]
来表示 x[i,j,k] - t[i,j,k]
。那么:
for i, j, k in arcos2:
if i != 0 and j != 0:
mdl.addConstr(q[i,j,k] == x[i,j,k] - t[i,j,k])
mdl.addConstr((q[i,j,k] == 1) >> (d2[j,k] == d2[i,k] - d[i,j]))
我正在尝试编写与多个变量相关的约束。但是,它显示错误“指标约束只能由给定值的单个二进制变量触发”。你能帮我解决这个错误吗?非常感谢! 代码如下:
mdl.addConstrs((x[i,j,k] - t[i,j,k] == 1) >> (d2[j,k] == d2[i,k] - d[i,j]) for i, j, k in arcos2 if i != 0 and j != 0)
其中:
x[i,j,k], t[i,j,k]
是二进制变量d2[j,k], d2[i,k]
是连续变量d[i,j]
是一个参数
我认为错误信息很清楚。定义二进制辅助变量 q[i,j,k]
来表示 x[i,j,k] - t[i,j,k]
。那么:
for i, j, k in arcos2:
if i != 0 and j != 0:
mdl.addConstr(q[i,j,k] == x[i,j,k] - t[i,j,k])
mdl.addConstr((q[i,j,k] == 1) >> (d2[j,k] == d2[i,k] - d[i,j]))