根据某些条件在pyomo中创建一组集合

时间:2018-04-20 18:28:52

标签: set populate pyomo indexed

我对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中形式化。您对采用哪种方法有任何建议吗?

谢谢!

1 个答案:

答案 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)