这似乎是一个简单的问题,但我很难找到答案。我已经有了一个带有几个参数(项目和数据库参数)的项目。我想获得几种方案的LCA结果,我的参数有不同的值,每次。我在想以下简单的程序:
我知道答案应该在某个地方的文档中,但是我很难理解如何将它应用到我的ProjectParameters、DatabaseParameters和ActivityParameters中。
提前感谢!
编辑:多亏了@Nabla,我才能想出以下内容:
对于ProjectParameter
for pjparam in ProjectParameter.select():
if pjparam.name=='my_param_name':
break
pjparam.amount = 3
pjparam.save()
bw.parameters.recalculate()对于DatabaseParameter
for dbparam in DatabaseParameter.select():
if dbparam.name=='my_param_name':
break
dbparam.amount = 3
dbparam.save()
bw.parameters.recalculate()对于ActivityParameter
for param in ActivityParameter.select():
if param.name=='my_param_name':
break
param.amount = 3
param.save()
param.recalculate_exchanges(param.group)发布于 2022-04-14 14:20:20
可以导入DatabaseParameter和ActivityParameter迭代,直到找到要更改的参数、更新值、保存值和重新计算交换为止。我觉得你应该分层次做。首先更新项目参数(如果有的话),然后更新可能依赖于项目参数的数据库参数,然后更新依赖它们的活动参数。
没有项目参数的简化情况:
from bw2data.parameters import ActivityParameter,DatabaseParameter
# find the database parameter to be updated
for dbparam in DatabaseParameter.select():
if (dbparam.database == uncertain_db.name) and (dbparam.name=='foo'):
break
dbparam.amount = 3
dbparam.save()
#there is also this method if foruma depend on something else
#dbparam.recalculate(uncertain_db.name)
# here updating the exchanges of a particular activity (act)
for param in ActivityParameter.select():
if param.group == ":".join(act.key):
param.recalculate_exchanges(param.group)您可能希望更新项目中的所有活动,而不是单个活动,如示例中所示。您只需要在循环遍历活动参数时更改条件。
https://stackoverflow.com/questions/71859796
复制相似问题