編集:制約にアプローチする別の方法を説明するために、制約 1.5 も追加しました。
MxN グリッド上の各 (i,j) ペアに対して、Pyomo で次の制約を記述しようとしています。
私がこれまでに持っているコードは次のとおりです。意図を満たすために制約定義が適切に記述されているかどうかについて、フィードバックを得られることを望んでいます。アイデアは、6x6 の各 (i,j) セルgrid には、次の 2 つの制約があります。
model = AbstractModel()
#Define the index sets for the grid, time horizions, and age classes:
model.Iset = RangeSet(6)
model.Jset = RangeSet(6)
model.Tset = RangeSet(7)
model.Kset = RangeSet(50)
#Define model parameters:
model.s = Param(within=NonNegativeIntegers)
#Define model variables:
model.juvenille = Var(model.Iset, model.Jset, model.Tset, model.Kset,
within=NonNegativeReals, initialize = "some expression"
#Constraints:
# Constraint #1
def juv_advance(model, i, j, t, k):
return model.juvenille[i,j,t+1,k+1] == model.juvenille[i,j,t,k]*model.juvsurv
# Constraint #1.5
def juv_advance(model, t, k):
return model.juvenille[t+1,k+1] == model.juvenille[t,k]*model.s \\
for i in model.Iset for j in model.Jset
# Constraint #2
def juv_total(model, i, j, t, k):
return sum(model.juvenille[k] for k in range(1,50))
さらに、誰かがこれに答えたいと思っている場合...次の期間の初期値として使用するために、計算された j_t+1 値を保存するにはどうすればよいでしょうか。