gm模型及其matlab实现Word格式.docx
《gm模型及其matlab实现Word格式.docx》由会员分享,可在线阅读,更多相关《gm模型及其matlab实现Word格式.docx(14页珍藏版)》请在冰豆网上搜索。
而灰色系统是介于白色系统和黑色系统之间的一种系统,灰色系统其内部一部分信息已知,另一部分信息未知或不确定。
例如,一个加有电压的电阻,也是一个系统,根据欧姆定律,I=U/R,当电阻的大小知道后,便可由多大电压算出能得到多大电流。
电压与电流之间有明确的关系或函数,这便是白色系统。
因此,这样的系统要求有明确的作用原理,一个有明确作用原理的系统必定是具有确定结构的,必定是有物理原型的。
然而许多社会经济系统都没有物理原型,虽然知道影响系统的某些因素,但很难明确全部因素,更不可能确定因素之间的映射关系。
这种没有确定的映射关系(函数关系)的系统是灰色系统。
(2)灰色预测
灰色预测,是指对系统行为特征值的发展变化进行的预测,对既含有已知信息又含有不确定信息的系统进行的预测,也就是对在一定范围内变化的、与时间序列有关的灰过程进行预测。
尽管灰过程中所显示的现象是随机的、杂乱无章的,但毕竟是有序的、有界的,因此得到的数据集合具备潜在的规律。
灰色预测是利用这种规律建立灰色模型对灰色系统进行预测。
目前使用最广泛的灰色预测模型就是关于数列预测的一个变量、一阶微分的GM(1,1)模型。
它是基于随机的原始时间序列,经按时间累加后所形成的新的时间序列呈现的规律可用一阶线性微分方程的解来逼近。
经证明,经一阶线性微分方程的解逼近所揭示的原始时间序列呈指数变化规律。
因此,当原始时间序列隐含着指数变化规律时,灰色模型GM(1,1)的预测是非常成功的。
目前,灰色模型GM(1,1)己广泛应用于工程技术、社会、经济、农业、生态、环境等各种系统的预测中。
1灰色预测基础知识
灰色系统理论认为:
系统的行为现象尽管是朦胧的,数据是复杂的,但它毕竟是有序的,是有整体功能的。
在建立灰色预测模型之前,需先对原始时间序列进行数据处理,经过数据预处理后的数据序列称为生成列。
对原始数据进行预处理,不是寻求它的统计规律和概率分布,而是将杂乱无章的原始数据列通过一定的方法处理,变成有规律的时间序列数据,即以数找数的规律,再建立动态模型。
灰色系统常用的数据处理方式有累加和累减两种,通常用累加方法。
灰色预测通过鉴别系统因素之间发展趋势的相异程度,并对原始数据进行生成处理来寻找系统变动的规律,生成有较强规律性的数据序列,然后建立相应的微分方程模型,从而预测事物的未来发展趋势。
灰色预测的数据是通过生成数据的模型所得到的预测值的逆处理结
果。
灰色预测是以灰色模型为基础的,在诸多的灰色模型中,以灰色系统中单序列一阶线性微分方程模型GM(1,1)模型最为常用。
下面简要地介绍GM(1,1)模型。
设有原始数据列x(0)=(x(0)
(1),x(0)
(2),…,x(0)(n)),n为数据个数。
如果根据x(0)数据列建立GM(1,1)来实现预测功能,则基本步骤如下:
(1)原始数据累加以便弱化随机序列的波动性和随机性,得到新数据序列:
x
(1)={x
(1)
(1),x
(1)
(2),…,x
(1)(n)}
其中,x
(1)(t)中各数据表示对应前几项数据的累加。
x
(1)(t)=
,t=1,2,…,n
(2)对x
(1)(t)建立下述一阶线性微分方程:
即GM(1,1)模型。
其中,a,u为待定系数,分别称为发展系数和灰色作用量,a的有效区间是(-2,2),并记a,u构成的矩阵为灰参数
=
只要求出参数a,u,就能求出x
(1)(t),进而求出x(0)的未来预测值。
(3)对累加生成数据做均值生成B与常数项向量Yn,即
B=
Yn=
(4)用最小二乘法求解灰参数
则
=(BTB)-1BTYn
(5)将灰参数
代入
并对
进行求解,得
(1)(t+1)=(X(0)
(1)-
)
+
由于
是通过最小二乘法求出的近似值,所以
(1)(t+1)是一个近似表达式,为了与原序列x
(1)(t+1)区分开来,故记为
(1)(t+1)。
式中t为时间序列,可取年、季或月。
(6)对函数表达式
(1)(t+1)及
(1)(t)进行离散,并将二者做差以便还原x(0)原序列,得到近似数据序列
(0)(t+1)如下:
(0)(t+1)=
(1)(t+1)-
(1)(t)
(7)对建立的灰色模型进行检验,步骤如下:
计算x(0)(t)与
(0)(t)之间的残差e(0)(t)和相对误差q(0)(t):
e(0)(t)=x(0)(t)-
(0)(t)
q(0)(t)=e(0)(t)/x(0)(t)
等等。
(8)利用模型进行预测:
(0)={
(0)
(1),
(0)
(2),…,
(0)(n),
(0)(n+1),…,
(0)(n+m)}
原数列的模拟未来数列的预测
应用举例
取某高校2000年~2005年的某专业招生数据建模,见表1。
表1某高校专业招生数据表
年
招生人数
2000
132
2001
92
2002
118
2003
130
2004
187
2005
207
以表1中的数据构造原始数据列X(0),即
X(0)={X(0)
(1),X(0)
(2),X(0)(3),X(0)(4),X(0)(5),X(0)(6)}
={132,92,118,130,187,207}
对X(0)进行一次累加(1—AGO),生成数列:
X
(1)(k)=
X(0)(i)即
X
(1)={X
(1)
(1),X
(1)
(2),X
(1)(3),X
(1)(4),X
(1)(5),X
(1)(6)}
={132,224,342,472,659,866}
和数据阵B、数据列Yn
,Yn=(92,118,130,187,207)T
经计算可得
=[a,u]T
=
进一步得到灰色预测模型GM(1,1)为
(1)(k)=(X(0)
(1)-
=(132+277.0137483)
-277.0137483
=409.0137483
预测值及预测精度见表2。
表2某高校专业招生预测值及预测精度表
GM(1,1)模型
计算值
1—AGO
还
原
值
实
际
误
差
拟合相对
误差(%)
132
225.0608796
224
93
92
1
-1
339.2954418
342
114
4
3.38
479.52123
472
140
-10
-7.69
651.6519
659
172
15
8
862.9466129
866
211
-4
-1.93
2006
1122.316167
259
252
-7
-2.78
XX文库-让每个人平等地提升自我
由表2知预测精度较高。
2006年某专业招生人数预测值为259人。
由于人数为整数,所以结果取整数部分。
GM(1,1)也是一种长期预测模型,在没有大的市场波动及政策性变化的前提下,该预测值应是可信的。
众所周知,影响招生人数的因素很多且难以预测。
因此,在采用灰色系统理论进行定量预测时,如果存在对预测对象影响较大的因素,就要在定性分析的基础上,寻找原始数据信息的突变点的量化值,然后再对预测值进行必要的修正,使预测值更接近实际情况,提高预测值的可信度,为科学决策提供可靠的数据。
另外,若作长期预测,要考虑对上限值的约束条件。
2灰色预测的MATLAB程序
2.1典型程序结构
灰色预测中有很多关于矩阵的运算,这可是MATLAB的特长,所以用MATLAB是实现灰色预测过程的首选。
用MATLAB编写灰色预测程序时,可以完全按照预测模型的求解步骤,即
(1)对原始数据进行累加。
(2)构造累加矩阵B与常数向量Yn。
(3)求解灰参数。
(4)将参数带入预测模型进行数据预测。
下面以某公司收入预测问题为例介绍灰色预测的MATLAB实现过程。
已知某公司1999—2008年的利润为(单位:
元/年):
[89677,99215,109655,120333,135823,159878,182321,209407,246619,300670],现在要预测该公司未来几年的利润情况。
具体的MATLAB程序如下:
clear
symsau;
c=[au]'
;
%灰参数c
A=[89677,99215,109655,120333,135823,159878,182321,209407,246619,300670];
%原始数据
Ago=cumsum(A);
%原始数据一次累加
n=length(A);
%原始数据个数
fori=1:
(n-1)
C(i)=(Ago(i)+Ago(i+1))/2;
%生成累加矩阵
end
%计算待定参数的值
Yn=A;
Yn
(1)=[];
Yn=Yn'
E=[-C;
ones(1,n-1)];
c=inv(E*E'
)*E*Yn;
c=c'
a=c
(1);
u=c
(2);
%预测后续数据
F=[];
F
(1)=A
(1);
fori=2:
(n+10)
F(i)=(A
(1)-u/a)/exp(a*(i-1))+u/a;
G=[];
G
(1)=A
(1);
G(i)=F(i)-F(i-1);
%得到预测出来的数据
t1=1999:
2008;
t2=1999:
2018;
G
plot(t1,A,'
o'
t2,G)%原始数据与预测数据的比较
运行该程序,得到的预测数据如下:
G=
1.0e+006*Columns1through14
0.08970.08930.10340.11960.13850.16020.1854
0.21460.24830.28730.33250.38470.44520.5152
Columns15through20
0.59620.68990.79840.92391.06911.