【问题标题】:How to setup nested driver/ optimizer?如何设置嵌套驱动程序/优化器?
【发布时间】:2020-08-07 21:20:59
【问题描述】:

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

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

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

所以我的问题是:

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

【问题讨论】:

    标签: openmdao


    【解决方案1】:

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

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

    看看example problems 的一些内容,看看它是否适合你。

    【讨论】:

    • 谢谢罗伯。我正在检查 Dymos,它看起来很有趣。我实际上正在研究运载火箭优化,我看到有一些关于该主题的示例。我正在使用已编译的程序(不是我编写的)进行轨迹拍摄,同时让 SLSQP 在满足约束(最终轨道,最大 Qalpha)的同时优化有效载荷。为了取得进展,我将按照此处 (stackoverflow.com/questions/35287786/…) 的说明将轨迹优化包装在一个组件中,然后看看我在哪里。
    • Dymos 看起来很有趣,但我必须做很多工作才能复制我现在使用的轨迹程序的全部功能——3 DOF 等等
    • 这是一项艰巨的任务,这是可以理解的。如果您需要依赖该外部工具,您可以尝试使用 OpenMDAO 的 ExternalCodeComp 来包装该外部可执行文件。不利的一面是,它可能无法提供其输出 w.r.t 的分析敏感性。它的输入,所以你会失去它,并且“黑匣子”中的有限差分会慢一些。
    猜你喜欢
    • 1970-01-01
    • 2018-12-15
    • 2016-04-10
    • 1970-01-01
    • 2022-11-24
    • 2021-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多