OpenMDAO 中的 MDO 架构

MDO Architectures in OpenMDAO

总的来说,我是 OpenMDAO 和 MDO 的新手。我喜欢使用 OpenMDAO,并且想了解更多。目前我正在阅读有关 MDO 架构的文章。当我在Openmdao中运行一个问题'normally'时,MDO架构是什么。如果我假设它是整体 AAO(因为它计算总导数并从那里解决问题),我是否正确?我问这个是因为我读到了 MAUD 架构(在 paper 中描述),这让我很困惑。这是否可以被视为 MDO 架构的分类之一(因为它确实提供了数学和算法框架)或者它只是一种纯粹的计算架构?

最后,通过在 OpenMDAO 中针对大规模设计问题实施比较不同的 MDO 架构(如 MDF、CO、ATC 等)是否有意义?我知道 OpenMDAO 专注于单体架构。那么在 OpenMDAO 中比较单体架构和分布式架构是否公平?另外,来自 OpenMDAO V1 的 MDO 架构基准测试结果(在此 paper)是否仍然适用于当前版本的 OpenMDAO V2(即在结合 MAUD 架构的想法之后)?

谢谢。

你问了三个问题。我将分别回答它们(并稍微改写一下):

1) 当您在 OpenMDAO 中解决问题(正常方式)时,您使用的是哪种 MDO 架构?

如果你看一下架构上的 Martins and Lamb paper,你会发现它们将它们分为整体式和分布式 类。当您使用 OpenMDAO 时,您几乎总是在应用某种形式的单体优化架构。在实践中,许多人最终应用看起来很像 MDF 的东西,因为他们的模型中有求解器,但我也经常看到 MDF/IDF 混合、SAND,甚至 AAO 方面的问题。

广义地说,OpenMDAO 的灵活性允许您重构模型,以便任何特定的等式约束都可以由求解器(类似 MDF)、兼容性约束(类似 IDF)或直接作为优化器的等式约束(类似 SAND)意味着用户可以灵活地构建各种单体架构的混合形式。

通过对顶级模型中的子问题使用 OpenMDAO Problem class 的嵌套实例,可以使用 OpenMDAO 实现分布式架构。这不是微不足道的,但它是可能的。这种方法通常面临一个主要挑战:顶级优化问题将需要跨子问题的导数,这是 OpenMDAO 实际上无法提供的(因为它需要计算 post-最优灵敏度,这是非常重要的并且不在 MAUD 的范围内)

2) MAUD 与 MDO 架构有什么关系?

这两个概念是相互独立的事物,但它们绝不是一回事。

  • MAUD 是一种跨任意超级函数计算导数的特定方法,该超级函数由一堆串在一起的子函数组成。
  • MDO 架构 a 是将基本优化问题公式转换为可解决的特定形式(有关我所说的 "fundamental optimization problem formulation" 的详细信息,请参阅此 paper by Pate et al.)。无论您将问题转换成什么形式,它都需要 objective/constraint 函数的导数,您可以根据需要计算这些函数(可能使用 MAUD/OpenMDAO,也可能不使用)。

3) 先前在 OpenMDAO 中完成的体系结构基准测试是否仍然有效?

在我看来,在根本没有使用 OpenMDAO 的 OpenMDAO based paper you cited, which is backed up by this other paper from Tedford and Martins 中完成的基准测试,但我认为也是相关的。如果您尝试新问题,我个人不希望答案发生重大变化。这两篇论文似乎都认为单体架构(AAO、SAND、MDF、IDF)是性能最好的,并且总体上最一致。

在某些情况下,分布式架构表现良好,欧洲的一个小组在解决特定问题时取得了一些成功。以 this paper from Gazaix et al. 为例。

因此,如果您真的对架构感兴趣,我建议您可以找到一种方法来生成特定的 类 在不同架构下表现良好的问题,然后在论文中提供这样的分类。如果成功,对于需要决定使用哪种架构的未来 researchers/practitioners 来说,这可能是一个很好的资源。但是,我的观点是,在绝大多数情况下,单体架构的性能最好。我怀疑您很难让分布式架构在广泛的案例中表现良好。 Gazaix 论文证明了从分布式 MDO 架构中获得有用结果当然是可能的,但它并没有证明它会比等效的整体式架构更快。