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

2024-10-02 00:39:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我对古罗比的Python有点陌生

有人能解释我做错了什么吗? 我得到了一个错误:

gurobipy.GurobiError: Unable to convert argument to an expression

当我打电话给:

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)

Tags: toinobjforlen错误rangegrb
1条回答
网友
1楼 · 发布于 2024-10-02 00:39:48

数组'c'是一个len(v)x1矩阵,所以当你加上c[j]*v[j]时,你用一个gurobi Var对象乘以一个向量。可以通过将数组声明为1-D来解决此问题

c=np.zeros(len(v), dtype=numpy.int)

或者用

^{pr2}$

或者更简洁

obj = quicksum(c[:,0]*v)

相关问题 更多 >

    热门问题