您好我在python中仍然很新,并且想知道为什么这一行:
RP[p][t] = demand[p][t] / fillingrate[p]
导致错误:KeyError:0
它遵循代码的相关部分。这只是表示法的错误,或者解决它的最佳方法是什么?
productname = ('milk', 'yoghurt', 'buttermilk')
fillingrate = (1.5, 1.0, 2.0)
day = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)
demand = [
(5, 4, 3, 3, 4, 9, 13, 5, 4, 4, 3, 5, 10, 12),
(3, 5, 3, 5, 5, 4, 3, 4, 3, 4, 3, 4, 5, 5),
(3, 3, 5, 4, 4, 5, 4, 3, 4, 3, 4, 5, 4, 5)
]
T = range (len(day))
P = range (len(productname))
for p in P:
for t in T:
RP[P,T] = model.addVar (lb = 0, vtype = GRB.CONTINUOUS,
name = 'Regular Production[' + str(p) + ',' + str(t) + ']')
print(demand[p][t])
print(fillingrate[p])
RP[p][t] = demand[p][t] / fillingrate[p]
print(RP[p][t])
答案 0 :(得分:5)
[x, y]
的索引与<{1}}的索引完全不同。前者导致使用元组索引的单个维度,而后者导致粗糙的2-D阵列。
您需要在包含所需值的索引[x][y]
处创建一个新对象。
答案 1 :(得分:1)
表达式P
与p
不同。在您的代码中,第一个是范围,第二个是该范围内的整数。
因此,表达式RP[P,T]
在两个方面是错误的:它使用错误的下标,并以错误的方式组合它们(如另一个答案所指出的那样)。
我认为你想要RP[p][t]
。