从集合Pyomo添加和删除元素

从集合Pyomo添加和删除元素,pyomo,Pyomo,我不希望创建一个自由集,该自由集将通过在整个程序中更改的可变参数进行初始化。我不希望该自由集只包含一个值每次更改参数的值,但我无法从该自由集添加和删除值。如果它是一个列表,则可以这样做: model.iter=RangeSet(0,1000) model.ir=[] model.count1=Param(mutable=True) def solve_function(model,instance): instance=model.create_instance() for

我不希望创建一个自由集,该自由集将通过在整个程序中更改的可变参数进行初始化。我不希望该自由集只包含一个值每次更改参数的值,但我无法从该自由集添加和删除值。如果它是一个列表,则可以这样做:

model.iter=RangeSet(0,1000)
model.ir=[]
model.count1=Param(mutable=True)

def solve_function(model,instance):

    instance=model.create_instance()

    for i in instance.iter:
        if i==value(instance.count):
            instance.ir.append(i)
        else:
            pass
    results= opt.solve(instance)

    instance.solutions.load_from(results)
    .#some code
    .
    .
    .
    instance.ir=[]

有人能告诉我怎么用电视机做同样的事情吗对象?

能否向模型中添加更多详细信息,说明如何在变量或约束声明中使用instance.ir?set instance.ir正在索引一个报表参数,用于在每次解算模型后汇总结果。参数计数在循环中更改,解算函数在同一循环中调用模型是相当大的上传。其他一切都很好。我暂时解决了这个问题,将report参数设置为一个简单的dictionary,并将set ir设置为list,如上面的代码所示,但我想知道是否可以使用set对象来实现这一点。为什么要使用set和Param而不是Python dictionary和list?在模型中真正使用Set对象的唯一原因是为其他Pyomo建模组件编制索引(一些Pyomo开发人员甚至避免完全使用Set对象,直接使用Python列表编制索引)。如果您只是尝试在每次求解后存储结果,并且不需要在构建下一个模型时使用之前的结果,那么我将坚持使用简单的字典和您正在使用的列表。