1

multiLCA 对象的特征库存矩阵在 Brightway2 中代表什么?我本来希望在对象中找到几个这样的矩阵,代表不同活动和不同影响评估方法的特征清单。

对于一个简单的 LCA 对象,特征库存矩阵的所有元素的总和给出了该活动的总体影响。但 MultiLCA 对象似乎并非如此(例如)

#impact assessment method
i2002=[('IMPACT 2002+ (Endpoint)', 'resources', 'total'),
     ('IMPACT 2002+ (Endpoint)', 'climate change', 'climate change'),
     ('IMPACT 2002+ (Endpoint)', 'human health', 'total'),
     ('IMPACT 2002+ (Endpoint)', 'ecosystem quality', 'total')
      ]

fu=[]
for j in range(1,11):
    fu.append({bw.Database('ei_33c').random():1})
testsetup_i2002 ={'inv': fu, 'ia':i2002}
bw.calculation_setups['testsetup_i2002'] = testsetup_i2002
mlca_test=bw.MultiLCA('testsetup_i2002')

result=mlca_test.lca.characterized_inventory.sum()

结果与从获得的分数或分数总和不同

mlca_test.results()
4

1 回答 1

0

可以看MultiLCA 源码,比较简单。它会覆盖characterized_inventory计算的每一步的矩阵,并且只将结果存储在 Numpy 数组中self.results = np.zeros((len(self.func_units), len(self.methods))):为了得到你想要的——功能单元和 LCIA 方法的每个组合的单独特征库存矩阵——你必须编写自己的子类。这是一个例子:

from bw2calc.multi_lca import *


class PersistentMultiLCA(MultiLCA):
    def __init__(self, cs_name):
        if not calculation_setups:
            raise ImportError
        assert cs_name in calculation_setups
        try:
            cs = calculation_setups[cs_name]
        except KeyError:
            raise ValueError(
                "{} is not a known `calculation_setup`.".format(cs_name)
            )
        self.func_units = cs['inv']
        self.methods = cs['ia']
        self.lca = LCA(demand=self.all, method=self.methods[0])
        self.lca.lci(factorize=True)
        self.method_matrices = []
        self.results = {}
        for method in self.methods:
            self.lca.switch_method(method)
            self.method_matrices.append(self.lca.characterization_matrix)

        for row, func_unit in enumerate(self.func_units):
            self.lca.redo_lci(func_unit)
            for col, cf_matrix in enumerate(self.method_matrices):
                self.lca.characterization_matrix = cf_matrix
                self.lca.lcia_calculation()
                self.results[row, col] = self.lca.characterized_inventory.copy()
于 2017-06-29T14:25:46.373 回答