Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将决策变量与其中使用的索引相乘_Python_Gurobi - Fatal编程技术网

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

Python 将决策变量与其中使用的索引相乘,python,gurobi,Python,Gurobi,我正在用python编写一个优化模型,我将用Gurobi解决这个问题。然而,我有一个问题和一个约束。 我想将我的决策变量与索引j相乘: x[i,j]*j,其中j为x[i,j]中使用的j索引 i和j都建模为列表。决策变量x[i,j]是二进制的 我试过了 for i in I: m.addConstr (x[i,j]*J.index(j)) 但这将始终占用列表j的最后一个元素。我怎样才能约束接受x[I,j]中使用的j的索引?如果j是整数或连续体,您可以直接执行x[I,j]*j,如果不是,您的代

我正在用python编写一个优化模型,我将用Gurobi解决这个问题。然而,我有一个问题和一个约束。 我想将我的决策变量与索引j相乘:
x[i,j]*j
,其中
j
x[i,j]
中使用的j索引
i
j
都建模为列表。决策变量
x[i,j]
是二进制的

我试过了

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

但这将始终占用列表j的最后一个元素。我怎样才能约束接受
x[I,j]
中使用的j的
索引?

如果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.add(x[i,J[k]]*k for k in range(len(J))


不清楚你在问什么,你能举个例子吗?哦,对不起,当然,我的整个理论约束是:x[i,j]*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)