如何使用Gurobi中的多个变量触发指示器约束?

2024-07-03 06:59:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试编写与多个变量相关的约束。但是,它显示错误“指示器约束只能由给定值的单个二进制变量触发”。你能帮我纠正这个错误吗?非常感谢你! 代码如下:

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]是一个参数

Tags: and代码infor参数if错误二进制
1条回答
网友
1楼 · 发布于 2024-07-03 06:59:11

我认为错误信息非常清楚。定义二进制辅助变量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]))

相关问题 更多 >