Gurobi:无法将参数转换为表达式

时间:2014-10-25 19:17:42

标签: python python-2.7 gurobi

我对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)

1 个答案:

答案 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)