我对Pyomo很新,我正在尝试解决以下涉及根据特定条件创建一组集合的问题。
假设我有一组操作'和一组V节点'。每个操作都与V。
中包含的某个节点列表相关联我想基于条件包含某个特定元素x的V来创建O的一系列子集。
我正在考虑以下伪代码来填充一个hypotetical子集S.x:
create empty set S.x
for each v in V:
for each o in O:
if v is in o:
populate S.x with operation o
但是,我不确定如何在Pyomo中形式化。您对采用哪种方法有任何建议吗?
谢谢!
答案 0 :(得分:0)
我认为你想要的是一个索引集:
# Assume a dict v_in_o, with keys o and values of a list of v's in that o
model.V = Set(initialize=set(v for o in v_in_o for v in v_in_o[o])
model.O = Set(initialize=v_in_o.keys())
model.S = Set(model.O, within=model.V, initialize=v_in_o)