从集合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列表编制索引)。如果您只是尝试在每次求解后存储结果,并且不需要在构建下一个模型时使用之前的结果,那么我将坚持使用简单的字典和您正在使用的列表。