优化算法 | 灰色预测模型算法GM(1,1)流程分析

灰色预测模型(Gray Forecast Model)是通过少量的、不完全的信息,建立数学模型并做出预测的一种预测方法

灰色预测模型适用于小样本,含有不确定性因素的系统

首先,假如给定一组数据

X1={x11,x12,x13…x1n},你需要预测x1(n+1)的值是多少

这里可以使用灰度预测模型也就是GM(1,1)来进行预测

首先生成累加序列X2,

x21=x11,

x22=x11+x12

….

x2(n)=x11+x12+x13+…x1(n)

于是得到了一个新的序列X2

这里还需要用到一个一次后减的公式,也就是∆x1i=x1(i)-x1(i-1)

现在我们假设累加序列X2符合一阶常微分方程(这里的一阶指的是只有一阶导数,常微分指的是系数为常数)

(dx2i)/(di) + a*x2i = u 公式(1.1)

其中的a和u分别称为发展灰数和内生控制灰数

当i=t0,的时候x2(i) = x2(t0)

因此可以得到一个公式

(dx2(t0))/(d(t0)) + a*x2(t0) = u 公式(1.2)

综合1.1和1.2可以得到公式

x2(i) = [x2(t0) – (u/a)]*e^(-a*(i-t0)) +u/a//我也不知道是怎么推导出来的

对导数部分(dx2(t0))/(d(t0))进行对等间隔取样,并且将t0设置为1,公式会变成

x2(k+1) = [x2(1) – (u/a)] *e^(-a*k) + u/a公式1.3//这里的k=i-t0

 

接下来将x2(2),x2(3)…x2(n)带入公式1.1,用差分代替微分,又因为等间隔取样,

∆t = (t+1)-t,故得到∆x2(2)/∆t = ∆x2(2) =x2(2)-x2(1) = x1(2)

类似的有∆x2(3)/∆t = ∆x2(3) = x2(2)-x2(1) = x1(2)

于是将以上公式带入公式1.2有

x1(2) = [-x2(2),1]([a,u]T)  //这里的T为矩阵转置

x1(3) = [-x2(3),1]([a,u]T)

x1(4) = [-x2(4),1]([a,u]T)

。。。

x1(n) = [-x2(n),1]([a,u]T)

 

由于∆x2(i)/∆i涉及到累加列两个项的值,因此x2(i)最好也变成两个项的值,因此矩阵变为

x1(2) = [-1/2*(x2(2)+x2(1)),1]([a,u]T) //这里的T为矩阵转置

x1(3) = [-1/2*(x2(3)+x2(2)),1]([a,u]T)

x1(4) = [-1/2*(x2(4)+x2(3)),1]([a,u]T)

。。。

x1(n) = [-1/2*(x2(n)+x2(n-1)),1]([a,u]T)

这个矩阵的矩阵形式表示为y=BU,其中U = ([a,u]T)

以上式子用最小二乘法估计a和u为以下

 

将计算出来的a和u带入公式1.3就能够得到x2(n+1)的估计值,使用x2(n+1)的估计值就能够得到x1(n+1)的预测值

发布了234 篇原创文章 · 获赞 19 · 访问量 8万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章