我在openMDAO中设置了几个问题,我想为其中一个提取"params“向量,并使用它来设置另一个的输入。基本上,第一个优化了一些东西,然后我想在另一个问题中使用这个解决方案来做其他的事情(参见Implementing AMMF within OpenMDAO)。
我试图使这个通用化,在这里我不需要显式地命名需要交换的变量。这样,如果这两个问题以相同的变量作为输入,它应该能工作.
现在,当我运行这个问题时,我可以从这个组访问一个params成员,但是这个params是用默认值初始化的。不是上次运行的值。那我怎么得到那个向量呢?
我想这个问题的第二部分是如何在一个操作中“设置”所有参数。
发布于 2016-02-17 13:16:52
通常,在几乎任何情况下都不需要访问问题的params向量。您应该只需要与unknowns向量进行交互,这可以通过问题本身来完成(例如prob‘should’)。
在您的例子中,为了使某些东西完全自动化,仅基于命名,您可能实际上需要从根组(root.unknowns).You可以像字典那样循环获得未知数向量本身,并得到(var_name,meta_data)对。您可以使用它来获取变量值,然后使用它在您希望使用的任何下游问题中设置相同的变量名。
如果假设这两个问题是完全相同的,那么就可以盲目地遍历未知字典中的所有值。但是,如果它们不是相同的,而只是有一些相同的变量名,那么您必须更加谨慎,并检查第一个问题中的变量是否存在于第二个问题中。
https://stackoverflow.com/questions/35456470
复制相似问题