Dymos 棘手的相位连接

问题描述

我的 Dymos 轨迹分为 3 个阶段。在第一阶段和最后阶段,我使用攻角作为控制。在第二阶段,我不想控制而是让攻角保持在第一阶段的最后一个值。我在中间阶段使用 opt = False 关闭了攻角优化。我使用 add_link_constraint() 来连接第一和第二阶段之间的 alpha,但这并没有像我想象的那样工作——在第二阶段,alpha 认为零,并在第一阶段结束时强制 alpha 为零。不确定如何使其覆盖。

解决方法

在这种情况下,由于 alpha 在第二阶段不是动态的,而您只是希望它保持其值,您应该将其设为 参数 而不是 控件 .

让它的值由优化器决定(通过设置 opt=True),并使用相位链接约束来强制 dymos 驱动 alpha 值与第一阶段结束和第二阶段开始之间的差异相位为零。

有一个测试用例演示了这个 here。在测试案例中,控制角 u1 在第一和第三阶段(推进时)是动态控制,并在第二阶段(滑行)保持恒定值。

此测试用例在 Trajectory 上使用 link_phases 方法来施加连续性(链接)约束。或者,add_linkage_constraint 方法更通用,但使用起来更复杂。

请注意,此功能是 Dymos 的新功能,因此我建议使用最新版本。

在这种情况下将其保留为优化控件不起作用,因为链接只会尝试链接第二阶段端点处的值。内部值对优化没有任何影响。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...