Я довольно новичок в Pyomo и пытаюсь выяснить, каковы варианты использования для индексированного набора (набора наборов). Насколько я могу судить, его можно заменить параметром и вести себя так же. Буду очень признателен за любые идеи или примеры того, как индексированные наборы должны использоваться в Pyomo.
Я столкнулся с этой проблемой, когда пытался создать набор, который «помечает» мой набор времени, т.е. У меня есть model.t как набор временных меток, и я хочу сказать, например, что первые 3 метки времени являются частью группы A, следующие 3 - частью группы B и т. Д. Я делаю все это в аннотации Модель и ощущение, что Param делает то же самое, что и индексированный набор
import datetime
import pyomo.environ as pe
class CreateModel:
def __init__(self):
self.model = pe.AbstractModel()
self.model.t = pe.Set()
self.model.labels = pe.Set()
self.model.labeled_t = pe.Set(self.model.labels)
# OR
# self.model.labeled_t = pe.Param(self.model.labels)
def main():
# Some dummy input data
inputs = {
None:{
't':{
None:[
datetime.date(2020, 1, 1), datetime.date(2020, 1, 2),
datetime.date(2020, 1, 3), datetime.date(2020, 1, 4)
]
},
'labels':{None:{'A', 'B'}},
'labeled_t':{
'A':[datetime.date(2020, 1, 1), datetime.date(2020, 1, 2)],
'B':[datetime.date(2020, 1, 3), datetime.date(2020, 1, 4)]
}
}
}
m = CreateModel()
m.model.create_instance(inputs)
if __name__ == '__main__':
main()
В этом примере поведение такое же, так зачем мне нужен индексированный набор?