我对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
答案 0 :(得分:0)
除非mymat [a] = 1,否则你的模型是不可行的。如果不是这样,Gurobi将告诉您实例是不可行的(您可以使用 status = Model.optimize()进行检查)并且没有值从您的变量中检索。