Thursday, November 17, 2011

自动控制的故事

  http://blog.renren.com/GetEntry.do?id=715900600&owner=319813913

 搞 控制有三拨人:电工出身的,化工出身的,和应用数学出身的。在卡尔曼之前,电工出身的占主导地位,数学家们好在象牙塔里打转转,化工出身则还对控制理论懵 里懵懂,还在“实干”呢。卡尔曼之后,一大批数学出身的人,利用对数学工具的熟悉,转攻控制理论。一时间,控制理论的数学化似乎成了“天下大势,顺我者 昌,逆我者亡”了。在状态空间的框架下,多变量没有太多的问题好研究,于是最优化成为控制理论的新时尚。

对 于一根给定的曲线,求一阶导数为零的点,就是这个曲线的极点;在对这一极点球二阶导数,大于零就是最小点,小于零就是最大点。这时牛顿老爷子就整明白的东 东,现在高中或大一人人都学过的东西。但是动态系统是一个微分方程,对微分方程求一阶导数为零,就导致变分法和所谓欧拉方程。但这个东西用起来不方便。实 际的最优控制不大直接使用变分。

俄 罗斯是一个奇怪的地方。老毛子们要么蔫蔫的,要么疯狂的。俄罗斯的悲剧电影看得你也郁闷得想去自杀。但是老毛子要是搭错筋整出一个喜剧呢?那你要么跟着疯 狂,要么被逼疯狂。就是这么一个地方,除了无数托尔斯泰、柴可夫斯基、普希金、屠格涅夫等文艺巨璧外,俄罗斯也盛产数学家,其中两个是庞特里亚京和河里学 控制的人老惦记着的李亚普诺夫。

庞 特里亚京的极大值原理听起来吓人,其实说白了很简单。看见那山吗?山顶就是最高点(切,这还用你说吗?);看见那山坡吗?要是在山腰划一道线,从山下往上 爬,尽管山坡还在继续往上延伸,但是到线为止,不得逾越,那山腰上那道三八线就是最高点(切,这还用说?)。这就是庞特里亚京的极大值原理。当然啦,庞特 里亚京是用精巧、深奥的数学语言表述的,要不然他在数学界里也别混了。不过呢,意思就是这么一个意思。

庞 特里亚京极大值原理的一个典型应用就是所谓最速控制问题,或者叫时间最优控制 (time optimal control)问题,简单地说,就是给定最大马力和最大刹车功率,怎么开汽车能够最快地从A点开到B点(什么转弯、上下坡、红绿灯,这种琐碎的事情也要 拿来烦人?一点品味都没有!)。你可以用优美但繁琐的数学求证,或者用膝盖想想,最快的方法,就是一上来就加足马力,全速前进;然后在不到终点的某一地 点,全力刹车,使慢下来的汽车在到达终点时正好停下来。这时最快的方法,不可能比这更快了。稍微发挥一点想象力,可以想象“梆”的一下,控制量的油门板一 脚到底,再是“梆”的一下,刹车板一脚到底,控制任务就完成了。所以最速控制也叫“梆-梆”控制(Bang-Bang control)。

最 速控制在理论上是一个很有趣的问题,解法也是简洁、优美,但在实际中直接使用的例子实在是凤毛麟角,一般都是开始时用“梆-梆”,或者匀速上升到最大控 制,以缓和控制的冲击力;到终点附近时,改用PID作闭环微调,以克服“梆-梆”的系统模型误差十分敏感的缺点。电梯控制就是这样一个例子。从一楼到四 楼,电动机很快匀速上升到最高转速,一过三楼,电动机就匀速下降到较低的转速,然后根据电梯实际位置和楼面之差,有控制地减速,直至停下来。要是控制参数 调得好的话,一下子就稳稳当当地停下来;要是调的不够好,会在停下来之前上下晃荡几下。

最 速控制问题是较早的最优控制问题,它提供了一个很有趣的思路,但这颗树上开花结果不多。相比之下,最优控制的另外一支枝繁叶茂,有生气得多了。这一支就是 线型二次型最优控制(linear quadratic control)。数学是有趣的,但数学也是盲目的。在数学上,最优化问题就是一个在曲面上寻找凸点的问题,只要你能把一个物理问题表述成一个曲面,数学 是不理会姓无姓资的。既然如此,控制偏差的平方在时间上的累积就是很自然的选择,二次型就是平方在线性代数里的说法。线型系统的偏差平方有很好的性质,这 山峰是一个馒头山,没有悬崖峭壁,没有沟坎,容易爬;一山只有一峰,不用担心找错地方。不过这山峰不能只包含控制偏差,还要包含控制量,原因有三个:

