控制算法手记-稳定性,还是稳定性

写在前面

  • 首先应该明确,稳定性分析的对象是动力学系统。人们需要知道某一动态变化的系统在给定条件下的行为(如不同外界激励/干扰、不同初始状态、自身参数/条件变化时)是否能够保持在某一范围内。否则,可能会出现系统严重震荡、‘跑飞’或者‘失控’等一些列不稳定行为。如图1所示,这些动力学系统既可以是被控对象本身(无控制输入,受到假想外界扰动时,是否能够回到原来的平衡位置),可以是包含被控对象和控制算法的整个被控系统(控制输出的动态是否能够趋近预期轨迹),也可以是所设计的单个参数辨识/观测器模块(辨识/观测值是否能够趋近实际值)。
图1. 稳定性分析的对象(被控对象Plant、辨识/观测模块、整个被控系统)
  • 其次应该注意到,取决于具体应用场景,稳定性分析既可以围绕动力学系统的某个平衡点/吸引子展开(即状态轨迹或者微分方程的解的轨迹相对于某个平衡点/吸引子的空间位置),也可以围绕动力学系统中的变量/信号或者某类动态增益是否有界,是否会以某种速度(指数还是渐进方式)收敛于某个给定区域展开。稳定性分析得到的结果是和控制系统所能达到的性能是密切相关的,甚至可以用稳定性分析倒推控制算法的设计。如在控制算法手记—什么让控制算法复杂化所述:
‘’如果能够保证某一被控系统是全局指数稳定的(Globally exponentially stable),那么不论系统初始状态如何,系统控制误差(或者其他变量)能在相当短时间内减小为零,并能够长期保持在零;如果只能保证某一被控系统是局部渐近稳定(Locally asymptotically stable),那么在一个较窄的工作范围内,系统的控制误差随着时间增长慢慢减小到零;如果无法保证系统指数/渐近稳定性,只能保证输入输出有界(Bounded Input Bounded Output),那么只能预期,系统控制误差会在收敛在某一范围内;从这个意义上来说,从稳定性展开的分析,能够清楚定义控制系统所能达到的性能上限,并以此为基础能够合理得设计控制器。‘’
  • 最后,控制算法模块(如参数辨识、观测器等)的引入使得整个被控系统的动力学行为丰富起来(可能会体现出非线性系统的典型动力学行为),系统失稳风险大大增加。因此,在先进控制算法(无论是基于模型还是数据驱动)的实施过程中,不应忽视稳定性在控制算法设计和控制系统分析中的基础性意义,轻视以各种定理为基础的稳定性设计和证明方法,认为只是没用的数学公式和定理。同时,也不能照搬各种稳定性设计方法,应该在深入了解被控系统的基础上,通过合理的问题抽象和归类,有针对性地设计控制算法和分析被控系统。

稳定性定义及分析方法

对于初步学习先进控制算法的工程师来说,一个主要的障碍在于各种眼花缭乱的稳定性定义和分析方法(如传递函数/线性状态空间模型下的稳定性、自治/非自治非线性系统的稳定性),使得初学者很快淹没在相关的数学式子和定理中,无法理解这些概念的实际物理意义,更谈不上将这些概念有效地在实际中应用。应该注意到,各种稳定性的定义和分析方法是建立在‘动力学系统所体现出来的动力学行为’以及’描述这些动力学行为的动力学模型’的基础上。从这个意义上来说,先学习系统动力学建模和分析对于掌握各种稳定性概念是十分有益的。

实际上,各种稳定性定义和分析一般都基于所关心的动力学系统某种给定形式的动力学模型,该模型恰当地描述了待分析系统的动力学行为和所处状态(初始条件、有无外界干扰/噪声、有无控制输入、控制输入是状态变量还是系统输出的函数、系统参数是否随时间变化、有无未建模动态/不确定性等)。例如:

  • 经典控制理论中的传递函数模型,即描述了初始条件为零时,单输入/单输出、线性时不变系统的系统输出/输入(即动态增益)的动力学行为。此时,稳定性定义主要聚焦于该增益是否会发散或者无穷大;由此,相应的稳定性分析的角度则从传递函数特征多项式的解是否有正实部展开(即是否有不稳定极点,出现不稳定极点时,动态增益会出现指数增长项);相应的稳定性判据则从代数(Routh判据,根据多项式系数判断根的位置)、复平面(奈奎斯特判据)或者根轨迹(Root-locus)等角度展开;

  • 线性系统中的状态空间模型则描述了线性(定常)条件下,控制输入、系统状态变量、系统输出(可以表示为状态变量的线性函数)之间的动力学行为,着眼于状态变量(即系统中独立变化的动态变量)的动态行为。此时,稳定性定义则从状态轨迹(即状态变量的空间轨迹)相对于系统平衡点(即原点)的相对空间位置展开,该状态轨迹是否收敛于原点;由此,稳定性分析的角度则转变成系统矩阵是否具有正特征值(即是否有不稳定极点,出现不稳定极点是,状态转移矩阵/状态变量将会出现指数增长项);相应的稳定性判据则直接依据系统矩阵的特征值分布展开。

  • 鲁棒控制(Robust Control)中的传递函数模型/状态空间模型则着重描述非理想因素(如外界干扰、参数/模型不确定性、未建模动态)对系统动力学行为的影响。此时,鲁棒稳定性(Robust Stability)则主要定义了当这些非理想因素达到什么程度或者幅度(程度/幅度都是不严谨的说法,一般采用范数/Norm进行描述,这里使用程度/幅度为保证解释性),系统失去稳定性;由此,鲁棒稳定性分析的角度则主要从非理想因素的影响程度展开;相应的稳定性判断依据则依托于小增益定理(small-gain theorem);

  • 非线性系统(Nonlinear system)的动力学行为则丰富得多(如多个孤立的平衡点/吸引子,对初始条件敏感(蝴蝶效应)、极限环振荡、有限逃逸时间、混沌/分叉等),因此,稳定性定义和分析最为复杂多样,如图2所示(仅列出了常见的稳定性概念,这些稳定性概念可以看成线性定常系统中稳定性概念的泛化)。非线性动态系统模型采用普遍形式的微分方程描述,一般难以通过解析方式得到状态轨迹/系统输出(小部分非线性系统可以通过在工作点附近做线性近似,转化为线性定常系统,然后借用线性系统的稳定性分析方法进行稳定性分析),因此多通过构造函数(即李雅普诺夫Lyaponov函数)间接判断状态轨迹的情况(即不必求解微分方程,就可以解的情况/系统动力学行为)。由此,非线性系统稳定性分析的角度则主要从构造合适的Lyaponov函数,并分析Lyaponov函数的性质展开;相应的稳定性判断依据则主要分析构造的Lyaponov函数是否满足给定的数学性质。
