OpenMDAO:使用并行组以便 运行 并行相同的计算,使优化更快

OpenMDAO: Use Parallel Groups in order to run same computations i parallel, to make the optimization faster

我写这篇文章post是希望了解如何使用 OpenMDAO 设置并行计算。我被告知 OpenMDAO 有一个名为 Parallel Groups (https://openmdao.org/newdocs/versions/latest/features/core_features/working_with_groups/parallel_group.html) 的选项,我想知道这个选项是否可以帮助我制作一个无梯度优化器,能够 运行 并行计算函数它必须学习。

你知道我是否可以创建我正在尝试优化的函数的 2 或 3 个实例,并以这种方式使 OpenMDAO 能够 运行 具有不同选择输入的函数实例,在为了用更少的时间找到最佳结果,如果它必须只使用一个函数实例?

我看到这个线程更接近我正在尝试做的事情: 我认为它可以给我带来一些答案,但似乎 link 提出的答案是不再可用。

非常感谢您的帮助

首先,您需要安装 MPI、MPI4py、PETSc 和 PETSc4py。这些可以在 linux 上毫不费力地安装。他们在 OSx 上有点难,在 windows 上非常难。

您可以使用并行组来并行 运行 多个组件。不过,您是否可以将其用于无梯度方法是一个更棘手的问题。不幸的是,从 V3.17 开始,none 当前的无梯度驱动程序被设置为以这种方式工作。

你很可能让它工作,但它需要你进行一些开发。您需要找到一种方法来映射“生成数据”(使用该 GA 术语作为对并行案例集的通用参考,您可以 运行 一次使用无梯度方法)。这几乎肯定会涉及在正常的 OpenMDAO 运行 方法之外设置一个 for 循环。

您可以使用 n 个并行实例设置模型,其中 n 等于一代的大小。然后围绕对 run_model 的调用编写您自己的代码,将无梯度数据映射到该模型中,同时将所有案例映射到 运行。

我实质上是建议您放弃驱动程序 API 并围绕 OpenMDAO 编写您自己的执行代码。这种建模方法的原型出现在 2020 年反向黑客马拉松中,我们在会上讨论了如何 the driver API is not strictly necessary.