我在pyomo
中的模型中有多个级别的索引,我需要能够像这样索引变量:
model.b['a',1]
但这似乎是不可能的,因为某些原因。我可以像这样使用多级索引:
^{pr2}$但这并不奏效:
model = ConcreteModel()
model.W = Set(['a','b'])
model.I = RangeSet(0,4)
model.b = Var(model.W, model.I) # I can't even create this - throws exception
…它引发异常:
TypeError: Cannot index a component with an indexed set
为什么第一个有效而第二个不起作用?在
问题是当你写作的时候
^{1}$实际上,您正在创建一个索引集对象,而不是一个具有所提供列表中的值的集。这是因为所有Pyomo组件构造函数都将位置参数视为索引集。在
您可以通过在值列表之前添加“initialize”关键字来解决此问题
^{pr2}$如果您提供的是整数而不是字符串的列表,则情况也是如此
相关问题 更多 >
编程相关推荐