我正在寻找一个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
这是最好的方法吗?
答案 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')
请注意,如果您运行上述方案,则会得到预期的结果,因为将打印“此处”,但不会打印“有”。