0

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

1 回答 1

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)
于 2014-10-25T22:06:52.787 回答