【问题标题】:OpenMDAO Extracting and setting params from a openmdao groupOpenMDAO 从 openmdao 组中提取和设置参数
【发布时间】:2016-02-17 12:16:02
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 你的问题有点模糊。如果你构建了一个简单的例子来解决这个问题,那会很有帮助。
  • 在我的博士期间,我创建了类似于 openMDAO 但在 C++ 中的东西......没有那么复杂,它做的事情有点不同。尽管实际值存储在对象中,但我有收集/设置整个设计向量的 get/set 方法。所以我希望我可以用 openMDAO 做类似的事情
  • 我必须跑……但我稍后会澄清我的问题……

标签: openmdao


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多