将决策变量与其中使用的索引相乘

时间:2018-02-15 12:40:29

标签: python gurobi

我正在python中编写一个优化模型,我将用Gurobi解决。但是我有一个约束问题。 我想将我的决策变量乘以j:的索引 x[i,j] * jj作为index of j x[i,j]使用i
jx[i,j]都被建模为列表。决策变量for i in I: m.addConstr (x[i,j]*J.index(j)) 是二进制的。

我试过

index of j

但是这将始终采用列表j的最后一个元素。如何制定约束以接纳x[i,j]中使用的GROUP_CONCAT

1 个答案:

答案 0 :(得分:1)

如果j是整数或连续,你可以直接做x [i,j] * j,如果不是,你的代码似乎是正确的。我想你想写这个:

for j in J:
   for i in I:
      m.addConstr(x[i,j]*J.index(j))

for i in I:
   m.addConstr(x[i,j]*J.index(j) for j in J)

你能说出来吗?

你也可以使用这样的范围:

for i in I :
   m.add(x[i,J[k]]*k for k in range(len(J))

for k in range(len(J)):
   for i in I:
       m.addConstr(x[i,J[k]]*k)