Могу ли я инициализировать Set () в pyomo со списком наборов? Другими словами, я хотел бы сделать что-то вроде этого:
from pyomo.environ import *
model = AbstractModel()
a = set([1,2,3])
b = set([4,5,6])
model.c = Set(initialize = [a,b])
instance = model.create_instance()
К сожалению, это дает мне ошибку:
ERROR: Constructing component 'a' from data=None failed:
TypeError: Problem inserting set([1, 2, 3]) into set c
Есть ли другой способ добиться того же эффекта, которого мне не хватает?
TL; DR: Я работаю над моделью сетевого запрета. Моя модель Set представляет собой набор путей в сети. Я хочу использовать наборы (python) для хранения путей, потому что ограничения модели ограничены возможными путями. Таким образом, мне нужно проверить, не заблокировано ли какое-либо ребро на пути, а хеш-функция позволит мне эффективно проверить, не попадает ли запрещенное ребро в путь. Другими словами, у меня есть функция позже:
def is_feasible(model, path):
return any([edge in path and model.Interdicts[edge].value] for edge in model.edges)
где path - это элемент моего Set, а model.Interdicts - это Var (model.edges, внутри = binary)
Мой запасной вариант заключался в том, чтобы инициализировать мой Set с индексами, которые ссылаются на пути во внешнем списке, но тогда мне приходится смешивать мою модель pyomo с немодельными элементами для оценки ограничений модели, что является настоящей головной болью (но тогда и большинство моделей сетевых запретов ...)