改变控制系统的参数会导致系统僵硬?
Changing the parameter of the controlling system would cause the system stiff?
我得到的模型在以下控制系统参数下运行良好,
但是如果我改变其中一个参数,系统会很僵硬,根本没有机会解决它。
所以我的问题是:
- 为什么只改变一个参数会导致系统僵硬?
- 如果我再次遇到僵硬的问题,如何定位导致问题的确切参数?
DASSL 是一个隐式求解器,因此应该能够很好地处理刚性系统。似乎仍然有许多 >500 的步骤必须在 <2 秒内完成,因为这是您的输出间隔(导致消息)。在您的情况下,这可能与模型中发生的快速动态有关。
关于您的问题:
- 如果模型模拟到最后,检查控制变量,看是否有快速振荡(频率> 100Hz)发生。这可能在增加控制器的比例增益时发生,这使得整个系统 "less stable".
- 关于此的一般建议非常困难,但
linearSystems2
库可以提供帮助。创建 "Full Linear Analysis" 会给出状态列表以及它们与极点的关联方式。具有最高频率的极点通常负责刚度,并且通过查看哪些状态与感兴趣的极点相关,指示要研究哪些状态。从状态到参数的方式取决于建模者——至少我不知道这方面的一般建议。
对于 2. 应用于 Modelica.Blocks.Examples.PID_Controller
结果如下:
看到 spring 可能会导致系统中最快的状态。
答案是肯定的!只改变一个参数值可能会导致系统僵硬。
假设给定模型映射到显式 ODE 系统:
dx/dt = f(x,p,...)
通常,系统可以通过一些用雅可比行列式 df/dx 的特征值表示的刚度指数来表征为刚性的。例如,这些指标之一是刚度比:雅可比矩阵的最大特征值与最小特征值之比。如果这个比率很大,一些文献假设 > 10^5,那么系统的特征是在所选初始值和参数值周围是刚性的。
雅可比 df/dx 及其特征值是 p 和初始值的时间相关函数。因此,从理论上讲,根据给定的系统,一个参数可能会导致这种不希望的系统行为。
有办法访问雅可比行列式并与参数灵敏度分析一起执行特征值分析,例如通过动态参数敏感性的计算,可以识别出这些邪恶的参数。
我得到的模型在以下控制系统参数下运行良好,
但是如果我改变其中一个参数,系统会很僵硬,根本没有机会解决它。 所以我的问题是:
- 为什么只改变一个参数会导致系统僵硬?
- 如果我再次遇到僵硬的问题,如何定位导致问题的确切参数?
DASSL 是一个隐式求解器,因此应该能够很好地处理刚性系统。似乎仍然有许多 >500 的步骤必须在 <2 秒内完成,因为这是您的输出间隔(导致消息)。在您的情况下,这可能与模型中发生的快速动态有关。
关于您的问题:
- 如果模型模拟到最后,检查控制变量,看是否有快速振荡(频率> 100Hz)发生。这可能在增加控制器的比例增益时发生,这使得整个系统 "less stable".
- 关于此的一般建议非常困难,但
linearSystems2
库可以提供帮助。创建 "Full Linear Analysis" 会给出状态列表以及它们与极点的关联方式。具有最高频率的极点通常负责刚度,并且通过查看哪些状态与感兴趣的极点相关,指示要研究哪些状态。从状态到参数的方式取决于建模者——至少我不知道这方面的一般建议。
对于 2. 应用于 Modelica.Blocks.Examples.PID_Controller
结果如下:
答案是肯定的!只改变一个参数值可能会导致系统僵硬。
假设给定模型映射到显式 ODE 系统:
dx/dt = f(x,p,...)
通常,系统可以通过一些用雅可比行列式 df/dx 的特征值表示的刚度指数来表征为刚性的。例如,这些指标之一是刚度比:雅可比矩阵的最大特征值与最小特征值之比。如果这个比率很大,一些文献假设 > 10^5,那么系统的特征是在所选初始值和参数值周围是刚性的。
雅可比 df/dx 及其特征值是 p 和初始值的时间相关函数。因此,从理论上讲,根据给定的系统,一个参数可能会导致这种不希望的系统行为。
有办法访问雅可比行列式并与参数灵敏度分析一起执行特征值分析,例如通过动态参数敏感性的计算,可以识别出这些邪恶的参数。