图2. 非线性系统中的各种稳定性定义

值得注意的是,图2中的各种稳定性在一定条件下可以互相转化:如果控制输入u为状态变量的函数(状态反馈),则有控制输入u的稳定性可以转化为无控制输入的稳定性;如果干扰项g具有和标称系统同样的平衡点,则鲁棒稳定性分析可以借用无控制输入的稳定性分析;输入-状态稳定性的分析可以为输入-输出稳定性分析奠定基础。当将这些稳定性概念运用到控制算法设计中,模型中的状态变量或者系统输出可以是控制误差或者辨识/观测误差等。

因此,稳定性的定义和分析应该基于对被控系统动力学行为深刻认识和理解的基础上展开:首先根据分析目的和应用场景确定要分析的是什么对象(参考图1),这种对象又具有什么特征的动力学行为表现和模型描述形式,对应的是那种类型的稳定性(参考图2),然后再有针对性地利用相关数学方法/定理去进行具体分析和设计。

将稳定性分析运用到控制算法设计中去

稳定性分析主要验证所关心的动力学系统的动力学行为是否能够保持在一定范围内(如状态轨迹之于平衡点的位置、系统输出/输入增益有界等);而‘控制算法’本质是一种人为设计的‘动力学系统’。人们设计这种动力学系统,目的在于和‘被控对象’这一‘动力学系统’相互作用后,包含控制算法的‘整个被控系统’的‘动力学行为’符合目标性能要求(参见控制算法手记-先学习系统动力学建模和分析),这些目标性能首先要保证的是稳定性。从这个意义上来说,稳定性分析是控制算法设计的题中之义

更为重要的是,对于一些先进控制算法来说(如自适应控制算法、滑膜控制、基于观测器的控制系统等),被控系统的动力学行为更为复杂,整个控制系统的稳定性很大程度上取决于控制算法参数的选取和设计,控制算法的设计更是主要基于稳定性分析和Lyaponov函数的构造,出现了大量以Lyaponov为基础的控制算法设计方法。因此,将稳定性分析的概念灵活运用到控制算法的设计就显得格外重要了。

图3. 将稳定性分析运用到参数辨识算法和控制器设计中去

例如,对于间接自适应控制来说(参考图3),整个控制系统一般由两个动态系统组成,一个参数辨识动态(即辨识出来的参数是否逐步收敛到真实值),另外一个是由控制器和被控对象组成的被控系统(即控制误差是否逐步减小到零),两者都依赖于系统输出进行在线更新(一般反馈回路动态快于参数辨识动态)。由于参数辨识动态和控制输入,使得整个被控系统表现为非线性(参数辨识算法)、时变(参数实时辨识/更新)系统,加上模型不确定性,很有可能出现参数辨识结果发散以及由此导致的控制误差无穷大的情况。

因此,自适应控制一般通过设计Lyaponov函数以及稳定性分析使得控制误差和参数辨识误差均有界:Lyaponov函数中的控制误差项的导数一般是(控制误差、控制输入、状态变量以及辨识参数误差)的函数,通过设计辨识参数更新率,消除Lyaponov函数导数项中的参数辨识误差项,且使得Lyaponov函数半负定,只依赖于控制误差。

总结

从‘动力学系统所体现出来的动力学行为’以及’描述这些动力学行为的动力学模型’的角度理解稳定性,对于正确理解各种稳定性概念、分析和设计方法、以及在先进控制算法和控制系统设计中灵活运用这些概念是至关重要的。在学习和运用稳定性分析的相关方法时,首先还是要从系统动力学的角度分析自己的被控对象,然后再有针对性的深入到具体理论推导和稳定性分析中去,避免陷入‘学了一大推概念,但感觉对现实问题无所助益,最后觉得理论分析无用,解决不了实际问题’的尴尬现状。