【问题标题】:Dymos how to use previous trajectory solution as initial guess?Dymos 如何使用先前的轨迹解决方案作为初始猜测?
【发布时间】:2021-01-20 00:50:24
【问题描述】:

我连续多次运行我的轨迹问题,同时改变一个参数来生成绘图并与其他事物进行比较。我想我可以通过使用以前的解决方案作为猜测来让它运行得更快。 我会做类似的事情吗

p['traj.phase_1.states:v'] = prev_p.get_val['traj.phase_1.states:v']

还有一个函数可以将文件“dymos_simulation.db”加载到内存中吗?

【问题讨论】:

    标签: openmdao


    【解决方案1】:

    dymos.run_problem 旨在成为使这一切变得简单的机制。

    目前有一个 PR 解决了一些缺点,但预计它会在今天的某个时间合并,并在未来一两天内包含在 dymos 0.18.0 中。同时,如果您愿意,可以针对 PR 的源分支进行测试:

    https://github.com/OpenMDAO/dymos/pull/510

    首先,您可以模拟出控件的初始猜测(如果您可能在模拟过程中遇到 ODE 中的奇点,则不建议这样做)。

    dymos.run_problem(p, run_driver=False, simulate=True)
    

    这将生成文件“dymos_simulation.db”。然后就可以运行了

    dymos.run_problem(p, run_driver=True, simulate=True, restart='dymos_simulation.db')
    

    它将使用模拟猜测作为解决方案的初始猜测。这应该足以满足搭配约束,并为优化器提供更轻松的解决方案。

    【讨论】:

    • 再次感谢罗伯!我会用 0.18 版试试看
    • 仅供参考 0.18.0 今天发布。试一试,如果有任何问题,请告诉我。
    • 嗨,Rob,刚刚试了一下。我只是连续两次运行我的问题,两次运行驱动程序,首先使用restart=None,然后使用restart='dymos_simulation.db'。似乎它对 IPOPT 达到解决方案所花费的数字迭代没有任何影响,并且没有引发任何错误
    • 好的,进一步调查——通过查看这两种情况的 IPOPT 输出文件,它正在做一些事情。在前一种情况下,IPOPT 目标值随着每次迭代而变化并收敛到最终值。我可以看到,在后一种情况下,使用 sim 文件作为初始猜测,目标从前一种情况的最终收敛值开始,稍微摆动一下,并收敛到与开始时相同的值。它需要大约相同数量的迭代。我希望它将迭代减少到 1 或 2,因为它已经有了解决方案。好像我错过了什么。
    • 发生这种情况的原因有几个。有时精确地从最优开始会导致优化器看起来“困惑”,因为它在近似的粗麻布中看不到良好的凸度。您可以通过电子邮件与我联系,我可以进一步帮助您吗?
    猜你喜欢
    • 1970-01-01
    • 2022-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多