如何设置嵌套的驱动程序/优化器?

How to setup nested driver/ optimizer?

我是 OpenMDAO 的新手。如果想设置我的问题,以便有一个由其自己的优化器驱动的子学科,并将结果交给顶级问题,一个单独的优化器将使用这些结果。

对于更多上下文,子问题是车辆的轨迹优化。我成功地让这个问题在几次迭代中收敛,而没有改变车辆参数(质量、推力、燃料等)。到目前为止,一切都很好。但是,如果我让优化器也改变一些车辆参数,它似乎无法使其达到全局最优。

所以我的想法是让轨迹优化子问题成功完成它所做的事情,并将其作为子问题合并到整个问题中,看看是否效果更好。

所以我的问题是:

  1. 一个 OpenMDAO 问题可以有多个驱动程序吗?
  2. 正确的设置方法是什么?我是否将我的子问题包装到它自己的 ExplicitComponent 中?

虽然这是可能的,但以这种方式解决问题不会通过系统设计和轨迹设计之间的准确解析导数。

我们开发了另一种工具,专门用于进行涉及轨迹优化的多学科优化。 Dymos 它支持伪谱方法(如 GPOPS、PSOPT 和 OTIS 中的方法)以及射击方法,并且它允许将轨迹优化作为更大系统优化问题的一部分。

看看其中的一些 example problems 看看它是否适合你。