精华内容
下载资源
问答
  • 2022-04-26 14:56:17
    # -*- coding: utf-8 -*-
    """
    Spyder Editor
    
    This is a temporary script file.
    """
    import numpy as np
    import math
    
    history_data = [724.57,746.62,778.27,800.8,827.75,871.1,912.37,954.28,995.01,1037.2]
    n = len(history_data)
    X0 = np.array(history_data)
    
    #累加生成
    history_data_agg = [sum(history_data[0:i+1]) for i in range(n)]
    X1 = np.array(history_data_agg)
    
    #计算数据矩阵B和数据向量Y
    B = np.zeros([n-1,2])
    Y = np.zeros([n-1,1])
    for i in range(0,n-1):
        B[i][0] = -0.5*(X1[i] + X1[i+1])
        B[i][1] = 1
        Y[i][0] = X0[i+1]
    
    #计算GM(1,1)微分方程的参数a和u
    #A = np.zeros([2,1])
    A = np.linalg.inv(B.T.dot(B)).dot(B.T).dot(Y)
    a = A[0][0]
    u = A[1][0]
    
    #建立灰色预测模型
    XX0 = np.zeros(n)
    XX0[0] = X0[0]
    for i in range(1,n):
        XX0[i] = (X0[0] - u/a)*(1-math.exp(a))*math.exp(-a*(i));
    
    
    #模型精度的后验差检验
    e = 0      #求残差平均值
    for i in range(0,n):
        e += (X0[i] - XX0[i])
    e /= n
    
    #求历史数据平均值
    aver = 0;     
    for i in range(0,n):
        aver += X0[i]
    aver /= n
    
    #求历史数据方差
    s12 = 0;     
    for i in range(0,n):
        s12 += (X0[i]-aver)**2;
    s12 /= n
    
    #求残差方差
    s22 = 0;       
    for i in range(0,n):
        s22 += ((X0[i] - XX0[i]) - e)**2;
    s22 /= n
    
    #求后验差比值
    C = s22 / s12   
    
    #求小误差概率
    cout = 0
    for i in range(0,n):
        if abs((X0[i] - XX0[i]) - e) < 0.6754*math.sqrt(s12):
            cout = cout+1
        else:
            cout = cout
    P = cout / n
    
    if (C < 0.35 and P > 0.95):
        #预测精度为一级
        m = 10   #请输入需要预测的年数
        #print('往后m各年负荷为:')
        f = np.zeros(m)
        for i in range(0,m):
            f[i] = (X0[0] - u/a)*(1-math.exp(a))*math.exp(-a*(i+n))    
    else:
        print('灰色预测法不适用')

    更多相关内容
  • 本程序是在VC6.0编辑环境下写的,参照灰度模型理论思想编码。用C语言的思想(结构化程序设计)编写的,只有申请和释放指针用C++语言,但是改为纯C++也不是很难。由于可以实现了预测功能,也无心修改成C++了,有兴趣...
  • matlab灰度预测

    2019-04-06 12:01:16
    灰色预测是就灰色系统所做的预测。所谓灰色系统是介于白色系统和黑箱系统之间的过渡系统。其具体的含义是:如果某一系统的全部信息已知为白色系统,全部信息未知为黑箱系统,部分信息已知,部分信息未知,那么这一...
  • 灰度预测C++代码

    2016-11-15 23:47:23
    灰度预测的C++代码实现
  • matlab代码,运行没问题
  • 资源名:MATLAB实现灰度预测模型的源代码_灰度预测_matlab 资源类型:matlab项目全套源码 源码说明: 全部项目源码都是经过测试校正后百分百成功运行的,如果您下载后不能运行可联系我进行指导或者更换。 适合人群:...
  • 超详细的解释,修改数据方便,结果展示清晰;分析很到位; 有对模型精度的检测和拟合精度的分析,可以更换任意数据,结果分析以文字叙述和五张图表展示出来,一目了然,至于为什么用5C币,是因为想帮助你呀,但版权...
  • 灰度预测代码

    2017-07-16 15:04:58
    很好的代码
  • 使用简化预测公式进行线性预测编码(以灰度图像为例)
  • matlab灰色关联算法,新手入门例程,附代码脚本
  • 改进的灰度预测算法

    2018-05-21 21:06:17
    对数据做了优化处理的灰色预测模型。通过数据优化,满足灰色预测的级比要求。
  • 【预测模型】基于灰度预测之房价的预测matlab源码.md
  • 数学建模预测方法之 灰度预测

    千次阅读 2020-08-05 13:26:00
    灰度预测模型 核心体系是Grey Model.即对原始数据作累加生成(或其他处理生成)得到近似的指数规律再进行建模的方法。 在处理较少的特征值数据,不需要数据的样本空间足够大,就能解决历史数据少、序列的完整性以及...

    灰度预测模型

    核心体系是Grey Model.即对原始数据作累加生成(或其他处理生成)得到近似的指数规律再进行建模的方法。

    在处理较少的特征值数据,不需要数据的样本空间足够大,就能解决历史数据少、序列的完整性以及可靠性低的问题,能将无规律的原始数据进行生成得到规律较强的生成序列。

    只适用于中短期的预测,只适合近似于指数增长的预测。

    该模型使用的不是原始数据的序列,而是生成的数据序列。 目的是得到指数增长的序列。

    • 累加生成
    • 累减生成
    • 加权邻值生成

    灰度预测模型的步骤:

    数据的检验与处理
    • 级比检验
      在这里插入图片描述

      如果级比不满足下列的关系:
      在这里插入图片描述
      需要进行一定的数据处理,最常用的是平移处理: +c
      在这里插入图片描述

    建立GM(1,1)模型
    预测值检验
    • 残差检验
      在这里插入图片描述
      如果对所有的结果<0.1,则认为达到较高的要求;
      如果对所有的结果<0.2,则认为达到一般的要求。

    • 级比偏差值检验
      在这里插入图片描述
      若结果<0.1,则认为达到较高要求;
      若结果<0.2,则认为达到一般要求;

    clc,clear
    x0=[71.1 72.4 72.4 72.1 71.4 72.0 71.6]';%告注意这里为列向量
    n= length(x0);
    lamda = x0(1:n-1)./x0(2:n)%号计算级比
    range = minmax(lamda')%号计算级比的范围
    x1 = cumsum(x0) %累加运算
    B=[ -0.5*(x1(1:n-1) +x1(2:n)),ones(n-1,1)];
    Y = x0(2:n);
    u=B\Y %号拟合参数u(1) =a,u(2) =b
    syms x(t)
    x = dsolve(diff(x) +u(1)*x==u(2),x(0)==x0(1)); %求微分方程的符号解
    xt =vpa(x,6) %以小数格式显示微分方程的解
    yuce1 = subs(x,t,[0:n-1]); %求已知数据的预测值
    yuce1 = double(yuce1); %符号数转换成数值类型,否则无法做差分运算
    yuce= [ x0(1),diff(yuce1)] %差分运算,还原数据
    epsilon=x0'-yuce %计算残差
    delta = abs(epsilon./x0') %计算相对误差
    rho=1-(1-0.5*u(1))/(1+0.5*u(1))*lamda' %计算级比偏差值,u(1)=a
    
    展开全文
  • 资源名:MATLAB实现灰度预测模型的源代码 资源类型:matlab项目全套源码 源码说明: 全部项目源码都是经过测试校正后百分百成功运行的,如果您下载后不能运行可联系我进行指导或者更换。 适合人群:新手及有一定经验...
  • matlab-GM灰度预测.m

    2021-07-16 11:00:53
    matlab-GM灰度预测可以直接使用
  • 资源名:MATLAB实现灰度预测模型的源代码.zip 资源类型:matlab项目全套源码 源码说明: 全部项目源码都是经过测试校正后百分百成功运行的,如果您下载后不能运行可联系我进行指导或者更换。 适合人群:新手及有一定...
  • 有关灰度预测的基础学习资料PPT和文献,里面详细介绍了有关GM(1,1)模型的具体情况,还有有关变形的情况推广,整体对学习比较有帮助,如果喜欢可以关注一下博主谢谢!
  • matlab灰色关联算法,新手入门例程,附代码脚本
  • MATLAB实现灰度预测模型的源代码
  • 经典数学模型之——灰度预测模型

    千次阅读 2020-08-16 18:24:36
    灰度模型是一种强大的预测模型,是基于原始的数据进行累加计算求得一种规律在进行建模的模型,其强大在于将无序的原始序列可以转变为一种有序的生成指数序列,缺点在于它只适合于指数增长的预测,较为单一,GM(1,1)为...

    1.灰度模型GM(1,1)简介和适用条件

    ①GM(1,1)简介:

    灰度模型是一种强大的预测模型,是基于原始的数据进行累加计算求得一种规律在进行建模的模型,其强大在于将无序的原始序列可以转变为一种有序的生成指数序列,缺点在于它只适合于指数增长的预测,较为单一,GM(1,1)为一阶只含一个变量的微分方程模型。

    ②GM(1,1)适用条件和改进

    (1)适用条件:

    已知原始样本数量为 n n n,这里首先定义可容覆盖区间 Θ \Theta Θ如下:
    Θ = ( e − 2 n + 1 , e 2 n + 2 ) \Theta=( e^{-2\over n+1},e^{2\over n+2}) Θ=(en+12,en+22)
    我们现在假定原始数据样本 x x x如下所示:

    12345···n
    x ( 1 ) x(1) x(1) x ( 2 ) x(2) x(2) x ( 3 ) x(3) x(3) x ( 4 ) x(4) x(4) x ( 5 ) x(5) x(5)··· x ( n ) x(n) x(n)

    定义列序比 λ ( k ) \lambda(k) λ(k)如下:
    λ ( k ) = x ( k − 1 ) x ( k ) ( k = 2 , 3 , 4 , ⋅ ⋅ ⋅ n ) \lambda(k)={x(k-1)\over x(k)}(k=2,3,4,···n) λ(k)=x(k)x(k1)(k=2,3,4,n)
    若满足如下条件:
    ∀ k , λ ( k ) ∈ Θ ( k = 2 , 3 , 4 , ⋅ ⋅ ⋅ n ) \forall k, \lambda(k)\in \Theta (k=2,3,4,···n) k,λ(k)Θ(k=2,3,4,n)
    则我们称 x ( 0 ) x(0) x(0)是可以作为GM(1,1)的数据而被灰度预测的。

    (2)改进

    若上述 x x x不满足条件,则可以通过线性平移使得它满足条件:
    y = x + c y=x+c y=x+c
    λ 1 ( k ) = y ( k − 1 ) y ( k ) ( k = 2 , 3 , 4 , ⋅ ⋅ ⋅ n ) \lambda_1(k)={y(k-1)\over y(k)}(k=2,3,4,···n) λ1(k)=y(k)y(k1)(k=2,3,4,n)
    ∀ k , λ 1 ( k ) ∈ Θ ( k = 2 , 3 , 4 , ⋅ ⋅ ⋅ n ) \forall k, \lambda_1(k)\in \Theta (k=2,3,4,···n) k,λ1(k)Θ(k=2,3,4,n)

    ③GM(1,1)建模公式

    为方便读者建模使用,这里直接给出预测值模型公式,如读者想了解详细的建模过程,请查阅笔者给出的文献,下面我们记预测值记为 x 0 ( k ) x_0(k) x0(k)
    x c ( k + 1 ) = ( x ( 1 ) − b ^ a ^ ) e − a ^ k + b ^ a ^ ( k = 0 , 1 , 2 , 3 , 4 ⋅ ⋅ ⋅ ⋅ n − 1 ⋅ ⋅ ⋅ ) x_c(k+1)=(x(1)-{\hat{b}\over \hat{a}})e^{-\hat{a}k}+{\hat{b}\over \hat{a}}(k=0,1,2,3,4····n-1···) xc(k+1)=(x(1)a^b^)ea^k+a^b^(k=0,1,2,3,4n1)

    建模结束还需要进行残差和级别差检验,定义残差 ρ \rho ρ
    ρ ( k ) = x ( k ) − x 0 ( k ) \rho(k)=x(k)-x_0(k) ρ(k)=x(k)x0(k)
    定义级别差 ξ \xi ξ为:
    ξ ( k ) = 1 − 1 − 0.5 a 1 + 0.5 a λ ( k ) \xi(k)=1-{1-0.5a\over 1+0.5a}\lambda(k) ξ(k)=11+0.5a10.5aλ(k)
    其中
    x 0 ( k + 1 ) = x c ( k + 1 ) − x c ( k ) ( k = 1 , 2 , 3 , 4 ⋅ ⋅ ⋅ ⋅ n − 1 ⋅ ⋅ ⋅ ) x_0(k+1)=x_c(k+1)-x_c(k) (k=1,2,3,4····n-1···) x0(k+1)=xc(k+1)xc(k)(k=1,2,3,4n1)
    x 0 ( 1 ) = x ( 1 ) x_0(1)=x(1) x0(1)=x(1)

    x 1 ( k ) = ∑ i = 1 k x ( i ) ( k = 1 , 2 , 3 , 4 ⋅ ⋅ ⋅ n ) x^1(k)=\sum_{i=1}^kx(i)(k=1,2,3,4···n) x1(k)=i=1kx(i)(k=1,2,3,4n)
    z 1 ( k ) = 0.5 x 1 ( k ) + 0.5 x 1 ( k − 1 ) ( k = 2 , 3 , 4 ⋅ ⋅ ⋅ n ) z^1(k)=0.5x^1(k)+0.5x^1(k-1)(k=2,3,4···n) z1(k)=0.5x1(k)+0.5x1(k1)(k=2,3,4n)
    x ( k ) + a z 1 ( k ) = b ( k = 2 , 3 , 4 ⋅ ⋅ ⋅ n ) x(k)+az^1(k)=b(k=2,3,4···n) x(k)+az1(k)=b(k=2,3,4n)
    B = [ − z 1 ( 2 ) 1 − z 1 ( 3 ) 1 − z 1 ( 4 ) 1 ⋅ ⋅ ⋅ 1 − z 1 ( n ) 1 ] B=\begin{bmatrix} -z^1(2) & 1 \\ -z^1(3) &1 \\-z^1(4) &1\\··· &1\\-z^1(n) &1\end{bmatrix} B=z1(2)z1(3)z1(4)z1(n)11111
    Y = [ x ( 2 ) , x ( 3 ) , x ( 4 ) , x ( 5 ) ⋅ ⋅ ⋅ x ( n ) ] T Y=[x(2),x(3),x(4),x(5)···x(n)]^T Y=[x(2),x(3),x(4),x(5)x(n)]T
    [ a ^ , b ^ ] T = ( B T B ) − 1 B T Y [\hat{a},\hat{b}]^T=(B^TB)^{-1}B^TY [a^,b^]T=(BTB)1BTY
    ρ ( k ) < 0.2 \rho(k)<0.2 ρ(k)<0.2则认为达到一般要求,若 ρ ( k ) < 0.1 \rho(k)<0.1 ρ(k)<0.1,则认为达到较高要求。
    ξ ( k ) < 0.2 \xi(k)<0.2 ξ(k)<0.2则认为达到一般要求,若 ξ ( k ) < 0.1 \xi(k)<0.1 ξ(k)<0.1,则认为达到较高要求。

    ④GM(1,1)建模应用

    现在假设有如下数据集:让我们用灰度模型就行预测:
    假设2000-2004年某地每年小麦产量如下所示:

    年份20002001200220032004
    数量 101.5 101.5 101.5 102 102 102 102.3 102.3 102.3 102.2 102.2 102.2 102.0 102.0 102.0

    灰度模型预测过程如下:
    首先列出原始数据集 x x x
    x = ( 101.5 , 102 , 102.3 , 102.2 , 102.0 ) x=(101.5,102,102.3,102.2,102.0) x=(101.5,102,102.3,102.2,102.0)
    利用下列公式求出级比如下:
    λ ( k ) = x ( k − 1 ) x ( k ) ( k = 2 , 3 , 4 , ⋅ ⋅ ⋅ n ) \lambda(k)={x(k-1)\over x(k)}(k=2,3,4,···n) λ(k)=x(k)x(k1)(k=2,3,4,n)
    λ = ( 0.995098 , 0.997067 , 1.000978 , 1.001961 ) \lambda=(0.995098,0.997067,1.000978,1.001961) λ=(0.9950980.9970671.0009781.001961)
    而此时的 n n n取为5,这样 Θ \Theta Θ我们就可以确定下来了
    Θ = ( 0.7165 , 1.3965 ) \Theta=(0.7165,1.3965) Θ=(0.7165,1.3965)
    这样满足了 ∀ k , λ 1 ( k ) ∈ Θ ( k = 2 , 3 , 4 , ⋅ ⋅ ⋅ n ) \forall k, \lambda_1(k)\in \Theta (k=2,3,4,···n) k,λ1(k)Θ(k=2,3,4,n)
    也说明了 x ( 0 ) x(0) x(0)是可以作为GM(1,1)的数据而应用的。
    接下来我们需要求出 x 1 x^1 x1 B B B,由上可知由于:
    x 1 ( k ) = ∑ i = 1 k x ( i ) ( k = 1 , 2 , 3 , 4 ⋅ ⋅ ⋅ n ) x^1(k)=\sum_{i=1}^kx(i)(k=1,2,3,4···n) x1(k)=i=1kx(i)(k=1,2,3,4n)
    B = [ − z 1 ( 2 ) 1 − z 1 ( 3 ) 1 − z 1 ( 4 ) 1 ⋅ ⋅ ⋅ 1 − z 1 ( n ) 1 ] B=\begin{bmatrix} -z^1(2) & 1 \\ -z^1(3) &1 \\-z^1(4) &1\\··· &1\\-z^1(n) &1\end{bmatrix} B=z1(2)z1(3)z1(4)z1(n)11111
    故带入得到 x 1 x^1 x1 B B B
    x 1 = ( 101.5 , 203.5 , 305.8 , 408 , 510 ) x^1=(101.5,203.5,305.8,408,510) x1=(101.5,203.5,305.8,408,510)
    B = [ − 0.5 [ x 1 ( 1 ) + x 1 ( 2 ) ] 1 − 0.5 [ x 1 ( 2 ) + x 1 ( 3 ) ] 1 − 0.5 [ x 1 ( 3 ) + x 1 ( 4 ) ] 1 − 0.5 [ x 1 ( 4 ) + x 1 ( 5 ) ] 1 ] = [ − 152.5 1 − 254.65 1 − 356.9 1 − 459 1 ] B=\begin{bmatrix}-0.5[x^1(1)+x^1(2)]&1\\ -0.5[x^1(2)+x^1(3)]&1\\-0.5[x^1(3)+x^1(4)]&1\\-0.5[x^1(4)+x^1(5)]&1\end{bmatrix}=\begin{bmatrix}-152.5&1\\ -254.65&1\\ -356.9&1\\-459&1\\\end{bmatrix} B=0.5[x1(1)+x1(2)]0.5[x1(2)+x1(3)]0.5[x1(3)+x1(4)]0.5[x1(4)+x1(5)]1111=152.5254.65356.94591111
    Y = [ x ( 2 ) , x ( 3 ) , x ( 4 ) , x ( 5 ) ⋅ ⋅ ⋅ x ( n ) ] T = [ 101.5 102.3 102.2 102 ] Y=[x(2),x(3),x(4),x(5)···x(n)]^T=\begin{bmatrix}101.5 \\102.3\\102.2\\102\end{bmatrix} Y=[x(2),x(3),x(4),x(5)x(n)]T=101.5102.3102.2102
    那么:
    [ a ^ , b ^ ] T = ( B T B ) − 1 B T Y = [ 0.0000978234 102.1549 ] [\hat{a},\hat{b}]^T=(B^TB)^{-1}B^TY=\begin{bmatrix}0.0000978234\\ 102.1549 \end{bmatrix} [a^,b^]T=(BTB)1BTY=[0.0000978234102.1549]
    最后代入到我们的预测回归的方程中去:
    x c ( k + 1 ) = ( x ( 1 ) − b ^ a ^ ) e − a ^ k + b ^ a ^ = 1044177.400000786 e − 0.0000978234 k + 1044278.900000786 x_c(k+1)=(x(1)-{\hat{b}\over \hat{a}})e^{-\hat{a}k}+{\hat{b}\over \hat{a}}=1044177.400000786e^{-0.0000978234k}+1044278.900000786 xc(k+1)=(x(1)a^b^)ea^k+a^b^=1044177.400000786e0.0000978234k+1044278.900000786
    k k k=(1,2,3,4,5)分别与我们的原始值进行检测对比:-
    x c = ( 101.5 , 203.64 , 305.77 , 407.89 , 510 ) x_c=(101.5,203.64,305.77,407.89,510) xc=(101.5,203.64,305.77,407.89,510)
    x 0 ( k + 1 ) = x c ( k + 1 ) − x c ( k ) ( k = 1 , 2 , 3 , 4 ⋅ ⋅ ⋅ ⋅ n − 1 ⋅ ⋅ ⋅ ) x_0(k+1)=x_c(k+1)-x_c(k) (k=1,2,3,4····n-1···) x0(k+1)=xc(k+1)xc(k)(k=1,2,3,4n1)
    x 0 ( 1 ) = x ( 1 ) x_0(1)=x(1) x0(1)=x(1)
    x 0 x_0 x0为:
    x 0 = ( 102.0000 , 102.14 , 102.13 , 102.12 , 102.11 ) x_0=(102.0000 ,102.14,102.13 ,102.12 ,102.11) x0=(102.0000,102.14,102.13,102.12,102.11)
    下面进行残差和级比偏差检验决定模型是否符合:
    ρ ( k ) = x ( k ) − x 0 ( k ) \rho(k)=x(k)-x_0(k) ρ(k)=x(k)x0(k)
    ξ ( k ) = 1 − 1 − 0.5 a 1 + 0.5 a λ ( k ) \xi(k)=1-{1-0.5a\over 1+0.5a}\lambda(k) ξ(k)=11+0.5a10.5aλ(k)
    结果为:

    原始数据预测数据残差级比偏差
    101.5101.500
    102102.14-0.140.0050
    102.3102.130.170.0030
    102.2102.120.08-0.0009
    102.0102.11-0.11-0.0019

    可见精度较高,对应的MATLAB程序如下所示,如想替换原始数据可将x替换掉即可实现,但是要注意,一定要事先确认是否可灰度预测!:

    x=[101.5,102,102.3,102.2,102.0];
    [p,q]=size(x);
    sum1=1;
    for k=2:1:q
        lamuda(sum1)=x(k-1)/x(k);
        sum1=sum1+1
    end
    thrate1=exp(-2/(q+1));
    thrate2=exp(2/(q+1));
    for ll=1:1:q
        sum2=0
        for u=1:1:ll
            sum2=sum2+x(u)
        end
        x1(ll)=sum2;
    end
    for j=1:1:q-1
        B(j,1)=-0.5*(x1(j)+x1(j+1));
        B(j,2)=1;
    end
    Y=(x(2:1:q))'; 
    result=(inv(B'*B))*B'*Y;
    a1=result(1);b1=result(2);
    canshu1=(x(1)-b1/a1);
    canshu2=b1/a1;
    yucesum(1)=x(1);
    for g=1:1:q-1
    yucesum(g+1)=canshu1*(exp(-a1*g))+canshu2;
    end
    x0(1)=x(1);
    for r=1:1:q-1
        x0(r+1)=yucesum(r+1)-yucesum(r)
    end
    for o=1:1:q
    cancha(o)=(x(o)-x0(o))
    end
    for h=1:1:q-1
        jibipiancha(h+1)=1-((1-0.5*a1)/(1+0.5*a1))*lamuda(h)
    end
        
    
    

    参考文献:数学建模算法与应用/国防工业出版社(司守奎等)

    展开全文
  • matlab灰度预测识别代码,数学建模有关
  • 灰度预测模型

    千次阅读 2018-02-09 13:30:25
    概念灰色系统是相对于黑色系统和白色系统而言的。白色系统:系统的内部特征是完全已知的,即系统的信息是完全充分的。黑色系统:一个系统的内部信息对外界来说是一无所知的,只能通过他...指系统对于不同对象的灰度...

    概念

    灰色系统是相对于黑色系统和白色系统而言的。
    白色系统:系统的内部特征是完全已知的,即系统的信息是完全充分的。

    黑色系统:一个系统的内部信息对外界来说是一无所知的,只能通过他与外界的联系来加以观测研究。

    灰色系统:一部分信息是已知的,另一部分信息是未知的,系统内各因素之间具有不确定关系。其特点是‘少数据建模’,着重研究‘外延明确,内涵不明确’的对象。

    灰色系统具有相对性与广泛性。指系统对于不同对象的灰度不一样。作为实际问题,灰色系统在大千世界中是大量存在的,绝对的白色或黑色系统是很少的。

    灰色预测法:灰色预测法是一种对含有不确定因素的系统进行预测的方法 。它通过鉴别系统因素之间发展趋势的相异程度,即进行关联分析,并对原始数据进行生成处理来寻找系统变动的规律,生成有较强规律性的数据序列,然后建立相应的微分方程模型,从而预测事物未来发展趋势的状况。它用等时间距离观测到的反应预测对象特征的一系列数量值构造灰色预测模型,预测未来某一时刻的特征量,或者达到某一特征量的时间。

    基本思想

    基本思想是用原始数据组成原始序列(0),经累加生成法生成序列(1),它可以弱化原始数据的随机性,使其呈现出较为明显的特征规律。对生成变换后的序列(1) 建立微分方程型的模型即GM模型。GM(1,1) 模型表示1阶的、1个变量的微分方程模型。GM(1,1) 模型群中,新陈代谢模型是最理想的模型。这是因为任何一个灰色系统在发展过程中,随着时间的推移,将会不断地有一些随即扰动和驱动因素进入系统,使系统的发展相继地受其影响。用GM(1,1) 模型进行预测,精度较高的仅仅是原点数据(0)(n) 以后的1到2个数据,即预测时刻越远预测的意义越弱。而新陈代谢GM(1,1)模型的基本思想为越接近的数据,对未来的影响越大。也就是说,在不断补充新信息的同时,去掉意义不大的老信息,这样的建模序列更能动态地反映系统最新的特征,这实际上是一种动态预测模型。

    优点

    1、不需要大量样本。
    2、样本不需要有规律性分布。
    3、计算工作量小。
    4、定量分析结果与定性分析结果不会不一致。
    5、可用于短期、中长期预测。

    6、灰色预测准确度高。


    clear  
    x0=[89677,99215,109655,120333,135823,159878,182321,209407,246619,300670];  
    pre_num=10;  
    
    n=length(x0);  
    disp('级比检验')  
    lambda=x0(1:end-1)./x0(2:end);  
    range=minmax(lambda);  
    x1=cumsum(x0);  
      
    z=0.5*(x1(2:end)+x1(1:end-1));  
    Y=x0(2:end)';  
    B=[-z(1:end)' ones(n-1,1)];  
    u=B\Y; %u=inv(B'*B)*B'*Y  
    a=u(1);  
    b=u(2);  
    x0_pre=[x0(1) ones(1,n+pre_num-1)];  
    for k=1:n-1+pre_num  
        x0_pre(k+1)=(x0(1)-b/a)*(exp(-a*k)-exp(-a*(k-1)));  
    end  
      
    err=x0 - x0_pre(1:n);  
    epsilon=abs(err)./x0(1:n).*100;  
      
    disp('预测值')  
    disp(x0_pre)  
    disp('相对误差')  
    disp(epsilon)  
    
    t1=1999:2008;  
    t2=1999:2018;  
    plot(t1,x0,'d',t2,x0_pre,'LineWidth',2)  %原始数据与预测数据的比较  
    xlabel('年份')  
    ylabel('利润') 


    展开全文
  • 灰度预测MATLAB代码

    2022-03-18 13:50:05
    灰度预测MATLAB代码
  • MATLAB实现灰度预测模型的源代码.zip实际问题建模MATLAB源程序代码下载MATLAB实现灰度预测模型的源代码.zip实际问题建模MATLAB源程序代码下载MATLAB实现灰度预测模型的源代码.zip实际问题建模MATLAB源程序代码下载...
  • 1、关键词:python ,灰度预测模型 2、算法名称:灰度预测模型 3、算法概述介绍 灰色预测是用灰色模型GM(1,1)来进行定量分析的,通常分为以下几类:     (1) 灰色时间序列预测。用等时距观测到的反映预测对象...
  • 其具体的含义是:如果某一系统的全部信息已知为白色系统,全部信息未知为黑箱系统,部分信息已知,部分信息...例如物价系统,导致物价上涨的因素很多,但已知的却不多,因此对物价这一灰色系统的预测可以用灰色预测方法
  • 基于matlab灰度预测模型原始发电量预测发电量
  • MATLAB-灰度预测

    千次阅读 2019-08-21 00:29:40
    面将主要从三方面进行大致讲解,灰色预测概念及原理、灰色预测的分类及求解步骤、灰色预测的实例讲解。 一、灰色预测概念及原理: 1.概述: 关于所谓的“颜色”预测或者检测等,大致分为三色:黑、白、灰,在此以...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 20,545
精华内容 8,218
关键字:

灰度预测

友情链接: opengl(2).rar