在 pyomo 中创建一个具有稀疏索引的变量
Create a variable with sparse index in pyomo
我需要帮助来创建一个具有稀疏索引的变量。
我有这样的东西:
model.K = Set()
model.P = Set()
model.KP = Param(model.K, model.P, default=0)
我将为 model.KP
加载一个 CSV 文件,其中 K 和 P 的组合值为 KP==1
。
model.X = Var(model.K, model.P)
我只想为 model.KP 中的 K 和 P 的组合创建这个变量,因为当我用 K 和 P 的所有组合创建变量时,它会生成 3700 万个索引集我给了,这会造成内存问题。
创建一个包含元组 (k,p)
的 Set
并将其用作定义变量和参数的集合。
定义您的集合元素:
kp = []
for k in model.K:
for p in model.P:
foo_tuple = (k, p)
kp.append(foo_tuple)
注意:由于您将使用 CSV 文件加载数据,因此此时也可以完成所有 K 和 P 组合的填充 kp
。
然后使用 kp
中的元素创建一个 Set
:
model.S = Set(initialize=kp)
如果不需要,我建议不要在 model.KP
参数中使用默认值。这样做会通知您本应有的元素缺少值。但是假设您仍然希望在没有为元组 (p,k)
提供任何值时将参数 model.PK
的所有值设置为 0
并继续使用默认值,您应该像这样定义参数:
model.KP = Param(model.S, default=0)
然后,定义您的变量将是:
model.X = Var(model.S)
我需要帮助来创建一个具有稀疏索引的变量。 我有这样的东西:
model.K = Set()
model.P = Set()
model.KP = Param(model.K, model.P, default=0)
我将为 model.KP
加载一个 CSV 文件,其中 K 和 P 的组合值为 KP==1
。
model.X = Var(model.K, model.P)
我只想为 model.KP 中的 K 和 P 的组合创建这个变量,因为当我用 K 和 P 的所有组合创建变量时,它会生成 3700 万个索引集我给了,这会造成内存问题。
创建一个包含元组 (k,p)
的 Set
并将其用作定义变量和参数的集合。
定义您的集合元素:
kp = []
for k in model.K:
for p in model.P:
foo_tuple = (k, p)
kp.append(foo_tuple)
注意:由于您将使用 CSV 文件加载数据,因此此时也可以完成所有 K 和 P 组合的填充 kp
。
然后使用 kp
中的元素创建一个 Set
:
model.S = Set(initialize=kp)
如果不需要,我建议不要在 model.KP
参数中使用默认值。这样做会通知您本应有的元素缺少值。但是假设您仍然希望在没有为元组 (p,k)
提供任何值时将参数 model.PK
的所有值设置为 0
并继续使用默认值,您应该像这样定义参数:
model.KP = Param(model.S, default=0)
然后,定义您的变量将是:
model.X = Var(model.S)