中国西部科技 2012 年 06 月第 11 卷第 06 期总第 275 期
35
灰色模型 GM(1,1)的 C 语言程序实现
史振伟 刘河军 徐玉健
(中国地质大学<北京>土地科学技术学院,北京 100083)
摘 要:灰色系统理论从提出到至今,经历了三十年的发展与完善,已在社会、经济、科技、农业、工业、地质、决策、预
测等不同领域得到了广泛应用。以往的应用经验证明了灰色系统理论具有很强的适用性,就灰色模型 GM(1,1)而言,由
于计算复杂,单凭人工计算,计算量大,计算成本高,计算精度也难以保证。采用 C 语言编写程序进行预测计算,将从根
本上解决这一问题,并使灰色模型 GM(1,1)在建筑物沉降研究等方面得到更有效的应用。
关键词:灰色系统理论;灰色模型 GM(1,1);C 语言;沉降预测
DOI:10.3969/j.issn.1671-6396.2012.06.016
1 引言
)1(
x
(
k
)1
)1(
x
)0(
ak
;
k
,
,2,1
n
——(式 5)
b
a
e
b
a
灰色系统理论是 80 年代初期由我国学者邓聚龙教授创
立的一门系统科学新学科。所谓灰色系统,是指部分信息已
知,部分未知,即信息不完全的贫信息系统。然而信息不完
设原始数据为:
X
x
),1(
)0(
)0(
x
(
全的贫信息系统普遍存在,这使得灰色系统理论具有十分广
按下式对原始数据累加:
)0(
),2(
,
x
)0(
(
n
))
——(式 6)
阔的发展前景。短短的几十年,灰色系统理论不仅在理论上
迅速发展,日臻完善,而且在社会、经济、科技、农业、工
业、地质、决策、预测等各方面得到了日益广泛和深入的应
用,取得了一系列重大成果[1]。然而这并不能说明灰色模型
适用于任何研究对象,在使用灰色系统模型前,要系统分析
影响研究对象变化的因素是否具有灰色特征。只有具有灰色
特征的研究对象才可运用灰色模型进行研究。
在建筑物变形监测领域,建筑物沉降过程既包含确定信
息又包含不确定信息,且影响建筑物沉降的因素处于不断变
化之中,无法定量分析。因此建筑物的沉降过程可以看作是
设
一个灰色系统,能够运用灰色系统理论研究其沉降变化。为
了验证这一理论在建筑物沉降预测方面的可行性,以及方便
今后灰色系统理论在建筑物沉降预测领域中的应用,使灰色
系统模型 GM(1,1)应用更灵活,实现简化计算过程的目
的,本文将基于灰色模型 GM(1,1)运用 C 语言实现灰色
模型 GM(1,1)程序化。
2 灰色系统模型[2,3]
2.1 灰色模型 GM(1,1)
)1(
x
n
)(
n
i
1
)0(
x
ni
,)(
,2,1
,
n
)1(
生成原始数据的 1-AGO 序列:
X
x
,
——(式 7)
对 1-AGO 序列使用式 1 求紧邻均值,得到 1-AGO 的紧
),2(
),1(
))
n
x
x
)1(
)1(
)1(
(
(
邻均值序列:
z
(
)1(
)1(
)1(
z
),2(
Z
——(式 8)
求灰色微分方程的时间响应序列中的参数 ba, 的值,
ˆ
a
),3(
))
n
z
)1(
(
,
为参数列,且:
)1(
)2(
)3(
,
z
z
)1(
B
)2(
)3(
Tba
),(
)0(
x
x
x
)0(
)0(
n
)(
Y
)1(
z
n
)(
——(式 9)
1
1
1
则灰色微分方程的最小二乘估计参数列满足:
ˆ
a
T
ba
,
x
)1(
)0(
T
)0(
k
)1
(
(
T
BB
x
)0(
)1(
ˆ
x
1)
)1(
k
(
取
ˆ
x
——(式 10)
YB
,则还原原始数据的模拟值得:
)1
kk
);
,2,1
——(式 11)
)1(
n
ˆ
x
(
,
2.2 灰色预测模型的检验
对于一个具体的研究对象,究竟选择哪一种模型进行
预测并不是一成不变的,需要对预测模型进行多重检验才
能判断其是否满足要求,只有精度满足一定要求的模型才
能对其进行选择和使用。
2.2.1 残差、相对误差检验
)0(
根据 GM(1,1)模型求得原始序列对应的模拟序列为:
ˆ
ˆ,
X
x
),2(
——(式 12)
ˆ
n
x
(
))
)0(
,求得残差序列为:
按式
ˆ(
x
n
)(
ˆ),1(
x
x
n
)(
)0(
))
n
)0(
)0(
)0(
(
(
)1(
)0(
b
az
k
)(
k
)(
定义方程:
x
为 GM(1 , 1)模型,其中:
z
k
x
k
(
5.0)(
)1(
对 GM(1 , 1)求导得:
)1(
dx
dt
5.0
ax
x
)1(
)1(
)1(
b
——(式 1)
)1
——(式 2)
——(式 3)
为 GM(1,1)模型的白化方程,对白化方程求解得其
时间响应函数为:
)1(
)1(
t
)(
x
x
)0(
at
e
;
k
,2,1
,
n
——(式 4)
b
a
b
a
则 GM(1,1)灰色微分方程的时间响应序列为:
36
)0(
按式
序列:
),1((
),2(
k
)(
k
x
)(
)0(
k
n
(,
))
——(式 13)
;
k
,2,1
,
n
,求得相对误差
做法使编写出的程序更可靠和易懂[4]。使用软件 Visual
Studio2010 运用 C 语言编写程序,实现了使用 GM(1,1)
模型对原始数据的处理、预测、关联度、残差、相对误
差、平均相对误差的输出。程序内部通过对精度、关联度
与其临界值的比较,输出精度等级及预测值,极大的减少
开发应用
,
)1(
x
)1(
)0(
k
)(
x
k
)(
)0(
平均相对误差。
称
k
)1(
x
)1(
)0(
,
,
)1(
x
)1(
)0(
——(式 14)
为 k 点的相对误差,
1
n
n 1
k
k
为
给定残差α,当 1<α成立时,称模型为残差合格模型。
2.2.2 关联度检验
设ε为 X(0)与 )(0ˆX 的绝对关联度。计算 X 与 Xˆ 的灰色
绝对关联度ε:
s
ˆ
s
n
1
k
n
2
1
2
k
kx
)(
nx
)(5.0)1(
x
x
)1(
——(式 15)
)(ˆ
kx
)(ˆ5.0)1(ˆ
x
nx
)1(ˆ
x
——(式 16)
1
1
s
s
ˆ
s
ˆ
s
ˆ
s
s
——(式 17)
对于给定的ε0>0,若ε>ε0,则称模型为关联度合格
模型。
2.2.3 均方差、最小误差概率检验
2
)0(
k
)(
x
)
——(式 18)
x
n
n
(
x
x
)0(
2
Sk
),
1
1
n
求原始数据的均值、方差:
1
n
求残差的均值、方差:
n
1
n
Sk
),
1
n
(
1
1
2
2
(
n
k
k
k
1
k
1
S
2 / S
1
称
C
2
k
)((
)
——(式 19)
为均方差比值,对于给定的,C0>C0>,
则称 GM(1,1)模型为均方差比值合格模型。称:
(
k
)(
——(式 20)
Pp
为小误差概率。对于给定的 P0>0,当 P>P0 时,称模型
6745
1S
.0
)
为小误差概率合格模型。
表 1 精度检验等级参照表
精度等级\
指标临界
一级
二级
三级
四级
相对误差
α
0.01
0.02
0.10
0.20
关联度
ε
0.90
0.80
0.70
0.60
均方差比值
C
0.35
0.50
0.65
0.80
小误差概率
P
0.95
0.80
0.70
0.60
3 GM(1,1)模型 C 语言程序的实现
3.1 程序介绍
C 语言是一种融合了控制特性的现代语言,其设计使
得用户可以自然地采用结构化编程和模块化设计,而这种
开始
输入数据
计算精度等级
计算参数 a、b
计算 1-AGO 值
计算 B、Y 矩阵
原始数据模拟值
了人们的计算量,提高了工程测量的工作效率,很好实现
了灰色模型 GM(1,1)与计算机技术的结合。
3.2 实现的过程
不能进行预测
输出结果
一级
二级
三级
四级
N
Y
Y
Y
Y
N
N
结束
图 1 程序流程图
(注:N 代表“否”,Y 代表“是”。)
3.2.1 还原模拟值
(1)运行程序,根据提示输入原始数据个数 n,接着依
次输入式 6 中所指的原始数据。
(2)执行程序对式 6 中数据进行累加得到 1-AGO 序
列,for(i=1;i
中国西部科技 2012 年 06 月第 11 卷第 06 期总第 275 期
37
3.2.2 模型精度的检验
(1)将式 6、式 12 中对应的数据相减求出残差序列,
并存放在ε序列中。使用残差数据式 13 除以式 6 中的原始
数据得到相对误差序列。
(2)对相对误差序列求和除 n 取平均值得平均相对误
差(通常使用平均相对误差衡量预测精度的指标)。
(3)通过式 18,编写代码得到原始数据的平均值,并
2。根据式 19,编写代码计算得到残差的平均值
求其方差 S1
与方差。定义 C=S2/S1,定义 C0,源代码通过使用 if 语句与
else 语句判断 C 与 C0 的关系,判断是否为合格均方差比值。
(4)计算得到小误差概率 P,对于给定的 P0>0,当 P>
根据式 15、16,编写代码,完成计算 X 与 Xˆ 的灰色
P0 时,称模型为小误差概率合格模型,并输出结果。
绝对关联度ε,判断并输出绝对关联度和输出相应的精度
等级。
4 使用程序对在建建筑物沉降量进行预测
4.1 预测结果精度分析
为检验使用程序进行数据处理分析结果的可靠性,测
得了某市公共租赁房工程中一栋楼房从开工到建成过程中
发生的沉降量。初期一共测得了五组沉降数据,以这五组
数据作为原始数据,使用灰色模型 GM(1,1)对未来三个
周期的沉降量进行预测。之后继续测得三个周期的沉降数
据与对应的预测数据进行分析,对比沉降观测值与模拟值
曲线的拟合程度,检验 GM(1,1)模型的预测精度。
计算平均相对误差:
n
1
n
k
1
k
.1
2908
%
。
由表 1 可知,平均相对误差等级为一级。
模拟误差
计算 X 与 Xˆ 的灰色绝对关联度
,精度为二级。
9.0
05.0%29.0
998.0
5
,所以关
联度为一级。
计算均方差比 C=0.0259<0.35,所以均方差比值为一级。
计算小误差概率 P=1>0.95,所以小误差概率为一级。
表 2 误差检验表
序号 原始数据 模拟数据
2
3
4
5
4.61
5.92
7.06
8.64
4.71
5.76
7.04
8.61
残差
-0.088
0.161
0.017
0.025
相对误差
1.91%
2.72%
0.23%
0.29%
原始数据的预测序列为
)0(
ˆ
X
)28.19,76.15,89.12,54.10(
。
为了使精度检验的结果表现直观,利用原始沉降量与
模拟值折线图进行对比分析。
时间间隔 15d
原始数据
模拟数据
表 3 原始沉降量与对应的模拟值
4
7.06
7.04
1
2.02
2.02
2
4.61
4.71
3
5.92
5.76
5
8.64
8.61
首先,通过图 2 可以看出,原始沉降量与模拟沉降量拟
合的较好,第 7 周期至第 9 周期的沉降量与预测的对应周期
沉降量也具有很高的拟合程度,这也验证了灰色模型 GM
(1,1)在预测建筑物沉降方面的优越特性;其次,由图 2
还可得知,在预测建筑物沉降方面,离原始值较近周期的
预测值精度要高于离原始值较远周期的预测值。随着预测
周期的逐渐远离,预测值偏离真值的范围也在扩大,这也
证明了,使用此模型在原始数据量较少的情况下,对较近
几个周期的沉降量预测结果更为准确。
图 2 沉降观测值与模拟值折线图
4.2 程序应用分析
实现灰色模型 GM(1,1)C 语言程序化后,成功简化
了使用灰色模型 GM(1,1)进行预测时复杂的数据计算过
程,提高了计算精度,保证了预测结果的真实可靠。此
外,利用此程序一方面很好地证明了灰色模型 GM(1,1)
通过少量已知数据即可完成对未知信息的预测功能,及其
在建筑物沉降预测方面的可行性;另一方面灰色模型 GM
(1,1)与计算机技术的结合极大的发挥了灰色模型 GM
(1,1)在建筑物沉降预测领域的应用空间。提高了建筑物
沉降预测单位的工作效率,节约了大量的人力物力,满足
了当今工程建设快速发展的需要。
5 结论
灰色模型 GM(1,1)的程序化,很好地实现了 C 语言
程序与灰色模型 GM(1,1)结合,充分发挥了计算机技术
与灰色模型 GM(1,1)的优点,既达到了使用已知数据预
测未知数据的目的,又实现了对数据的准确、快速处理。
从残差、相对误差等评估数据来看,灰色模型的预测精度
非常高,实例也证明了灰色 GM(1,1)模型在预测领域中
具有较高的预测精度。
通过实例证明灰色模型在建筑物沉降预测领域具有广
泛的应用前景,因此,实现模型的程序化将变得更加具有
实际意义。在未来工程界“基于灰色模型 GM(1,1)的建
筑物沉降预测系统”必定会有很好的发展蓝图。
参考文献:
[1] 傅立.灰色系统理论及其应用[M].北京:科学技术文献出版社,1992:
68-69.
[2] 邓聚龙.灰色系统理论教程[M].湖北:中国理工大学出版社,1990:
189-192.
[3] 刘思峰.灰色系统理论及其应用[M].北京:科学出版社,2000:134-135.
[4] 姚国清.C 程序设计[M].北京:航空工业出版社,2008:54-55.
[基金项目] 中国地质大学(北京)大学生课外科技专项基金。
[作者简介] 史振伟(1989-),男,汉族,大学本科,研究
方向为测绘工程。