Dymos - 连接到下游分析 - 变量索引
Dymos - connecting to downstream analysis - variable index
我想按照此处所述在我的轨迹下游做一些分析
https://openmdao.github.io/dymos/faq/downstream_analysis.html
我想做的略有不同 - 我不想将阶段的结束或开始(或某个固定索引)连接到某个下游组件。我想要做的是找到特定状态在一个阶段内处于最大值的节点/时间,然后将那个时间/节点的各种状态变量连接到我的下游分析。出现最大值的节点/时间将根据问题的输入而改变,因此不能真正提前知道
具体来说,我正在尝试对运载火箭上升的最大动态压力 (Max-Q) 点进行一些分析。我可能只查看出现 max-Q 的阶段中的每个点,但也许没有必要。
我可以只对相位的动态压力值数组使用“max”函数,获取索引和该索引处的其他感兴趣状态。但是那你怎么区分呢?
你说得对,max 函数是不可微的。但是,我们提供了一个类似的功能:KS function
它不是 max 的完美替代品,但在这种情况下非常好。您可以传入整个时间序列,然后它将输出该数组中最大值的近似值。
有一个 rho
选项可以控制您的近似值与最大函数的接近程度。较大的值更像最大值,但数值条件也较差,因为最大值周围的导数开始变得非常大。默认值 50 可能没问题,但如果需要,您可以尝试使用该值。
我们处理这种情况的方法是当变量的导数达到最大值达到零时结束一个阶段,然后在第二个阶段从那里继续标称轨迹。例如,对于 Max-Q,您可以为动压 (q_dot
) 的导数创建一个方程,然后使用最终边界约束使该阶段在 q_dot
为零时结束。
第二个阶段从该点开始继续进行标称轨迹。
使用此技术,您可以了解 max-Q 的确切条件。
我们可以添加的一个功能是允许时间序列输出的近似导数,尽管我们需要仔细考虑。例如,我们可以将 q
的时间序列值乘以这个微分矩阵,以获得 q_dot
的合理近似值。然后我们可以对该值应用边界和路径约束,用户不必在 ODE 中为 q_dot
推导他们自己的表达式。
我想按照此处所述在我的轨迹下游做一些分析
https://openmdao.github.io/dymos/faq/downstream_analysis.html
我想做的略有不同 - 我不想将阶段的结束或开始(或某个固定索引)连接到某个下游组件。我想要做的是找到特定状态在一个阶段内处于最大值的节点/时间,然后将那个时间/节点的各种状态变量连接到我的下游分析。出现最大值的节点/时间将根据问题的输入而改变,因此不能真正提前知道
具体来说,我正在尝试对运载火箭上升的最大动态压力 (Max-Q) 点进行一些分析。我可能只查看出现 max-Q 的阶段中的每个点,但也许没有必要。
我可以只对相位的动态压力值数组使用“max”函数,获取索引和该索引处的其他感兴趣状态。但是那你怎么区分呢?
你说得对,max 函数是不可微的。但是,我们提供了一个类似的功能:KS function
它不是 max 的完美替代品,但在这种情况下非常好。您可以传入整个时间序列,然后它将输出该数组中最大值的近似值。
有一个 rho
选项可以控制您的近似值与最大函数的接近程度。较大的值更像最大值,但数值条件也较差,因为最大值周围的导数开始变得非常大。默认值 50 可能没问题,但如果需要,您可以尝试使用该值。
我们处理这种情况的方法是当变量的导数达到最大值达到零时结束一个阶段,然后在第二个阶段从那里继续标称轨迹。例如,对于 Max-Q,您可以为动压 (q_dot
) 的导数创建一个方程,然后使用最终边界约束使该阶段在 q_dot
为零时结束。
第二个阶段从该点开始继续进行标称轨迹。
使用此技术,您可以了解 max-Q 的确切条件。
我们可以添加的一个功能是允许时间序列输出的近似导数,尽管我们需要仔细考虑。例如,我们可以将 q
的时间序列值乘以这个微分矩阵,以获得 q_dot
的合理近似值。然后我们可以对该值应用边界和路径约束,用户不必在 ODE 中为 q_dot
推导他们自己的表达式。