TypeError: unsupported operand type(s) for +: 'tupledict' and 'float'

TypeError: unsupported operand type(s) for +: 'tupledict' and 'float'

我有一个模型需要通过 gurobi/python 界面进行优化。该模型称为 m。 bk是连续变量,t[0,j]是字典中key的值,为什么gurobi不能把Bk加到t[0,j].

我在下一个约束中遇到此错误:

m.addConstrs((B[j] >= Bk + t[0,j] - M*(1-xijk[k,0,j]) for j in N for k in K), '9')

我设置了以下输入数据:

ek=0
lk = 25200
K = [1,2]
N = [ i for i in range(23)]
Xijk = m.addVars(K,N,N, vtype= GRB.BINARY) 

Bk = m.addVars(K, vtype=GRB.CONTINUOUS)
B  = m.addVars(N ,vtype=GRB.CONTINUOUS)

t = {(0, 0): 0.0, (0, 9): 0.0, (0, 1): 59.0, (0, 2): 471.0, (0, 3): 353.0, (0, 4): 529.0, (0, 5): 471.0, (0, 6): 412.0, (0, 7): 412.0, (0, 8): 412.0, (0, 10): 353.0, (0, 11): 59.0, (0, 12): 471.0 .........to (22,22):0.0}

Bk在constraint#16后面出现如下

m.addConstrs((Bk >= ek for k in K), '16-')
m.addConstrs((Bk <= lk for k in K), '16')

我发现了错误。由于 Bk 是由 addVars 创建的。这是一个二元论者。您通常通过调用 Model.addVars 来构建元组字典。但是 gurobi 无法将 tupldict 添加到浮点数。因此我应该写 Bk[k] 而不是 Bk.