在Brightway2中可以有多大的技术圈矩阵

时间:2019-01-21 10:52:59

标签: python-3.x brightway

Brightway2中可以容纳多少大技术圈矩阵,但它们仍可逆?据我了解,here Brightway使用Pardiso库的包装器来加快矩阵求逆。与标准scipy库相比,Pardiso确实要快得多。但是当我测试它时,我遇到了大于10000行的矩阵的内存问题。要反转矩阵,我需要定义一个numpy数组,该数组不能大于我笔记本电脑上的1000000行。

from pypardiso import spsolve
import numpy as np
ar=csc_matrix(np.eye(10000))
%time spsolve(ar,np.eye(10000))

这是极限吗?还是可以避免使用numpy数组?

(PS:我使用标准的scipy求解器进行了测试,可以反转10 ^ 5行的稀疏矩阵,但是速度很慢)。

1 个答案:

答案 0 :(得分:0)

我知道Adrian Haas处理的稀疏矩阵的行数/列数超过10万。唯一的限制应该是计算机中的内存,而不是软件本身中的内存。

您可以在合理的时间内逐列创建逆矩阵,并获得更好的数值稳定性和pardiso速度的好处:

In [1]: from brightway2 import *

In [2]: import pyprind

In [3]: from time import time

In [4]: db = Database("ecoinvent 3.5 cutoff")

In [5]: def invert(database):
   ...:    lca = LCA({database.random(): 1})
   ...:    lca.lci()
   ...:    for act in pyprind.prog_bar(database):
   ...:        lca.redo_lci({act: 1})
   ...:

In [6]: start = time(); invert(db); print(time() - start)
0%                          100%
[##############################] | ETA: 00:00:00
Total time elapsed: 00:03:21
202.16850423812866

但是,以我的经验,很少有人真正需要技术圈的逆向。

相关问题