1、如果不包括控制量,那最优控制的解是没有意义的,因为无穷大的控制量可以使累计平方偏差为最小,但无穷大的控制量是不现实的。
2、控制量的大小通常和能量、物料的消耗连在一起,实际控制问题一般是“在最小能量、物料消耗小达到最高的控制精度”,所以在“山峰”中同时包含控制偏差和控制量是很自然的
3、系统模型总是有误差的,误差“总是”在高频、大幅度控制作用下最突出,所以为了减低系统对模型误差的敏感性,也有必要限制控制量的大小。

所 以线性二次型最优控制的“目标函数”(也就是定义山峰形状的数学表述)是一个控制偏差和控制量各自平方的加权和的积分。积分当然就是“在时间上的累积” 了,加权和其实就是在控制偏差的平方项和控制量的平方相前分别乘以比例因子,然后再相加。两个比例因子的相对大小决定了谁更重要。运用矩阵微分和线型代数 工具,不难导出线性二次型控制律—一个基本的状态反馈控制律!只是反馈增益矩阵是按最优化的要求计算出来的。

线型二次型最优控制开创了一整个新的控制领域,很快从状态空间走出来,进入其他领域,子孙繁衍,人丁兴旺。这一支是当今最优控制在应用中的主体。

线 性二次型控制具有各种各样的优点,但是,线性二次型没有回答一个最基本的控制问题:这个闭环系统是不是稳定。这里,我们的饱受牵记的李亚普诺夫同志出场 了。李亚普诺夫也是一个脑子搭错筋的人,一百多年前,玩微分方程玩出了瘾,整出两个稳定性(或者叫收敛性)的定理,前一个没有什么太了不起的,把非线性系 统线性化,就是把一根曲线用很多一小段、一小段的直线近似,然后按直线来分析。后一个就有点邪门了。老李琢磨出一个定理,说是对于任意一个系统,如果能找 到一个自我耗散的能量函数(数学说法是正定函数),也就是其数值永远为正,但随时间渐进地趋向零,或者说这个能量函数对时间的导数永远为负,那这个系统就 是稳定的。据说定理的证明是一个天才的杰作,我等凡人只有频频点头的份。不过想想也对,系统的能量耗散没了,系统不也就安分下来了吗?当然就稳定喽。

李 亚普诺夫比卡尔曼还要数学家,他的定理只给出“如果存在……就……”,怎么找这个自我耗散的能量函数他没说,这个函数一般是什么样他也没说。这难不倒搞自 动控制的广大革命群众。不是要正定函数吗?不是没有限制什么形式的正定函数吗?那就用控制偏差的平方吧。说干就干,但是干着干着,好玩的事情出现了,对偏 差平方(或二次型)的求导,导出了和线性二次型最优控制推导过程中同样出现的一个所谓黎卡蒂方程(Riccati equation),感情这是殊途同归呀。换句话说,线性二次型控制总是稳定的。这是线性二次型控制的一个重要贡献:把最优性和稳定性连到一起。

再扯一句李亚普诺夫,他的第二个定理非常威猛,但是有点像一个奇形怪状的大锤,到现在人们还在找合适的钉子,好用这把大锤砸几下。线性二次型控制是已知的仅有的几个钉子之一,另一个是变结构控制,也可以用李亚普诺夫方法,这是题外话了。

都 说瓦特的蒸汽机后,计算机是影响人类进程最大的发明,计算机当然也对自动控制带来深刻的影响。如前所述,控制理论基本上都是围绕微分方程转的,所以在“本 质”上是连续的。但是数字计算机是离散的,也就是说,数字控制器的眼睛不是一直盯着被控对象看的,而是一眨一眨的。数字控制器的“手脚”也不是一刻不停地 连续动作的,而是一顿一顿的。这是数字计算机的天性使然。于是,传统的控制理论全部“翻译”到离散时间领域,微分方程变成了差分方程,所有方法、结论都有 了连续、离散两套,不尽相同,但是大同小异。

