ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

数学建模——灰色预测

2021-07-12 09:02:54  阅读:172  来源: 互联网

标签:灰色 end 预测 建模 累加 数学 序列 AA1


一、灰色预测基础知识

        灰色系统理论认为:系统的行为现象尽管是朦胧的,数据是复杂的,但它毕竟是有序的,是有整体功能的。在建立灰色预测模型之前,需对原始时间序列进行数据处理,经过数据预处理后的数据序列称为生成列。灰色系统常用的数据处理方式有累加和累减两种,通常用累加方法。

       灰色预测通过鉴别系统因素之间发展趋势的相异程度,并对原始数据进行生成处理来寻找系统变动的规律,生成有较强规律性的数据序列,然后建立相应的微分方程模型,从而预测事物的未来发展趋势。灰色预测是以灰色模型为基础的,在诸多灰色模型中,以灰色系统中单序列一阶线性微分方程模型GM(1,1)模型最为常用。

       下面简要的介绍GM(1,1)模型

(1)原始数据累加以便弱化随机序列的波动性和随机性,得到新数据序列;(累加)

(2)对新序列建立一阶线性微分方程;

(3)对累加序列(新序列)生成数据做均值生成平滑向量和常数项向量;

(4)用最小二乘法求解灰参数;

(5)将灰参数代入一阶线性微分方程进行求解,得到累加序列的估计表达式;

(6)对累加序列进行差分,还原为原始序列;

(7)对建立的灰色模型进行检验,步骤如下:

①计算预测值和真实值之间的残差和相对误差;

②求原始数据的均值以及方差;

③求残差的均值以及方差;

④计算方差比

⑤求小误差概率

⑥灰色模型精度检验表

(8)利用模型进行预测

二、灰色预测的Matlab程序

用MATLAB编写灰色预测程序时,完全按照预测模型的求解步骤,即

(1)对原始数据进行累加。

(2)构造累加矩阵B与常数向量。

(3)求解灰参数。

(4)将参数代入预测模型进行数据预测。

具体的MATLAB程序如下:

clear
syms a b;
c = [a,b]';
A = [174 179 183 189 207 234 220.5 256 270 285];
%原始数据累加
B = cumsum(A);
n = length(A);
%生成累加矩阵
for i = 1:(n-1)
    C(i) = (B(i)+B(i+1))/2;
end
%计算待定参数的值
D = A;D(1) = [];
D = D';
E = [-C;ones(1,n-1)];
c = inv(E*E')*E*D;
c = c';
a = c(1);b = c(2);
%预测后续数据
F = [];F(1) = A(1);
for i = 2:(n+10)
    F(i) = (A(1)-b/a)/exp(a*(i-1))+b/a;
end
G = [];G(1) = A(1);
for i = 2:(n+10)
    G(i) = F(i)-F(i-1)
end
t1 = 1999:2008;
t2 = 1999:2018;
G
plot(t1,A,'ro',t2,G,'b+')

在实际使用时,可以直接套用该程序,把原数据和时间序列数据替换就可以了。模型的误差检验可以灵活处理。

三、灰色预测应用实例

3.1实例一:长江水质的预测

长江的水质问题是一个复杂的非线性系统,但是由于数据样本少,需要预测的时间长,直接应用神经网络很难取得理想的效果。考虑到污水排放量的变化规律是一个不确定的系统,且本题给出污水排放量数据样本比较少,还要求做出长达10年的预测,因此采用彩色预测方法来预测未来的污水排放量。

运行程序和结果如上Matlab程序。

3.2实例二:预测与会代表人数

该题要求为会议筹备组制订一个预定宾馆客房、租借会议室、租用客车的合理方案。为了解决找个问题,需要先预测与会代表的人数。预测的依据是代表回执数量及往届的与会人员数据。

clc
clear all
syms a b;
c = [a,b]';
A1 = [315 356 408 711];
A2 = [89 115 121 213];
A3 = [57 69 75 104];
AA1 = A2./A1
AA2 = A3./A1
%原始数据累加
B = cumsum(AA1);
n = length(AA1);
%生成累加矩阵
for i = 1:(n-1)
    C(i) = (B(i)+B(i+1))/2;
end
%计算待定参数的值
D = AA1;D(1) = [];
D = D';
E = [-C;ones(1,n-1)];
c = inv(E*E')*E*D;
c = c';
a = c(1);b = c(2);
%预测后续数据
F = [];F(1) = AA1(1);
for i = 2:(n+1)
    F(i) = (AA1(1)-b/a)/exp(a*(i-1))+b/a;
end
G = [];G(1) = AA1(1);
for i = 2:(n+1)
    G(i) = F(i)-F(i-1)
end
t1 = 1:4;
t2 = 1:5;
G
plot(t1,AA1,'o',t2,G)
%原始数据累加
B1 = cumsum(AA2);
n1 = length(AA2);
%生成累加矩阵
for i = 1:(n1-1)
    C1(i) = (B1(i)+B1(i+1))/2;
end
%计算待定参数的值
D1 = AA2;D1(1) = [];
D1 = D1';
E1 = [-C1;ones(1,n1-1)];
c1 = inv(E1*E1')*E1*D1;
c1 = c1';
a1 = c1(1);b1 = c1(2);
%预测后续数据
F1 = [];F1(1) = AA2(1);
for i = 2:(n1+1)
    F1(i) = (AA2(1)-b1/a1)/exp(a1*(i-1))+b1/a1;
end
G1 = [];G1(1) = AA2(1);
for i = 2:(n1+1)
    G1(i) = F1(i)-F1(i-1)
end
t1 = 1:4;
t2 = 1:5;
G1
plot(t1,AA2,'o',t2,G1)

预测预约不到场率为0.2833,不预约到场率0.1331,由于第5界回执755张,不考虑到近两年趋势,出于保守考虑,人数分别向上取整,预测为214人和101人,预测实际参会人数755-214+101=642人。

标签:灰色,end,预测,建模,累加,数学,序列,AA1
来源: https://blog.csdn.net/qq_40870387/article/details/118667076

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有