我试图在Python中声明下面的约束,但它不起作用。
这是我的代码:
m.addConstrs((tsk*Xkt[i]).sum(k, '*') + (tbk*Qkt[i]).sum(k, "*") <= bt[i]+Ot[i] for i in range(0, t))
答案 0 :(得分:2)
tupledict.sum()
方法适用于tupledict
对象,而不是LinExpr
,例如tsk*Xkt[i]
。您有两种选择:
使用sum()
或quicksum()
功能,创建如下表达式:
m.addConstrs(quicksum(ts[k]*X[k,t] + tb[k]*Q[k,t] for k in Krange) <= b[t]+O[t] for t in Trange)
使用tupledict.prod()
方法:
m.addConstrs(X.prod(ts, '*', t) + Q.prod(tb, '*', t) <= b[t]+O[t] for t in Trange)
一些评论:
tupledict.prod()
的语法中存在文档错误;我上面的代码反映了这种方法的正确使用。