0

我在 openMDAO 中设置了几个问题,我想为一个提取“参数”向量,并使用它来设置另一个的输入。基本上第一个优化了一些东西,然后我想在另一个问题中使用该解决方案来做其他事情(请参阅在 OpenMDAO 中实现 AMMF)。

我试图在不必明确命名需要交换的变量的情况下做到这一点。这样,如果这两个问题采用相同的变量作为输入,它应该可以工作......

现在,当我运行问题时,我可以访问组中的 params 成员,但该 params 是使用默认值初始化的。不是上次运行的值。那么我如何得到那个向量呢?

我想这个问题的第二部分是如何在一次操作中“设置”所有参数。

  • 堆栈溢出的愚蠢限制是我不能在标题中使用单词问题。我明白了,但是如果我想引用一个名为问题的 openMDAO 对象怎么办?
4

1 回答 1

0

通常,您几乎不需要params在任何情况下访问问题的向量。您应该只需要与unknowns向量进行交互,您可以通过问题本身来完成(例如 prob['some_var'])。

在您的情况下,要使某些东西完全自动化,仅基于命名,您实际上可能需要从根组 ( root.unknowns) 中获取未知向量本身。您可以像字典一样遍历它,并获取 (var_name, meta_data) 对. 您可以使用它来获取变量值,然后使用它在您希望使用的任何下游问题中设置相同的变量名称。

如果你假设这两个问题是完全一样的,你可以盲目地循环遍历未知字典中的所有值。但如果它们不一样,只是有一些相同的变量名,你就必须更加谨慎,检查第一个问题中的变量是否存在于第二个问题中。

于 2016-02-17T13:16:52.300 回答