насколько большими могут быть техносферные матрицы в brightway2 - PullRequest
0 голосов
/ 21 января 2019

Насколько большие матрицы техносферы могут быть в 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 строк, но это довольно медленно).

1 Ответ

0 голосов
/ 23 января 2019

Я знаю, что Адриан Хаас работал с разреженной матрицей с более чем 100 000 строк / столбцов. Единственным ограничением должна быть память на вашем компьютере, а не в самом программном обеспечении.

Вы можете создать обратный столбец за столбцом за разумное время и получить гораздо большую числовую стабильность и скорость пардизо:

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

Однако, по моему опыту, очень редко кто-то действительно нуждается в инверсии техносферы.

...