如何在Gurobi Python中将决策变量与矩阵相乘

时间:2016-10-27 13:52:29

标签: python matrix gurobi

我对Gurobi非常陌生,我试图按照以下方式实施分配问题:

      # Create decision variables for the allocation
        x = {}
        for s in arr1:
           for t in arr2:
              x[s,t] = m.addVar(vtype=GRB.BINARY, name="allocation")

              x[s,t] == x[s,t] * mymat[s]
        m.modelSense = GRB.MAXIMIZE
        m.update()

我想知道如上所述编写线性表达是可能的,这样我就可以最大限度地将人员分配给具有相似偏好的同一任务。 但是,当使用x [s,t] .x退出结果时,运行上面编写的模型会产生错误。错误是 GurobiError:无法检索属性' X'

从单独的文件到模型的数据,代码如下:

    data=c.execute('select id,pref from data')
    result = c.fetchall()
    pref_data=dict(result)

    mymat=defaultdict(int)
    a=1
    for i in range(1,10):
       row = [] 
       for x in range(0,i):
          row.append(0)
      for j in range(i+1, 10):
          if pref_data[i]==pref_data[j]:
             row.append(1)
          else:
             row.append(0)
      mymat[a]=row
      a+=1

1 个答案:

答案 0 :(得分:0)

除非mymat [a] = 1,否则你的模型是不可行的。如果不是这样,Gurobi将告诉您实例是不可行的(您可以使用 status = Model.optimize()进行检查)并且没有值从您的变量中检索。