我正在python中编写一个优化模型,我将用Gurobi解决。但是我有一个约束问题。
我想将我的决策变量乘以j:的索引
x[i,j] * j
,j
作为index of j
x[i,j]
使用i
。
j
和x[i,j]
都被建模为列表。决策变量for i in I:
m.addConstr (x[i,j]*J.index(j))
是二进制的。
我试过
index of j
但是这将始终采用列表j的最后一个元素。如何制定约束以接纳x[i,j]
中使用的GROUP_CONCAT
?
答案 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)