【问题标题】:Dymos - connecting to downstream analysis - variable indexDymos - 连接到下游分析 - 变量索引
【发布时间】:2022-01-04 22:10:21
【问题描述】:

我想在我的轨迹下游进行一些分析,如此处所述

https://openmdao.github.io/dymos/faq/downstream_analysis.html

我想要做的略有不同 - 我不想将阶段的结束或开始(或某个固定索引)连接到某个下游组件。我想要做的是找到特定状态在一个阶段内处于最大值的节点/时间,然后将该时间/节点的各种状态变量连接到我的下游分析。发生最大值的节点/时间将根据问题的输入而变化,因此无法真正提前知道

具体来说,我试图在最大动态压力 (Max-Q) 点为运载火箭的上升做一些分析。我可能只查看出现 max-Q 的阶段中的每一个点,但也许没有必要。

我可以在相位的动态压力值数组上使用“max”函数,获取索引和该索引处的其他感兴趣状态。但那你怎么区分呢?

【问题讨论】:

    标签: openmdao


    【解决方案1】:

    我们处理这种情况的方法是在达到最大值的变量的导数达到零时结束一个阶段,然后在第二阶段从那里继续名义轨迹。例如,使用 Max-Q,您可以为动态压力 (q_dot) 的导数创建一个方程,然后在 q_dot 为零时使用最终边界约束使该阶段结束。

    第二阶段从那个点开始是连续的,并继续进行标称轨迹。

    使用这种技术,您可以知道 max-Q 的确切条件。

    我们可以添加的一个功能是允许时间序列输出的近似导数,尽管我们需要仔细考虑。例如,我们可以将q 的时间序列值乘以这个微分矩阵,以获得q_dot 的合理接近的近似值。然后我们可以对这个值应用边界和路径约束,用户不必在 ODE 中为q_dot 推导出自己的表达式。

    【讨论】:

    • 如果您有办法计算 q_dot 并且您确定 Q 的时间历史是凸的,那么 Rob Falck 的答案比我的要好。 KS 函数将起作用,但 Rob 的解将更精确且数值更稳定。 KSfunction 是一个更好的解决方案,因为您没有凸时间历史并且需要允许存在多个峰值
    • 谢谢你,Rob,我想我也会试试这个——是的,Justin Q 在我的问题上会很突出。我认为 Q_dot = dQ/dv * dv/dt + dQ/rho * drho/dh* dh/dt 其中 v 是速度,rho 是空气密度,h 是高度,我已经计算了所有这些,所以这只是添加的问题一些管道。虽然我更喜欢将阶段数保持在最低限度,但添加另一个不会那么糟糕
    【解决方案2】:

    你说得对,max 函数是不可微的。但是,我们提供了一个类似的功能,即:KS function

    它不是最大的完美替代品,但在这种情况下它非常好。您可以传入整个时间序列,然后它将输出该数组中最大值的近似值。

    有一个rho 选项可控制您的近似值与最大函数的接近程度。较大的值更像是最大值,但也具有较差的数值条件,因为最大值周围的导数开始变得非常大。默认值 50 可能没问题,但如果需要,您可以尝试使用该值。

    【讨论】:

    • 谢谢贾斯汀!是的,KSComp 看起来确实可以获取最大值,尽管它没有给出索引(不是 argmax)。我可能只会对阶段中的所有点进行分析,并使用 KSComp 进行约束聚合,如示例中所示。多看几遍 KS函数貌似和softmax函数en.wikipedia.org/wiki/Softmax_function有点关系,真的是softargmax。我也许也可以用它做点什么
    猜你喜欢
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 2017-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多