как параматизировать существующий обмен с Brightway - PullRequest
0 голосов
/ 28 июня 2018

Я хочу параматизировать обмен существующей деятельностью Brightway. в примере я обнаружил, что формула определена для new_exchange, можем ли мы сделать это для существующего?

практическим примером может быть переопределение расхода топлива в зависимости от более высокой теплотворной способности и эффективности.

ex=[act for act in bw.Database('ei_34con') if 'natural gas' in act['name']
                                  and 'condensing' in act['name']
                                  and 'CH' in act['location']][0].copy()

ng_flow=[f for f in ex.technosphere() if ('natural gas' in f['name'])][0]


act_data=[{'name':'eff',
       'database':ex['database'],
       'code':ex['code'],
       'amount':0.95,
       'unit':''},
       {'name':'HHV',
       'database':ex['database'],
       'code':ex['code'],
       'amount':37,
       'unit':'MJ/m3'}]

bw.parameters.new_activity_parameters(act_data, "my group")

Я наивно пытался

ng_flow['formula']='1/eff/HHV'

bw.parameters.add_exchanges_to_group("my group", ex)
ActivityParameter.recalculate_exchanges("my group")

но параметры не обновили сумму обмена.

1 Ответ

0 голосов
/ 30 июня 2018

Вы были довольно близко.

Я переименую твой код и строку

bw.parameters.add_exchanges_to_group("my group", ex)

возвращает 0. Это означает, что параметры не были добавлены.

Однако, если я сохраню , обмен будет первым:

 ng_flow.save()
 bw.parameters.add_exchanges_to_group("my group", ex)

возвращает 1, а

for exc in ex.technosphere():
    if "natural gas" in exc['name']:
        print(exc.amount, exc.input, exc.output)

печать

0.028449502133712657 'market for natural gas, low pressure' (cubic meter, CH, None) 'heat production, natural gas, at boiler condensing modulating <100kW' (megajoule, CH, None)

Обратите внимание, что ng_flow.as_dict() показывает , а не показывает обновленное значение.

...