首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更新Brightway中的参数值

更新Brightway中的参数值
EN

Stack Overflow用户
提问于 2022-04-13 15:08:57
回答 1查看 82关注 0票数 0

这似乎是一个简单的问题,但我很难找到答案。我已经有了一个带有几个参数(项目和数据库参数)的项目。我想获得几种方案的LCA结果,我的参数有不同的值,每次。我在想以下简单的程序:

  1. 更改参数的值,
  2. 更新我的项目中的交流,
  3. 计算LCA结果。

我知道答案应该在某个地方的文档中,但是我很难理解如何将它应用到我的ProjectParameters、DatabaseParameters和ActivityParameters中。

提前感谢!

编辑:多亏了@Nabla,我才能想出以下内容:

对于ProjectParameter

代码语言:javascript
复制
for pjparam in ProjectParameter.select():
    if pjparam.name=='my_param_name':
        break
pjparam.amount = 3
pjparam.save()
bw.parameters.recalculate()

对于DatabaseParameter

代码语言:javascript
复制
for dbparam in DatabaseParameter.select():
    if dbparam.name=='my_param_name':
        break
dbparam.amount = 3
dbparam.save()
bw.parameters.recalculate()

对于ActivityParameter

代码语言:javascript
复制
for param in ActivityParameter.select():
    if param.name=='my_param_name':
        break    
param.amount = 3
param.save()
param.recalculate_exchanges(param.group)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-14 14:20:20

可以导入DatabaseParameterActivityParameter迭代,直到找到要更改的参数、更新值、保存值和重新计算交换为止。我觉得你应该分层次做。首先更新项目参数(如果有的话),然后更新可能依赖于项目参数的数据库参数,然后更新依赖它们的活动参数。

没有项目参数的简化情况:

代码语言:javascript
复制
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)

您可能希望更新项目中的所有活动,而不是单个活动,如示例中所示。您只需要在循环遍历活动参数时更改条件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71859796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档