我有一个基本的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()
print语句的输出为“ cost_index”。经过一番挖掘之后,Pyomo似乎会自动为一个多索引参数创建一个虚拟集合,该参数是给定集合的叉积。换句话说,在后台Pyomo设置了model.cost_index = model.a * model.b
。
我正在尝试找出是否有一种方法可以查找model.cost
和model.a
为model.b
编制索引的方法。如果model.cost
仅由一组索引,则调用.index_set()
将为我完成此操作。对于多维参数,还有其他方法吗?