我对python上的gurobi有点新鲜
有人能解释我的错误吗? 我收到错误:
gurobipy.GurobiError:无法将参数转换为表达式
我打电话的时候:
m.setObjective(OBJ,GRB.MINIMIZE)
我的代码:
m = Model("mdp")
v=[]
for i in range(nblignes):
for j in range(nbcolonnes):
v.append(m.addVar(vtype=GRB.CONTINUOUS, lb=0, name="v%d" % (i*10+j)))
m.update()
c=np.zeros((len(v),1), dtype=numpy.int)
for k in range(len(v)):
c[k]= 1
obj = LinExpr();
obj =0
for j in range(nbcolonnes*nblignes):
obj += c[j] * v[j]
print "OBJ",obj
m.setObjective(obj,GRB.MINIMIZE)
答案 0 :(得分:1)
你的阵列' c'是一个len(v)x 1矩阵,所以当你添加c [j] * v [j]时,你将一个向量乘以gurobi Var对象。您可以通过使用
将数组声明为1-D来解决此问题c=np.zeros(len(v), dtype=numpy.int)
或用
替换你的最后一个循环for j in range(nbcolonnes*nblignes):
obj += c[j][0] * v[j]
或更简洁
obj = quicksum(c[:,0]*v)