3

のモデルに複数レベルのインデックスがあり、次のpyomoように変数にインデックスを付ける必要があります。

model.b['a',1]

しかし、これは何らかの理由で不可能のようです。次のようにマルチレベル インデックスを使用できます。

model = ConcreteModel()
model.W = RangeSet(0,1)
model.I = RangeSet(0,4)
model.J = RangeSet(0,4)
model.K = RangeSet(0,3)

model.B = Var(model.W, model.I, model.J, model.K)
model.B[1,2,3,0]  # access the variable using the indices - THIS WORKS!!

ただし、これは機能しません。

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

最初のものは機能し、2 つ目は機能しないのはなぜですか?

4

1 に答える 1