TypeError:不支持+:“tupledict”和“float”的操作数类型

2024-07-03 06:25:08 发布

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

我有一个模型要通过gurobi/python接口进行优化。这个模型叫做m。 Bk是一个连续变量,而t[0,j]是字典中键的值,为什么古罗比不能将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随后出现在约束条件#16中,如下所示

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

Tags: in模型for字典错误bkcontinuouslk
1条回答
网友
1楼 · 发布于 2024-07-03 06:25:08

我发现了错误。因为Bk是由addVars创建的。这是一本书。通常通过调用Model.addVars来构建tupledict。但古洛比不能在浮点数上加一个元组。因此我应该写Bk[k]而不是Bk

相关问题 更多 >