问题描述
尝试将活动的现有交换(输入)设置为零并另外添加交换,返回以下内容:
- "MultipleResults("发现多个生产交换")"
- “noresults:没有找到合适的生产交换”
首先,我将除输出外的所有输入量设置为零:
for idx,item in enumerate(ds['exchanges']):
item['amount'] = 0
ds['exchanges'][0]['amount'] = 1
ds['exchanges'].append({
'amount': 1,'input': (new['database'],new['code']),'type': 'technosphere','name': new['name'],'location': new['location']
})
w.write_brightway2_database(DB,NEW_DB_NAME)
有没有人看到问题可能出在哪里,或者是否有其他方法可以用另一个输入替换多个输入?
非常感谢您的任何提示!
卢卡斯
完整的错误回溯:
--------------------------------------------------------------------------
noresults Traceback (most recent call last)
<ipython-input-6-d4f2dde2b33d> in <module>
2
3 NEW_DB_NAME = "ecoinvent_copy_new"
----> 4 w.write_brightway2_database(ecoinvent,NEW_DB_NAME)
5
6 # Check for new databases
~\Miniconda3\envs\ab\lib\site-packages\wurst\brightway\write_database.py in write_brightway2_database(data,name)
47
48 change_db_name(data,name)
---> 49 link_internal(data)
50 check_internal_linking(data)
51 check_duplicate_codes(data)
~\Miniconda3\envs\ab\lib\site-packages\wurst\linking.py in link_internal(data,fields)
11 input_databases = get_input_databases(data)
12 get_tuple = lambda exc: tuple([exc[f] for f in fields])
---> 13 products = {
14 get_tuple(reference_product(ds)): (ds['database'],ds['code'])
15 for ds in data
~\Miniconda3\envs\ab\lib\site-packages\wurst\linking.py in <dictcomp>(.0)
12 get_tuple = lambda exc: tuple([exc[f] for f in fields])
13 products = {
---> 14 get_tuple(reference_product(ds)): (ds['database'],ds['code'])
15 for ds in data
16 }
~\Miniconda3\envs\ab\lib\site-packages\wurst\searching.py in reference_product(ds)
82 and exc['type'] == 'production']
83 if not excs:
---> 84 raise noresults("No suitable production exchanges founds")
85 elif len(excs) > 1:
86 raise MultipleResults("Multiple production exchanges found")
noresults: No suitable production exchanges found
解决方法
似乎将交换设置为零导致了问题。在这种情况下无法写入数据库。我现在所做的是将交易所设置为一个非常小的数字,这样它们对影响评估没有影响,但不为零。不是最优雅的方式,但对我有用。因此,如果有人遇到类似问题,那可能是一个快速解决方案。