没dota图了,母校镇楼了。

这一篇我们讲述一下multiple-input-multiple-output system(多输入-多输出系统,MIMO system)的状态空间标准型。MIMO system也叫multivariable system。绝大多数在SISO部分定义过的概念,我们都可以移植到MIMO上。多输入多输出系统自身往往存在内部耦合,输出之间容易互相影响,使得一些原本适用于SISO控制设计的方法无法直接应用至其上。因此实际控制设计和系统本身的分析不是件容易的事情。

MIMO的控制设计一方面的研究基于state-space equation,而另一方面,经典的频域设计法在上世纪70,80年代完成了一次comeback,即以Howard H. Rosenbrock为代表的控制理论学家发展处了适用于MIMO系统的multivariable frequency domain control design methods(多变量频域控制设计方法),也可以称为“现代频域设计法”。关注的重点都是研究如何使得MIMO系统解耦,让它等效为多个独立的单输入-单输出系统,从而设计对应的控制。这一篇我们暂时不展开,下一篇再讲解耦相关的问题。

针对MIMO系统的控制设计方法主要有:

  • 内模控制器 Internal model controller, IMC
  • 基于二次型函数的最优控制LQRLQG
  • [公式] control, [公式] loop shaping
  • 模型预测控制 Model Predictive Control(MPC)

等等。它们有些是基于状态空间法,有些是基于传递函数矩阵,或者两者都可以使用。这几块以后慢慢讲吧。这每一个都够一般人学习很久了。可以看到,需要学习的东西还有很多,而且这里还远没有说完。作为主流的几种控制设计方法,我们有所了解就行,可以不用样样精通,但是要做到认识其控制设计,了解大概设计思路。

武侠小说里是不是经常打着打着被人认出来:你用的什么功夫,是哪个门派的?要是见识浅薄,出去混江湖,被什么招数什么人杀的都不清楚。简单来说就是,碰到了不要连名字都叫不出 ,见到了大佬别以为是路人甲,发现了武林秘籍别当作市井杂文。

本篇目录

  1. MIMO系统的标准型概述 Introduction
  2. 能控性指数 Controllability Index
  3. MIMO 能控标准型 Controllable canonical form
  4. 解读 Interpretation

1. MIMO系统的标准型概述 Introduction

了解了SISO系统的一些知识后,自然地,我们希望把这些概念往MIMO上面去扩展。MIMO是块难啃的骨头,我们熟悉的传递函数(transfer function)摇身一变,作为传递函数阵(transfer function matrix)又回来了。我们先关注状态空间中MIMO系统的标准型,以后再说频域方法的MIMO。SISO标准型我们在第1篇文章和第10篇中已经大致提过了,需要回顾地请回去再看看(6)。

注意到不同书中的友矩阵形式略有差别,我先声明我会采用1在主对角线之上的形式。

考虑一个能控的MIMO系统:

[公式]

其中 [公式] 。线性MIMO系统和SISO系统的差别主要输入和输出数量上的差异。假如我们说系统有两个独立的输入 [公式] ,那么这意味着输入矩阵 [公式] 是一个拥有2个列的矩阵,并且两列线性无关,即列秩为2。如果它们线性相关,那么 [公式] 都作用于一个通道上,实际上可以认为系统只有一个输入。同理,输出矩阵 [公式] 的行秩也应该大于等于2,否则和单输出也没有什么差别。这里我们认为 [公式] 的秩都是满的。理论上独立输入与独立输出的数量一般是不相等的。

转化为标准型的意义在于,我们可以利用标准型方便的进行控制设计以及理论分析,起码对于低阶系统我们有这个自信。SISO系统的能控标准型,我们在第10篇文章中已经讲过详细的推导过程(根据能控性矩阵 [公式] 可以得出)。MIMO系统的能控标准型同样是借助能控性矩阵:

[公式]