要 是数字控制就是简单的连续系统离散化,计算机控制也就没有什么了不起。离散控制带来了一些连续控制所不可能具备的新特点,这就是:差分方程用清晰界定的时 刻之间的关系来描述动态过程。回到洗热水澡的例子,如果热水龙头不在跟前,而是在村外一里地的小锅炉房里,你只能用电话遥控,那水温可以表示为

下一分钟水温=0.7*现在水温+0.2*上一分钟水温+0.1*再上一分钟水温+0.4*(5分钟前锅炉房龙头开度-6分钟前锅炉房龙头开度)

显 然,下一分钟的水温受现在水温的影响比上一分钟和再上一分钟的水温的影响要大,但锅炉房龙头开度要是不变,现在、上一分钟、再上一分钟水温都一样的话,下 一分钟的水温也应该和现在的水温一样。为什么用5分钟前锅炉房的龙头开度呢?那是因为热水从村外流到洗澡房要有一定的时间,这个时间就是滞后。要是把时间 向前推,那现在的龙头开度就会影响5分钟后的水温。这说明了离散模型的一个重要特质:预估能力。所有预报模型都是建立在离散模型的这个预估能力上,不管是 天气预报,还是经济预测,还是自动控制里对有滞后的过程的控制。

数 字控制的另一特质是可以实施一些不可能在连续时间实现的控制规律。工业上常有控制量的变化需要和当前的实际值有关的情况。比如对于不同的产品,反应器的转 化率总是大体在88-92%之间,没有太大的变化,但是催化剂可以在 0.5到35ppm之间变化,采用常规的PID的话,增益就非常难设,对一个情况合适了,对另一个情况就不合适。所以催化剂需要按百分比变化率调整,而不 是简单地按偏差比例调整。比如说,转化率偏离1%时,催化剂要是在0.5ppm,应该调整0.05ppm;但是在15ppm的时候,就应该是 1.5ppm。这样,控制律就可以表示为:
当前的控制量=上一步的控制量*(设定值/当前的测量值)

也就是说,在被控变量高于设定值10%的情况下,控制量也增加10%;测量值和设定值一样时,控制量不再变化。实际使用时,谁除以谁要根据测量值上升你是要控制量上升还是下降来决定,控制律也要稍微修改一下,成为

当前的控制量=上一步的控制量*(当前的测量值/设定值)^k

k 次方是用来调整控制律对“偏差”(这是已经不是差值,而是比值了,严格地说,应该叫“偏比”?)的灵敏度,相当于比例增益。这个控制律实际上相当于对数空 间的纯积分控制,要是有兴趣,对很多常见的非线性过程有相当不错的效果,实现也简单。然而,这是一个本质离散的控制律,在连续时间里无法实现。

离散控制可以“看一步、走一步”的特性,是连续控制很难模仿的,也是在实际中极其有用的。

形 形色色的控制理论再牛,没有被控过程的数学模型,照样抓瞎。前面的洗澡水温就是一个数学模型。这个模型是杜撰的,当然可以很容易地给它所有模型参数。但在 实际中,模型参数不会从天上掉下来。多少科学家毕生致力于建立某一特定的物理、生物、化学或别的学科的数学模型,基本机制已经清楚的模型都不容易建立,更 不用说很多过程的基本机制或深层机制并不清楚。所以靠机理推导被控过程的数学模型是可能的,但对日常的控制问题来说,并不实际。这就是控制理论的另一个分 支—辨识—一显身手的地方了。

如 果给定一个模型,也就是一个数学公式,给它一组输入数据,模型就可以计算出对应的输出数据。比如说,给定模型y=2*x+1,再给出x=1,2,3,4, 那y就等于3,5,7,9,就这么很简单。辨识的问题反过来,先给定一个模型结构,在这里就是y=a*x +b,已知输入-输出数据是x=1,2时y=3,5,要求计算出a和b。显然,这是一个二元一次方程,谁都会解。在实际中,输入-输出的观察数据含有测量 噪声,这对参数估计的精度不利;但通常积累观察的数据量远远超过未知参数的个数,不说数学,感觉上这就应该对克服测量噪声有利,关键是怎么利用这“多余” 的数据。一个办法是把数据组两两配对,借众多的二元一次方程,然后对解出来的a和b作平均。还有一个办法就是有名的最小二乘法了,说穿了,就是以a和b为 最优化的“控制量”,使模型输出和实际观测值之间的累积平方误差为最小。

