Pyomo Индексированные множества - PullRequest
1 голос
/ 07 мая 2019

Я довольно новичок в 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()

В этом примере поведение такое же, так зачем мне нужен индексированный набор?

...