提取gurobi多维变量值,组成numpy数组

Extract gurobi muti-dimensional variable value and form a numpy array

我想知道在Gurobi中定义一个多维变量时,如何提取所有解的值,并根据变量的原始坐标组织到一个Numpy数组中。

我使用 Python API 在 Gurobi 中定义了以下决策变量:

for i in range(N):
  for t in range(M):
      Station_Size[i,t] = m.addVar(ub=Q, name = 'Station_Size_%s_%s' %(i,t))
      for j in range(N):
         Admission[i,j,t] = m.addVar(ub = Arrival_Rate[t,i,j], obj=-1, name = 'Admission_Rate_%s_%s_%s' %(i,j,t))
         Return[i,j,t] = m.addVar(name = 'Return_Rate_%s_%s_%s' %(i,j,t))

我的问题已经解决了,我有三个字典:

Station_Size, Admission and Return

我知道可以通过以下方式访问解决方案:

Station_Size[i,t].X, Admission[i,j,t].X and Return[i,j,t].X

我想创建三个 Numpy 数组,这样:

Array_Station_Size[i,t] = Station_Size[i,t].X
Array_Admission[i,j,t] = Admission[i,j,t].X

我绝对可以通过创建三个循环并逐个元素地创建 Numpy 数组来做到这一点。如果循环不花费很多时间,这是可行的。但我只想知道是否有更好的方法来做到这一点。如果我没有说清楚,请评论。

我解决了这个问题。

执行以下操作:

Array_Station_Size = np.array()
Array_Station_Size[i,] = [Station_Size[i,t].X for t in rang(T)]

假设您的模型名称是 m,请执行以下操作:

Array_Station_Size = m.getAttr('x', Station_Size)

现在是 gurobipy.tupledict。 在这里查看 gurobi 文档 http://www.gurobi.com/documentation/8.1/quickstart_windows/py_results.html