Многоиндексный параметр Pyomo - PullRequest
0 голосов
/ 14 июня 2019

У меня есть базовая абстрактная модель Pyomo с параметром, индексированным двумя наборами. Я хочу извлечь наборы, которые индексируют этот параметр, но когда я делаю, я получаю неожиданный вывод. Код ниже:

import pyomo.environ as pe

class MakeModel:
    def __init__(self):
        self.model = pe.AbstractModel()
        self.model.a = pe.Set()
        self.model.b = pe.Set()
        self.model.cost = pe.Param(self.model.a, self.model.b)


def main():
    my_model = MakeModel()
    print(my_model.model.cost.index_set())

if __name__ == '__main__':
    main()

Вывод из оператора печати - "cost_index". После небольшого копания выясняется, что Pyomo автоматически создаст виртуальный набор для многоиндексированного параметра, который является перекрестным произведением данных наборов. Иными словами, на заднем плане Pyomo устанавливает model.cost_index = model.a * model.b.

Я пытаюсь выяснить, есть ли способ найти, что model.cost проиндексировано model.a и model.b. Если model.cost был проиндексирован только одним набором, то вызов .index_set() сделает это для меня. Есть ли другой способ сделать это для многомерных параметров?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...