以元组为键在 pyomo 中设置声明

Set declaration in pyomo with tuples as key

pyomo 初学者我很难完全理解 pyomo 的集合声明。这是我的代码:

D = [1,2]
S = ['E', 'L', 'D', 'N']
CoverRequirement =  {(1, 'E'): 2,
 (1, 'L'): 2,
 (1, 'D'): 1,
 (1, 'N'): 1,
 (2, 'E'): 2,
 (2, 'L'): 1,
 (2, 'D'): 1,
 (2, 'N'): 2}

model.S = Set(initialize = S)
model.D = Set(initialize = D)
model.D_S = model.D_S = Set(within = model.D * model.S,
               initialize = [(d, s) for d in model.D for s in model.S])

model.CoverRequirement = Set(model.D_S, initialize = CoverRequirement)

错误:

ERROR: Initializer for Set R[(1, 'E')] returned non-iterable object of type
    int.
ERROR: Constructing component 'R' from data=None failed: TypeError: 'int'
    object is not iterable

集合R为第d天第s班所需员工人数

我试过这样的事情,但它看起来不正确:

model.CoverRquirement = Set(model.D_S, initialize = [((d,s),r) for (d,s) in R for r in R[r]])

如何以 d & s 为索引声明我的布景要求?谢谢

得到我的答案,应该使用 Param 而不是 Set 声明我的输入覆盖要求:

model.R1 = Param(model.D_S, initialize = R)