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

时间:2016-08-07 02:44:49

标签: 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):
         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元素来实现。如果循环不花费很多时间,它是可行的。但我只是想知道是否有更好的方法来做到这一点。如果我没有说清楚,请发表评论。

2 个答案:

答案 0 :(得分:1)

我想出了这个问题。

执行以下操作:

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

答案 1 :(得分:1)

假设模型名称为MongoClientURI connectionString = new MongoClientURI("mongodb://localhost:27017"); MongoClient mongoClient = new MongoClient(connectionString); CodecRegistry pojoCodecRegistry = org.bson.codecs.configuration.CodecRegistries.fromRegistries(MongoClientSettings.getDefaultCodecRegistry(), org.bson.codecs.configuration.CodecRegistries.fromProviders(PojoCodecProvider.builder().automatic(true).build())); MongoDatabase database = mongoClient.getDatabase("testdb").withCodecRegistry(pojoCodecRegistry); ,请执行以下操作:

.button{
     -moz-user-select: none; /* Firefox */
      -ms-user-select: none; /* Internet Explorer - Edge */
          user-select: none; /* Chrome and Opera */
}

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