Gurobi - 在python中声明约束

时间:2017-01-08 16:24:49

标签: python gurobi

我试图在Python中声明下面的约束,但它不起作用。

这是我的代码:

m.addConstrs((tsk*Xkt[i]).sum(k, '*') + (tbk*Qkt[i]).sum(k, "*") <= bt[i]+Ot[i] for i in range(0, t))

1 个答案:

答案 0 :(得分:2)

tupledict.sum()方法适用于tupledict对象,而不是LinExpr,例如tsk*Xkt[i]。您有两种选择:

  1. 使用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)
    
  2. 使用tupledict.prod()方法:

    m.addConstrs(X.prod(ts, '*', t) + Q.prod(tb, '*', t) <= b[t]+O[t] for t in Trange)
    
  3. 一些评论:

    1. 我改变了你的下标符号以更好地匹配数学表达式。我不清楚表达式是否为ts和tb或t˙s和t˙b;相应地调整你的代码。
    2. 目前tupledict.prod()的语法中存在文档错误;我上面的代码反映了这种方法的正确使用。