卡尔曼滤波
1.什么是卡尔曼滤波
最佳线性滤波理论起源于40年代美国科学家Wiener和前苏联科学家Kолмогоров等人的研究工作,后人统称为维纳滤波理论。从理论上说,维纳滤波的最大缺点是必须用到无限过去的数据,不适用于实时处理。为了克服这一缺点,60年代Kalman把状态空间模型引入滤波理论,并导出了一套递推估计算法,后人称之为卡尔曼滤波理论。卡尔曼滤波是以最小均方误差为估计的最佳准则,来寻求一套递推估计的算法,其基本思想是:采用信号与噪声的状态空间模型,利用前一时刻地估计值和现时刻的观测值来更新对状态变量的估计,求出现时刻的估计值。它适合于实时处理和计算机运算。
卡尔曼滤波的实质是由量测值重构系统的状态向量。它以“预测—实测—修正”的顺序递推,根据系统的量测值来消除随机干扰,再现系统的状态,或根据系统的量测值从被污染的系统中恢复系统的本来面目。
2.卡尔曼滤波的形式
1、模型要求
卡尔曼滤波要求模型已知。即模型的结构与参数已知,且随机向量的统计特征已知。
2、卡尔曼滤波分类
记Yj的向量函数:
为状态X(k)的估计量,分三种情况:
当k>j时,称为预测;
当k=j时,称为滤波;
当k<j时,称为平滑。
3.卡尔曼滤波特点
卡尔曼滤波是解决状态空间模型估计与预测的有力工具之一,它不需存储历史数据,且可以同过计算机程序到达对状态空间模型的优化拟合。
4.卡尔曼滤波案例分析
案例一:基于卡尔曼滤波方法的时用水量预测[1]
一、基于卡尔曼滤波方法的时用水量预测
在20世纪60年代以后,数学家卡尔曼提出了用一个状态方程和一个量测方程来完整描述线性动态过程,从而形成了一种递推滤波算法,卡尔曼滤波不要求保留使用过的观测数据,当测得新的使用数据,可按照一套递推公式算出新的估计量,不必重新计算,此外,他还打破了对平稳过程的限制,可用于对时变随机信号的滤波,卡尔曼滤波是一套基本的公式,可用于预测修正的评估,在最小化协方差估计误差方面表现出众。
一个动态系统的状态变化,在没有外部干扰时,系统的未来状态可以根据现时状态从已知的运动方程中确定出来,但是,遗憾的是总是存在各种外部干扰,同时人们对运动方程的描述不可能十分精确,例如方程的建立过程中忽略影响小的量或者将非线性形式简化为线性形式,变参数近似表示成常参数等等[2]。当线性方程的描述在人们所需范围内足够准确时,可以认为该线性系统的行为看作两部分组成。一部分是由已知的运动方程正确的预测出来,另一部分是可以看作均值为零的随机分量[3] [4]。
设每小时用水量为x(k)。对于不同时间值k,均有一值x(k)与之对应,当取样时刻变化时,就得到一时用水量序列{x(k)},用水量预测序列{x(k)}为白噪声序列{x(k)}驱动的一阶递归模型,状态方程如下:
x(k) = φ(k)x(k − 1) + ω(k − 1) (1)
西(_|})为七一1时刻和居时刻时用水量之间的相关系数,本文中采用了时变模型,认为F是一个随时间变化的系数埘为表示过程噪声。
测量方程如下:y(k)=Hx(k)+v(k) (2)
y(k)为k时刻用水量的量测值;
日为量测参数,它由测量系统和测量方法所确定。不随时间变化的一个常量,取为1;v(k)为量测噪声。
均方估计误差为p(k) = E[x(k) − x(k)]2,在均方估计误差为最小的准则下加以推导,可以得出一套递推公式如下:
预测估计方程:
x(k + 1 | k) = F(k)x(k | k − 1) + b(k)[y(k) − Hx(k | k − 1)] (3)
预测增益方程:
(4)
均方预测误差方程:
p(k | k + 1) = F(k)2p(k | k − 1) − F(k)Hb(k)p(k | k − 1) + Q
式中: x(k+1|k)于后时刻的k+1时刻时用水量基础的估计值;R为量测噪声的方差,;Q为过程噪声的方差,。
卡尔曼滤波是以预测加修正来实现其滤波递推的,卡尔曼滤波的这个性质使得我们很容易用计算机来实现,从而完成我们对时用水量的预测。
二、基于卡尔曼滤波方法的季节预测模型
为了提高预测精度,引进了2个参数的预测采用如下状态方程和量测方程:
x(k) = φ1(k)x(k − 1) + φ2(k)x(k − 2) + ω(k)x(k − 1)
y(k)=Hx(k)+v(k) (6)
以矩阵的形式表示如下:。
(7)
在最小均方差准则[5](即p(k|k+1)=E[x(k+1)-x(k+1|k)]^2为最小)下得如下递推公式。
预测估计方程:
x(k+1|k)=Ax(k|k-1)+G(k)[(k)-CX(k|k-1)] (8)
预测增益方程:
G(k) = AP(k | k − 1)HT[HP(k | k − 1)HT + R(k)1 (9)
预测协方差方程
P(k+1|k)=[A-G(k)H]P(k|k-1)A^T+Q(k) (10)
其中A为[F(k)1F(k)2],X(K | k − 1)为,Y(k)为
由于每天用水量呈现一定的周期 ,现以过去一天同一时刻的时用水量作为冲击序列[6],对 k 时刻时用水量做出修正,因此在 2个参数的基础上加入季节模型。
状态方程和量测方程如下:
x(k) = φ1(k)x(k − 1) + φ2(k)u(k) + w(k − 1)
y(k)=Hx(k)+v(k)
其中u(k)=x(k-24)
即将第2个参数x提前24h ,重新统计出由F1和F2构成的A矩阵 ,进行相应的卡尔曼滤波预测。重新构建的模型称为卡尔曼滤波季节预测模型。
三、工程实例
杭州位于钱塘江畔,是一个人口密集城市,其设计供水量能力为140万t/d。本文以杭州市的时用水量为例,分别采用卡尔曼滤波模型以及卡尔曼滤波季节模型进行预测,对结果进行比较分析(见二图),研究上述2种方法的利弊。
从图中可以看出,对于1h预测,非季节模型误差有较大波动,改进后的模型,即卡尔曼滤波季节模型相对较为平稳。
总体来说季节模型预测精度相对较高。
评价模型预测精度,还需查看其预测误差分布特征[7]。
图3为卡尔曼滤波常规模型与季节模型预测误差分布比较,采用了1个月数据,用2种方法进行了预测,从图中可以看出,2种方法误差都主要集中在-0.1至0.1区域,呈对称分布。从1个月所有数据来看,误差大致呈正态分布,季节模型较常规模型趋势图更为尖锐,表明季节模型比常规模型预测效果更为理想。综合上图和下图,比较得出,卡尔曼滤波季节模型具有更高的预测精度。
采用基于卡尔曼滤波方法预测模型,进行时用水量预测。鉴于城市时用水量具有周期性、趋势性及随机扰动性,引入季节因子,形成卡尔曼滤波方法季节模型。以杭州市实测数据为例,分别采用卡尔曼滤波模型和卡尔曼滤波季节模型分别对该市时用水量进行预测,预测结果表明,卡尔曼滤波方法季节预测模型精度相对较高。从计算模型看,季节预测模型要求低,但预测精度较高,具有一定实用性,能够满足供水系统优化调度的要求。