Gurobi - 在 python 中声明约束
Gurobi - declare constrains in python
我试图在 Python 中声明下面的约束,但它不起作用。
这是我的代码:
m.addConstrs((tsk*Xkt[i]).sum(k, '*') + (tbk*Qkt[i]).sum(k, "*") <= bt[i]+Ot[i] for i in range(0, t))
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)
几点评论:
- 我更改了您的下标符号以更好地匹配数学表达式。我不清楚表达式是 ts 和 tb 还是 t ˙ s 和 t ˙ b;相应地调整您的代码。
- 目前
tupledict.prod()
的语法中存在文档错误;我上面的代码反映了这种方法的正确使用。
我试图在 Python 中声明下面的约束,但它不起作用。
这是我的代码:
m.addConstrs((tsk*Xkt[i]).sum(k, '*') + (tbk*Qkt[i]).sum(k, "*") <= bt[i]+Ot[i] for i in range(0, t))
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)
几点评论:
- 我更改了您的下标符号以更好地匹配数学表达式。我不清楚表达式是 ts 和 tb 还是 t ˙ s 和 t ˙ b;相应地调整您的代码。
- 目前
tupledict.prod()
的语法中存在文档错误;我上面的代码反映了这种方法的正确使用。