0

背景:我ParameterVectorLCA在不同的 LCA 中使用过,这些 LCA 可能在不同的projects. 我已经存储了结果params。我想确保params它们的顺序相同。

我所知道的:
- 我知道这些参数数组的元素有两个引用inputs和的字段outputs
- 我知道activity_dictbio_dict可以告诉我们这些inputsoutputs引用的内容
- 我知道可以从一个项目重新排序supply arraysinventory_matrices通过使用各自activity_dict的和bio_dict

我不知道的是:
- 如果两个 LCA 的 myactivity_dictbio_dict相同,我是否保证 my 的顺序params相同?
- 如果我的activity_dictbio_dict不一样,我可以重新订购我的params吗?我的策略是:

  • 选择我的 LCA 之一作为“参考”
  • 对于其他 LCA,将和中的inputoutput数字更改为参考 LCA 的数字(使用和) tech_paramsbio_paramsactivity_dictbio_dict
  • tech_param为和中的每个参数的字符串表示赋予一个索引bio_param
  • 找到我想要重新排序的 LCAtech_param和LCA中参数的相应字符串表示形式的索引。bio_param
  • 使用重新索引重新排序。

这会做吗?有没有更简单的方法?

4

1 回答 1

0

项目中的参数数组在处理时将始终按相同的顺序排序(您可以看到排序时使用的字段)。此外,数组连接到例如的顺序tech_params在项目中将是相同的(数组根据它们的文件名排序)。最后,activity_dict等的构造方式也保证是一致的。但是,正如您所说,不同项目的input和值可能完全不同。output

  • 如果两个 LCA 的 activity_dict 和 bio_dict 相同,我能保证我的参数顺序相同吗?

是的。

  • 如果我的 activity_dict 和 bio_dict 不一样,我可以重新排序我的参数吗?

更棘手。

  • 对于其他 LCA,将 tech_params 和 bio_params 中的输入和输出编号更改为参考 LCA 的输入和输出编号(通过使用 activity_dict 和 bio_dict)

这不起作用,因为activity_dict从键到矩阵列;中的值inputmapping值。因此,您需要访问 `mapping 才能使用此策略。

到目前为止,最简单的方法是重新排序两个参数数组,忘记mapping值(可能因项目而异),而是使用活动键(我假设它们是相同的)。然后,您可以轻松地按输入键、输出键、数量等对每个数组进行排序(请参阅dtype_fields_order;有相同输入和输出的重复交换),并确信您得到相同的顺序。

这将是实用程序库的一个很好的补充,但请确保先编写测试!

于 2017-04-26T07:39:25.330 回答