Python 提取gurobi多维变量值并形成numpy数组

Python 提取gurobi多维变量值并形成numpy数组,python,arrays,numpy,gurobi,Python,Arrays,Numpy,Gurobi,我想知道,当我在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): Admiss

我想知道,当我在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)]
Array_Station_Size = m.getAttr('x', Station_Size)

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

Array_Station_Size = np.array()
Array_Station_Size[i,] = [Station_Size[i,t].X for t in rang(T)]
Array_Station_Size = m.getAttr('x', Station_Size)
这是一个古罗比,图普莱迪克现在。 这里见古罗比医生

如果您有更好的方法,请告诉我。这是更好的方法。非常感谢。