如何检查Pyomo模型中是否存在某些东西

时间:2019-05-08 19:18:29

标签: python optimization pyomo

我正在寻找一个pyomo函数,如果pyomo模型中存在一个元素,该函数将返回True。

例如,如果我创建一个简单的pyomo模型,我希望它响应如下。另外,也许有一种方法可以输出Pyomo模型中所有元素的列表,然后我可以检查某个元素?

import pyomo.environ as pe

model = pe.AbstractModel()
model.t = pe.Set()
model.A = pe.Param(model.t)

# Do functions such as has_element() or list_elements() exist?
model.has_element('A') # Returns True
model.has_element('B') # Returns False

elements = model.list_elements()
print('A' in elements) # Prints True
print('B' in elements) # Prints False

到目前为止,我想出的最好的方法是使用find_component()函数,该函数将返回该组件(如果存在),如果没有则返回None

import pyomo.environ as pe

model = pe.AbstractModel()
model.t = pe.Set()
model.A = pe.Param(model.t)

model.find_component('A') # Returns model.A
model.find_component('B') # Returns None

这是最好的方法吗?

1 个答案:

答案 0 :(得分:0)

因为字符串和非空对象通常是真实的,而在Python中None是虚假的:

if model.find_component('A'):
    # do something with model A
    print('here')

if model.find_component('B'):
    # do something with model B
    print('there')

请注意,如果您运行上述方案,则会得到预期的结果,因为将打印“此处”,但不会打印“有”。