来推导。由于系统能控,我们就知道(2)的行秩是 [公式] 实际上(2)的秩为 [公式] 是(1)能控的充分必要条件。现在为了转化成标准型,我们可以像研究SISO系统中那样,选取(2)中线性无关的 [公式] 列来构成非奇异矩阵 [公式] ,使得 [公式] ,然后把(1)转化为能控标准型——虽然我们还不知道它长什么样子,但是我们就认为选线性无关的 [公式] 列作为基就能构成一种所谓的“标准型”。

那问题就来了,在SISO的case中,能控性矩阵只有 [公式] 列,变换 [公式] 能选择的基的范围已经确定了。那么采用一种固定的算法来排列或者变换这些基,结果是唯一的,因此SISO系统一旦指定了某种能控标准型的非奇异矩阵构造方法,这个变换矩阵的形式就是唯一确定的,从而能控标准型也就被确定了。我们知道MATLAB和部分书上定义的能控型矩阵形式是不一样的,那是因为它们的变换矩阵 [公式] 的构造方法不一样,但是参与构造 [公式] 的基都是从能控性矩阵的 [公式] 列向量中得来的,没有其他选择。在我第10篇文章中的第二节,我已经介绍了能得到常见能控标准型的变换矩阵 [公式] 的构造方法。

但是MIMO系统的 [公式] 不再像SISO那样只有 [公式] 列了,而是 [公式] 。我们从这 [公式] 列中选择 [公式] 列线性无关的向量来构造标准型,这时候选择就不唯一了,即便采用同样的方法来构造标准型,得到非奇异变换矩阵 [公式] 也是不一样的。

那么我们为了求某种能控标准型,就要确定二要素: 一组 [公式] 元基,一种构造 [公式] 的方法。

2. 能控性指数 Controllability Index

我们先来确定找 [公式] 个线性无关列的方法。在1967年IEEE TAC上,David G. Luenberger(对,就是你知道的那个Luenberger Observer的冠名者)发表了一篇short paper题为Canonical Forms for Linear Multivariable Systems[1],总结阐述了两种特殊的选择线性无关列的方法,用它文中的称呼,我就叫它们为plan 1和plan 2吧。同年,他和另外一位大佬Brian D. O. Anderson一起发表了一篇采用plan 1获得MIMO标准型,以及状态反馈设计的文章[2]。实际上选择线性无关列的方法有很多,这两种只是相对特殊一些。

plan 1的选择方法:既然要从(2)中选 [公式] 个线性无关列,那我们就从 [公式] 的随意一列开始,记为 [公式] ,然后开始依次左乘 [公式] ,从下图中的第一行从左到右开始检查。首先 [公式] 自己肯定是线性无关的,然后看 [公式] 是否线性无关。如果是,那就有 [公式] 线性无关,否就可以终止了,再往后检查 [公式] 也没用。这样一直检查,直到找到一个最小的整数 [公式] ,使得 [公式] 是线性无关的。这时候的 [公式] 满足 [公式] 。第一排选择完毕后,我们再随意选择一个新列,记为 [公式] ,对第二排 [公式] 继续同样的步骤,得到 [公式] 。同时要保证后面一排新选择的向量始终要与前一排中选择的向量线性无关。

Figure from [2] Equation (9),本文用m代替了r

以此类推,直到最后我们得到 [公式] 个线性无关列。这种选择方式趋向于对每一个选择的列都构造一个尽可能的“长链”。正是因为如此,选择的结果会受到顺序的影响。我们发现可能 [公式] 中有些列轮不到检查,选择就结束了。所以如果不巧有些列没有被选中,没有参与到 [公式] 的构造,转化后的矩阵形式就并不是固定的。最后得到的序列为(作为结果时这里不分次序):

[公式]

其中 [公式] 是未知的,这取决于实际情况。

