0

Brightway2 中的技术领域矩阵可以有多大,并且仍然是可逆的?据我了解 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 行的稀疏矩阵,但速度很慢)。

4

1 回答 1

0

我知道 Adrian Haas 使用了超过 100 000 行/列的稀疏矩阵。唯一的限制应该是您机器中的内存,而不是软件本身。

您可以在合理的时间内逐列创建逆向,并获得更好的数值稳定性和 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

然而,根据我的经验,很少有人真正需要技术领域的反面。

于 2019-01-23T11:52:34.850 回答