实 际工业过程大多有多年的运行经验,大量的数据不成问题。对于大多数常见过程,模型的基本结构和定性性质也可以猜一个八九不离十,有了如此有力的数学“大 锤”,那么应该可以砸开一切建模的硬核桃啦。且慢,世上没有真正的“神奇子弹”,一个问题解决了,另一个同等难度的问题又会出现。对于辨识来说,问题有好 几个。

第 一个问题是工业数据的闭环性。大多数重要参数都有闭环回路控制。如果没有闭环回路控制,那要么就是过程特性实在太复杂,简单回路控制不了;要么就是这个参 数其实不重要,飘移一点没人在乎。然而,一旦闭环,系统地输入和输出就是相关的了。这一相关不要紧,输入-输出数据之间的因果性就全乱了:输出通过被控过 程本身和输入相关(这是好的,辨识就是要测算出这个相关关系,输出要是和输入不相关,也没有控制或辨识什么事了),输入通过反馈和输出相关;输入-输出成 为一个闭合系统,你可以用任意多条定理或方法证明同样的事:由于因果不分,闭环辨识是不可能的,除非另外加入“新鲜”的激励,比如使劲变设定值,或者在闭 环回路里额外施加独立于输入、输出的激励信号,比如“莫名其妙” 地把阀门动几下。弄到最后,工业数据到底能用多少,就不是一个简单的回答。有的过程常年稳定操作,像乙烯装置,只有小范围的微调。这倒不是人家懒或者不求 上进,而是这些装置早已高度优化,常年操作的极其接近极限的位置,但原料和产品单一,所以工艺状况不怎么大变。这种系统的闭环数据用起来很吃力,常常必须 做一定的开环试验。有的过程经常在不同的状态之间转换(transition),或者由于不同的原料,如“吃”得很杂的炼油厂,或者由于不同的产品,如聚 乙烯装置,这实际上就是“使劲变设定值”,是新鲜的激励。这种系统的闭环数据比较好用,但又别的问题,下面要谈到。

第 二个问题是动态和稳态。动态模型的作用有两个:一是描述需要多少时间输出才能达到某一数值;二是输出最终能够达到什么数值。用股票市场举一个例子,你需要 知道两件事:一是这支股票最后会升到多少,二是需要多少时间才能升到那里,只知道其中一个对你并没有太大的用处。当然为了简化,这里假定这支股票一路飙 升,不来忽升忽降火跌买涨卖的名堂。这就要求输入-输出数据必须包含充分的动态和稳态信息,过于偏颇其中一方面对另一方面会不利。所以,长期稳定运行的过 程中可能包含足够的稳态数据,但动态不足;常年不怎么稳定的过程可能包含足够的动态数据,但稳态不足。用PID控制打比方,精确的稳态数据有助于计算正确 的比例控制增益,精确的动态数据有助于计算正确的积分和微分增益,显然,把比例增益整对了更为重要。为了获得精确的稳态,在辨识中常常需要等过程开环稳定 下来才进行下一步,但是问题是,司机过程有时时间常数很长,几个精馏塔一串联,时间常数几个小时是客气的,一、两天都是可能的。这样一来,一个不太大的模 型,十来个变量,开环试验一做就是一、两个星期。要是一个装置能够两个星期开环,那也不需要什么控制了。

第 三个问题是激励的信噪比。都说人类活动是二氧化碳和温室效应的主要原因,但要是你去生一堆篝火,再去高空大气层去测一测二氧化碳和温室效应,肯定什么也测 不出来,本来多少,现在还是多少。为什么呢?不是因为这堆篝火没有效果,而是环境中的自然的变化远远超过了篝火的作用,换句话说,就是噪声远远超过了信 号。工业测试也是一样,信号一定要有一定的强度,否则是白耽误工夫。信号强度应该使过程达到严重失稳的边缘,这样才好获得在大范围内都精确的模型,以便控 制器不光在“风平浪静”的情况下可以正常工作,在“惊涛骇浪”的情况下也能使系统恢复稳定。然而,工厂以生产为主,在一切都“斤斤计较”的今天,如此大范 围的测试所带来的产品损失甚至对设备的可能的危害,都是工厂极不愿意见到的。理论家们设计了一个伪随机信号,用一连串宽窄不等的方波信号,作为激励过程的 输入,在理论上可以是过程参数的平均值不致偏离设定值太多,但 ISO9000不仅要求产品质量的平均值要保证,产品质量的一致性也要保证。再说,伪随机信号的脉宽不好确定,太窄了,稳态数据不够;太宽了,和常规的阶 跃信号也没有什么两样。所以伪随机信号在实际上用得很少。

