我在openMDAO中设置了几个问题,我想为一个提取“params”向量,并使用它来设置另一个的输入。基本上第一个优化了一些东西,然后我想在另一个问题中使用该解决方案做其他事情(参见Implementing AMMF within OpenMDAO)。
我正在努力使这个通用,我不必明确命名需要交换的变量。这样一来,如果两个问题采用与输入相同的变量,它应该可以正常工作......
现在当我运行问题时,我可以从组中访问一个params成员,但是使用默认值初始化了params。不是上次运行的值。那我怎么得到那个载体呢?
我想这个问题的第二部分是如何在一次操作中“设置”所有参数。
答案 0 :(得分:0)
通常,您几乎不需要在任何情况下访问问题的params
向量。您只需要与unknowns
向量进行交互,您可以通过问题本身进行交互(例如,prob ['some_var'])。
在你的情况下,为了完全自动化,基于命名,你可能实际上需要从根组(root.unknowns
)获取未知数向量。你可以像字典一样循环它,并获取(var_name,meta_data)对。您可以使用它来获取变量值,然后使用它在您希望使用的任何下游问题中设置相同的变量名称。
如果你认为这两个问题是完全相同的,你可以盲目地循环遍历未知词典中的所有值。但是,如果它们不相同,但只是具有相同变量名称的 SOME ,则必须更加谨慎并检查第二个问题中的变量是否存在于第二个。