从 0.X 转换的最佳实践:变量树

Best practice in converting from 0.X: variable trees

是否有推荐的将变量树从 0.X 转换为 1.X 的最佳实践?我的直觉是把变量树做成组件,但是我很好奇OpenMDAO团队是怎么想的

我们不再使用变量树。相反,我们只是分层命名变量,如 "top:sub:subsub:x, top:sub:subsub:y"

千焦耳,

我也对变量树的消除感到非常沮丧;但是,我对他们如何未能与 openmdao 组件集成并且默默地失败感到更加沮丧。真好。

我一直在试验 numpy.ndarray 作为变量树的替代品。有关详细信息,请参阅 Sellar 示例。使用字段名称创建多维 ndarray 似乎适用于名称引用的数据结构。创建多维性似乎需要嵌套声明,类似于变量树分支。

请注意,numpy.array (sic) 与 openmdao 不兼容,但 numpy.ndarray (sic) 运行良好,因为 ndarray 是一个 "structured" 数组对象,具有大小、形状、数据内部字典中指定的类型等。比变量树更好的是,多维 ndarray 提供多个 "views" 相同的关系与一个(大量的)全局声明,可以实例化为组件内的参数。填充 ndarray 实例是通过字段名称引用分配而不是一些迭代来完成的。声明为必须提供有关结构化数组的所有信息以在 openmdao 中工作更为复杂。此外,numpy.ndarray 用于严格固定的数组大小和关系,就像变量树一样。

我并不是在每个应用程序中都提倡这个概念,但请务必查看您的情况。
西尔维娅