我有一个包含2个键(i和j)的字典,与数据框中的索引相同。 数据帧示例 - 对不同i和j配对的要求。
i j Demand
0 1 13
0 2 24
0 3 68
0 4 92
0 5 72
0 6 11
0 7 12
0 8 6
0 9 4
0 10 3
1 1 0
1 2 11
1 3 15
. . .
i从0到9,j从1到10重复每个i。 接受预订的字典是根据这种要求建立的:
bookingsaccepted = pulp.LpVariable.dicts("bookingsaccepted",
((i, j) for i, j in demand.index), lowBound=0, cat='Integer')
现在我试图在预订字典中引用值。我试图在纸浆中设置约束,以便将i = 0的所有(i,j)对相加在一起。我正在使用它,但它不起作用,我无法弄清楚原因。
model += pulp.lpSum( [bookingsaccepted[(0,j)] for j in demand.index] ) <= capacity
给出错误: KeyError:(0,(0,1))
答案 0 :(得分:2)
您的demand.index
似乎由成对(i, j)
组成。看这里你迭代demand.index
它带来i和j:
bookingsaccepted = pulp.LpVariable.dicts("bookingsaccepted",
((i, j) for i, j in demand.index), lowBound=0, cat='Integer')
因此,当您迭代demand.index
时,您会得到一个元组(i, j)
。如果您只需要j
,请执行以下操作:
model += pulp.lpSum( [bookingsaccepted[(0,j)] for i, j in demand.index] ) <= capacity
或
model += pulp.lpSum( [bookingsaccepted[(0,index[1])] for index in demand.index] ) <= capacity