灰色预测 预测
灰色预测模型简介
灰色预测模型(Gray Forecast Model)是通过少量的、不完全的信息,建立数学模型并做出预测的一种预测方法当我们应用运筹学的思想方法解决实际问题,
制定发展战略和政策、进行重大问题的决策时,都必须对未来进行科学的预测.预测是根据客观事物的过去和现在的发展规律,借助于科学的方法对其未来的发
展趋势和状况进行描述和分析,并形成科学的假设和判断.
灰色系统是黑箱概念的一种推广。我们把既含有已知信息又含有未知信息的系统称为灰色系统.作为两个极端,我们将称信息完全未确定的系统为黑色系统;
称信息完全确定的系统为白色系统.区别白色系统与黑色系统的重要标志是系统各因素之间是否具有确定的关系。
灰色系统的特点
- 用灰色数学处理不确定量,使之量化
- 充分利用已知信息寻求系统的运动规律
- 灰色系统理论能处理贫信息系统
灰色生成
将原始数据列中的数据,按某种要求作数据处理称为生成.客观世界尽管复杂,表述其行为的数据可能是杂乱无章的,然而它必然是有序的,都存在着某种内在规律,
不过这些规律被纷繁复杂的现象所掩盖,人们很难直接从原始数据中找到某种内在的规律.对原始数据的生成就是企图从杂乱无章的现象中去发现内在规律。
常用的灰色系统生成方式有:累加生成,累减生成,均值生成,级比生成等,下面主要介绍累加生成.
累加生成:
累加生成,即通过数列间各时刻数据的依个累加以得到新的数据与数列,累加前的数列称原始数列,累加后的数列称为生成数列.累加生成是使灰色过程由灰变
白的一种方法,它在灰色系统理论中占有极其重要地位,通·过累加生成可以看出灰量积累过程的发展态势,使离乱的原始数据中蕴含的积分特性或规律加以显化.
累加生成是对原始数据列中各时刻的数据依次累加,从而生成新的序列的一种手段.
累加生成简介
累加生成经典模型( GM(1,1) )
一阶微分方程模型,其形式为:
精度检验:后验差检验法 (原理跳过)
python代码
import numpy as np
import matplotlib.pyplot as plt
# 导入时间序列
x = [31.87,32.87,31.77,31.5,30.44,30.77,29.69,29.69,29.13,27.68,29.79,25.19]
lan = []
for i in range(len(x)):
if i == len(x) - 1:
continue
# 求级比
lan.append(x[i] / x[i + 1])
x_1 = np.cumsum(x)
# 构造数据矩阵B及数据向量
B = np.array([-1 / 2 * (x_1[i] + x_1[i + 1]) for i in range(len(x) - 1)])
B = np.mat(np.vstack((B, np.ones((len(x) - 1,)))).T)
Y = np.mat([x[i + 1] for i in range(len(x) - 1)]).T
u = np.dot(np.dot(B.T.dot(B).I, B.T), Y)
[a, b] = [u[0, 0], u[1, 0]]
a_new, b = x[0] - b / a, b / a
# 输入需要预测的年数
year = 20
year += len(x)
x_predict = [x[0]]
x_predict = x_predict + [a_new * (np.exp(-a * i) - np.exp(-a * (i - 1))) for i in range(1, year)]
#计算相对误差,如果较小,则可以使用
#注意这里12要根据x数组长度更改
print((np.array(x_predict[:12])-np.array(x[:12]))/np.array(x[:12]))
#打印预测的未来数据,注意点同上
print(x_predict[12:])
plt.plot(range(2005,2017),x[:12],range(2005,2037),x_predict)
plt.xlabel('Years')
plt.ylabel('Concentration [mt]')
plt.legend(['Actual','Forecast'])
plt.savefig('1.png',dpi=600)
plt.show()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)