plan 2的选择方法:我们从 [公式] 这样的顺序去不断扩充线性无关列表。由于我们的 [公式]  [公式] 列是线性无关的, [公式] 毫无疑问一定在选择之中。然后再不断尝试扩充后面的向量,直到满 [公式] 个为止。这样我们就能保证每一个向量都被用到了,而且每一个列参与的向量序列在长度上会相对均衡。在最后,我们同样会得到一系列最小整数 [公式],使得 [公式] 线性无关。

显然无论是plan 1还是plan 2,我们都能得到一组 [公式] 元基,它们线性无关。且其中每一个列都拥有类似的结构 [公式] 。我们发现对于plan 2 有:

[公式]

而plan 1最终停止的那个列的选择次序 [公式] 根据选择顺序,是不定的,但也仍然满足(3)。不过plan 2的这些最小整数 [公式] 很特殊——无论怎么选择,开始所有的列都会被选中,最后得到的结果 [公式] 是不变量。我们把所有plan 2选中的列都集中起来,按照下面的顺序排列好,得到一个矩阵:

[公式]

有了plan 2这种选择线性无关列的方法,我们就可以定义能控性指数(controllability index)的概念:

定义[1]:MIMO系统(1)的能控性指数 [公式] 

而集合 [公式] ,我们给它取一个名字就叫能控性指数集好了(不重要,你知道是什么就行了)。换句话说,能控性指数 [公式] 是使得矩阵:

[公式]

拥有秩 [公式] 的最小整数 [公式] 在到这里的时候,我其实对[1]中这个定义产生了疑惑,因为还有其他文献中其实是把 [公式] 叫做能控性指数,controllability indices。而且这么叫也是有好处的,不然每次说这些数字都没有个名字就很尴尬。这点读者了解就行。

3. MIMO 能控标准型 Controllable canonical form

推出标准型的第二步,构造非奇异矩阵 [公式] 的方法。

[1]中介绍了两种构造方法,作者认为第二种方法得出的标准型更为实用。以下任何一种构造方法,若使用不同的plan来选择列,都会造成不同的线性变换结果。根据不同的选法,如选择plan 2或者plan 1,整理选出的结果,得到如同(5)一样的 [公式] 矩阵:

[公式]

这里的虽然写了包含所有 [公式] 的列,但是也只是出于简便。如果采用plan 1,那么可能用不到所有 [公式] 的列。但不管怎么样,我们都按照(6)的形式去排,我们记这样形式的矩阵为[公式] 

第一种方法是让 [公式] 。然后新的系统就是:

[公式] [公式] 注意! 公式(5)的矩阵 [公式] 是我们特意按照一定顺序排列出来的。即便按照plan 1或者plan 2得到了线性无关列,我们依旧有很多种排列这些线性无关列的办法,矩阵P是其中一种排列。如果换一种排列,将得到另一个 [公式] ,那样对应的 [公式] 也就不同了,得到的标准型也就会不同。那既然叫标准型,我们就定一个规则,选择的所有列都要按照(5)的顺序进行排列,这样我们就得到了固定形式的 [公式] ,以及对应的标准型。详情见[1],Luenberger的原文中是采用 [公式] ,变换方向 [公式] 是我相反的,和我这里的 [公式] 是等价的,不多展开。在[3,p40]中,这种形式的标准型被称之为Luenberger第一标准型。

我们来聊聊第二种方法。第二种方法先求出 [公式] ,它一共有 [公式] 行向量,按照[公式]  [公式] 的行进行划分组,一共 [公式] 组,写成:

[公式]

 [公式] 行向量中只有 [公式] 行是在标准型中有参与的,就是每个组的最后一行,我们记为:

[公式]

利用(8)构造变换矩阵的逆 [公式] 为:

[公式]

然后采用变换 [公式] ,根据(6)就可以得到下列标准型([1]原文截图,太累码字):

标准型由友矩阵对角矩阵块构成,其余x非可能的非零元素
输入矩阵也是分块的,从上到下分为m块。第i列为[0,0,0,...,1]

