以元组为键在 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)
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)