【发布时间】:2020-05-01 10:01:35
【问题描述】:
我的模型在以下控制系统参数下运行良好,
但是如果我改变其中一个参数,系统就会僵硬,根本没有机会解决它。 所以我的问题是:
- 为什么只改变一个参数会导致系统僵硬?
- 如果我再次遇到僵硬问题,我如何才能找到导致问题的确切参数?
【问题讨论】:
我的模型在以下控制系统参数下运行良好,
但是如果我改变其中一个参数,系统就会僵硬,根本没有机会解决它。 所以我的问题是:
【问题讨论】:
DASSL 是一个隐式求解器,因此应该能够很好地处理僵硬的系统。仍然似乎有许多 >500 步骤必须在
关于您的问题:
linearSystems2 库可以提供帮助。创建“全线性分析”会给出状态列表以及它们与极点的关系。具有最高频率的极点通常负责刚度,并且通过查看哪些状态与感兴趣的极点相关,指示要研究哪些状态。从状态到参数的方式取决于建模者 - 至少我不知道这方面的一般建议。对于 2. 应用于Modelica.Blocks.Examples.PID_Controller,结果如下所示:
看到弹簧可能会导致系统中的最快状态。
【讨论】:
答案是肯定的!只改变一个参数值可能会导致系统僵硬。
假设给定模型映射到显式 ODE 系统:
dx/dt = f(x,p,...)
通常,系统可以通过一些以雅可比 df/dx 的特征值表示的刚度指数来表征为刚度。例如,这些指标之一是刚度比:雅可比的最大特征值与最小特征值之比。如果这个比值很大,一些文献假设 > 10^5,那么系统的特征是在所选初始值和参数值附近是刚性的。
雅可比 df/dx 及其特征值是 p 和初始值的时间相关函数。所以理论上,根据给定的系统,一个参数可能会导致这种不希望的系统行为。
能够访问雅可比行列并执行特征值分析以及参数敏感性分析,例如通过动态参数敏感度的计算,识别这些邪恶的参数是可能的。
【讨论】: