Как проверить, существует ли что-то в модели Pyomo - PullRequest
0 голосов
/ 08 мая 2019

Я ищу функцию pyomo, которая вернет True, если элемент существует в модели pyomo.

Например, если я создам простую модель 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 голосов
/ 08 мая 2019

Поскольку строки и непустые объекты, как правило, являются правдивыми, а в 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')

Обратите внимание, что если вы запустите приведенный выше сценарий, вы получите ожидаемый результат, поскольку "здесь" будет напечатано, но "там" не будет.

...