我正在构建一个包含超过 100 万个约束和 200 万个变量的大型 pyomo 模型。
我正在寻找减少我正在构建的模型的内存需求的建议。
目前它需要超过20gb
's 的 RAM。
我将如何减少这种情况?
我从来没有测试过使用/不使用定义变量within=pyomo.NonNegativeReals
。但我假设它会减少给定变量所需的内存量。在不减少变量或约束的数量的情况下,我还能做其他事情吗?
例如:
以下var
将需要X
内存字节
m.var = pyomo.Var(
m.index)
也许跟随将需要X-1
内存字节
m.var = pyomo.Var(
m.index,
within=pyomo.NonNegativeReals)
当然,这是一种猜测。如果不进行测试,则无法确定这一点。但是,如果有人对此问题有想法或更多经验,我愿意尝试任何事情。
有任何想法吗?
一些测试:
请记住,这不是真正的模型,而是使用其他数据构建的示例。但仍然是相同的脚本。
index=1000 // Full Consts // 347580 KB (commit) // 370652 KB (working set)
0 Const Full Rules // 282416 KB (commit) // 305252 KB (working set)
0 Const 0 Rule // 282404 KB (commit) // 305200 KB (working set)
1 Const 1 Rule // 290408 KB (commit) // 313136 KB (working set)
index=8760 // Full Consts // 1675860 KB (commit) // 1695676 KB (working set)