任何一个符合 [公式] 形式的矩阵都能够计算出 [公式] ,得到标准型如 [公式] 特别的,如果我们选择plan 2的方法选取 [公式] 个线性无关向量,排列成 [公式] 的形式,我们就能得到一个特殊的标准型: [公式] 保持不变,而 [公式] 成为:

根据plan 2的选法,矩阵 [公式] 的形式和(8)(9)(10)的 [公式] 构造法,得出的MIMO controllable canonical form,[3]中称为Luenberger第二标准型,或者Brunovsky标准型。诚然我觉得它其实离Brunovsky canonical form还差那么点距离,既然[3]都这么叫了,我就暂且这么叫吧(毕竟主编郭雷,副编程代展)。

至于MIMO能控标准型的实例我在下一篇中会给出,到时候请移步查看。

4. 解读 Interpretation

观察 [公式]  [公式] ,实际上每一个分块都构成了一个SISO能控子系统(subsystem),维度是 [公式] 。所有子系统的维度加起来,如果系统是完全能控的话,就是原系统的维度 [公式] ,因此(3)的成立是很自然的。其实如果按照能控性指数的定义,每个子系统可以定义自己的能控性指数,比如左上角的子系统就拥有能控性指数 [公式] ,依次类推。只是每个子系统的能控性指数都不会大于整个系统的能控性指数。

可以看到,此时各子系统之间还是存在耦合(coupling)现象的。观察 [公式] ,只有第 [公式] 个子系统的输入是只有 [公式] ,从下到上每个subsystem的控制变成 [公式]  [公式] 所以第一个 [公式] 子系统的控制输入实际上是所有输入 [公式] 的耦合。再观察 [公式] 每一个子系统的最后一行,都会受到来自其他子系统的状态变量的影响。实质上这些不属于子系统自己的状态变量都作为“内部输入”互相影响,下一篇我们讲解耦相关的话题。

为什么没有 [公式] ? 那是因为这是controllable canonical form。在[3,p42,p43]中还有能观标准型的给出,有需要可以查阅。严格来讲,本文也只是给出了multiple-input system的标准型,即能控标准型。那么multiple-output system就可以写出能观标准型了。无论是换在那个年代,还是今天,科研工作者一定会毫不犹豫地再“水”几篇论文讨论一下。我就不浪费时间水了,各位举一反三,多读文献吧。

[1]的一句话讲到: It is hoped that the canonical forms given here will prove useful in further research on multivariable systems. 作为实际应用,本身标准型没有想象中那么大价值,但是作为理论研究,这是认识线性系统结构相当重要的成果。不要忽略这些基础的知识,它们往往是日后其他研究和学习的一个起点。

未来安排

下一次讲MIMO系统的解耦与状态反馈相关的事宜。然后我会细讲一下LQR,回归Franklin的书把剩下model following control、The extended estimator,loop transfer recovery等控制设计方法和技巧写完。这本书中的例子很丰富,我会把几个不错的控制设计实例再写一写,并且加入部分MATLAB的教程。

在这些完成之后,我会先进入multivariable control和robust control这一块,写这块就是要把很多人不熟悉MIMO这块理论的问题修复一下。非线性这块我虽然还算比较熟,但目前看,可能下半年能启动开始写算不错了。

就现在安排需要阅读的材料,书籍和paper就已经密密麻麻了。希望你们多阅读,多评论,多点赞,多催更吧。(不催更,我可能又忙碌在另外一个世界了。)

参考资料 Reference

[1] Luenberger, D. (1967).Canonical forms for linear multivariable systems. IEEE Transactions on Automatic Control, 12(3), 290–293.doi:10.1109/tac.1967.1098584

[2] Anderson, B. D. O., & Luenberger, D. G. (1967).Design of multivariable feedback systems. Proceedings of the Institution of Electrical Engineers, 114(3), 395.doi:10.1049/piee.1967.0086

[3] 控制理论导论—从基本概念到研究前沿, 郭雷;程代展;冯德兴, 科学出版社 2005