第 四个问题是输入的相关性。实际工业过程到了要用辨识来确定模型的时候,都是单回路对付不了了,所以都是多变量过程。在理论上,多个输入变量可以同时变化, 只要输入变量的变化是相互独立的,数学上容许多个输入变量同时变化,而辨识可以正确地辨别模型。然而,在使用实际过程的历史数据时,常常遇到多个输入变量 并不相互独立的问题。比如说,在制作巧克力的过程中,香草巧克力比较“苦”,或者说不太甜,而牛奶巧克力比较甜。问题是做牛奶巧克力时,不光加糖,还要加 牛奶(废话,不加牛奶那还是牛奶巧克力吗?)由于两者总是同时出现,在甜度模型里,就难以辨别甜度是由于加糖的关系,还是由于加牛奶的关系。有的时候可以 根据对具体过程的认识,人工地限制辨识的过程,来消除这种影响,有的时候,就不太容易了,只好不用历史数据,专门做试验,用各自独立的输入,便是模型。

第 五个问题是模型结构。模型结构包括两个方面,一是模型的阶数,二是剔除在物理上不可能的模型。辨识的模型归根结蒂还是差分方程,这就有一个如何预设阶数的 问题。数学上有很多验前和验后的检验方法,在工业上,人们偷一个懒,改用费参数模型,也就是用一条响应曲线而不是一个方程来表述一个模型,这样就可以绕过 阶数的问题。但是剔出不现实的模型还是一个手工活,需要对每一个模型仔细研究,以确定模型所描述的动态关系是否合理。数学方法还是不够可靠。

在 搞模型的人中间,常常会听到黑箱、白箱和灰箱的说法。黑箱模型就是不理会实际过程的物理、化学等性质,纯粹从数学出发,假设一个模型结构,然后用种种数学 方法找出一个最好的模型。白箱反其道而行之,从物理、化学等性质出发,建立机理模型。黑箱模型的好处是“放之四海而皆准”,不需要对具体过程有深入的了 解。黑箱模型是一种削足适履的作法,但是如果履本身就做得比较好,具有相当的灵活性和适应性,就并不需要削足。由于黑箱模型可以自由假设模型结构,黑箱模 型的处理和使用都比较方便。黑箱模型是经验主义的,数据里没有包含的情况,黑箱模型无法预测。白箱模型则是“量身度造”的,反映了过程的物理、化学等性 质,对实际过程的数据没有太大的依赖,对数据中不包含的情况也能可靠地预测。但是白箱模型的结构有具体问题决定,得出的模型不一定容易使用。在实际中,人 们经常在假设一个模型结构的时候考虑进大大简化的过程机理,所以模型结构不是凭空拍脑袋出来,而是粗略地抓住了过程的基本特质,然后再用黑箱方法的“数据 绞肉机”,将简化模型没有能够捕捉的细微末节一网打尽。这种模型结合了黑箱和白箱的特点,所以称为灰箱。实际建模中,纯粹黑箱或白箱的成功例子很少,灰箱 的成功机会就要多得多。
不 管什么箱,最后还是有一个如何辨识实际过程的问题。闭环辨识的好处不用多说了,问题是如何从闭环辨识中获得有用的模型。工业上有一个办法,没有一个“官 名”,但实际上是一个开环-反馈过程。具体做法是这样的:先用粗略的过程知识构造一个简单的多变量控制器,其任务不是精确控制被控过程,而是将被控变量为 此在极限之内,一旦逼近或超过极限,就采取动作将其“赶”回极限内;但只要在极限内,就按部就班地坐阶跃扰动,测试过程特性。测试的结果用来改进控制器的 模型,然后再来一遍。几遍(一般两遍就够了)之后,模型精度应该很不错了。这个方法比较好地解决了辨识精度和过程稳定性的要求。

西游记里最好看的打斗是孙悟空大战二郎神那一段。孙悟空打不过就变,二郎神则是“敌变我变”,紧追不舍,最后把个无法无天的顽皮猴子擒拿归案。用控制理论的观点看,这“敌变我变”的本事就是自适应控制控制器结构根据被控过程的变化自动调整、自动优化。

No comments:

Post a Comment