在 OpenMDAO 1.x 中创建自定义 driver/executor

Create custom driver/executor in OpenMDAO 1.x

我正在使用 OpenMDAO 执行 CNC 车削过程的模拟,并想为我的 Component 实现我自己的 'executor(s)' - 就像 car example in the older versions of OpenMDAO, where SimAcceleration driver 用于实施组件的执行方式。

但是,我不知道我们如何在 OpenMDAO 1.x 中实现这样的示例,我们可能希望在其中实现自定义逻辑来驱动输入和从组件获取输出 and/or Group秒。任何指点都会很有帮助。

P.S。 - 我正在考虑将我的组件包装在 Problem 中并在另一个组件中创建它的一个实例并将所有执行逻辑放在它的 solve_nonlinear 中(如建议的 )。但我不确定这是否是处理此问题的正确方法。

我们最近倾向于以不同的方式对时间积分进行建模。我们现在不使用驱动程序,而是使用一个组件来进行集成并将整个时间历史输出为一个大数组。您可以使用 a satellite design problem 查看我们的代码。但是,如果您有一个包含许多要集成的组件的大型模型,那么嵌套问题或自定义驱动程序都可以解决问题。

如果您要围绕它做一些优化,我会尝试嵌套问题方法。你可以制作你的模型,把它作为一个问题来包装。然后将该问题交给您作为自己的组件编写的某种时间积分器。或者,您可以将问题包装在一个简单的函数中,然后将该函数交给 scipy integrators

如果您只是想及时遍历模型,驱动程序就可以工作。我会尝试从其中一个优化驱动程序开始,然后使用您自己的 for 循环等对其进行修改。这会工作得很好,并且可能会成为一个有趣的驱动程序。