• 灰色预测GM(1.1)模型及matlab程序负荷预测


    灰色GM(1.1)预测模型
    GM(1.1)模型由包含单一变量的一阶微分方程构成的模型,是灰色模型中最常用的模型。
    设有负荷变量为的原始数据列:
    3-1
    (3-1)
    生成一阶累加数据列:
    3-2
    (3-2)
    其中
    3-3
    (3-3)
    一阶微分方程的解呈指数增长形式,与序列增长规律相同,可认为序列满足下列方程:
    3-4
    (3-4)
    根据导数定义得:
    3-5
    (3-5)
    离散形式下,微分项可以表示为:
    3-6
    (3-6)
    其中,x为k和k+1时刻的平均值即。
    公式
    3-7
    (3-7)
    表示:
    3-8
    (3-8)
    得:
    k=1,+
    k=2,+ 3-9
    (3-9)
    ·······
    k=n-1,+
    将上述方程用矩阵形式表示为
    *[] 3-10
    (3-10)
    简记为:=BA
    式中:在这里插入图片描述
    =[, A=[], B=
    由上述方程可知,和B为已知量,A为待定参数,存在A和u两个变量和n-1个方程,由n-1>2可知,方程组无解。由最小二乘法得到近似解,式=BA可写为
    =BA+E 3-11
    (3-11)
    其中中,E为误差项
    使min||-B||=min(-B),利用矩阵求导公式,可得:
    3-12
    (3-12)
    将,代进原来的微分方程,得:
    3-13
    (3-13)
    解之可得:
    3-14
    (3-14)
    离散形式[令],得:
    3-15
    (3-15)
    上式称为GM(1,1)模型的时间函数模式,是GM(1,1)模型灰色预测的具体计算公式,对此公式做累减还原,得到原始数列的灰色预测模型为:
    3-16
    (3-16)

    负荷预测matlab程序算例如下:

    // 灰色预测g(1,1)模型,负荷预测
    clc
    close all
    clear all
    %% 原始数据
    %年份。。。。。。。。。。。。。。。。。。。。。。。。。。负荷
    S=[2000	4149	1149	2003.07 	4851	2396	208.15
    2001	4186	1273	2175.68 	5221	2500	222.28
    2002	4222	1360	2450.48 	5829	2651	246.57
    2003	4254	1447	2807.41 	6624	2739	299.53
    2004	4284	1524	3456.7  	8097	3353	389.2
    2005	4311	1595	4056.76 	9440	3821	391.98
    2006	4339	1687	4820.53 	10679	4117	446.2
    2007	4368	1739	5800.25 	13322	4676	511.09
    2008	4400	1820	6971.05 	15900	5805	545.88
    2009	4432	1914	7655.18 	17335	6212	609.22
    2010	4462	1966	9451.26 	21253	7989	700.51
    2011	4488	2051	11702.82	26150	9523	835.1
    2012	4504	2140	12948.88	28800	10573	867.7
    2013	4522	2210	14410.19	31930	11910	947.1
    2014	4542	2281	15714.63	34674	12000	1018.52
    2015	4566	2357	16923.78	36724	14489	1087.26
    2016	4592	2438	18499   	40400	16040	1182.5
    2017	4622	2524	20006.31	43424	17290	1293.98
    2018	4648	2604	22716.51	49013	18322	1428.77];
    %% 灰色模型
    Result2=ones(1,9);
    E2=ones(1,9);
    for i=1:9
     T=[S(11,7),S(12,7),S(13,7),S(14,7),S(15,7),S(16,7),S(17,7),S(18,7),S(19,7)];   
    A=[S(i,7),S(i+1,7),S(i+2,7),S(i+3,7),S(i+4,7),S(i+5,7),S(i+6,7),S(i+7,7),S(i+8,7),S(i+9,7)];
    syms a u;
    c=[a,u]';
    Ago=cumsum(A);
    n=length(A);
    for k=1:(n-1)
        Z(k)=(Ago(k)+Ago(k+1))/2;
    end
    Yn =A;%Yn为常数项向量
    Yn(1)=[]; %从第二个数开始,即x(2),x(3)...
    Yn=Yn';
    E=[-Z;ones(1,n-1)]';%累加生成数据做均值
    c=(E'*E)\(E'*Yn);%利用公式求出a,u
    c= c';
    a=c(1);%得到a的值
    u=c(2);%得到u的值
    F=[];
    F(1)=A(1);
    for k=2:(n+1)
        F(k)=(A(1)-u/a)/exp(a*(k-1))+u/a;%求出GM(1,1)模型公式
    end
    G=[];
    G(1)=A(1);
    for k=2:(n+1)
        G(k)=F(k)-F(k-1);%两者做差还原原序列,得到预测数据
    end
    result=G(11);
    Result2(i)=result;
    E2(i)=(result-T(i))/result;
    end
    %% 输出
    figure
    plot(2010:1:2018,T,'b:*',2010:1:2018,Result2,'r-o')
    legend('真实值','预测值')
    xlabel('年份')
    ylabel('用电量/亿千瓦时')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66

    matlab运行预测结果如下图:
    运行结果

  • 相关阅读:
    常见的设计模式
    【前端之旅】响应式布局及Bootstrap框架
    ModuleNotFoundError: No module named ‘Crypto.Cipher‘或‘Crypto 的终极解决方案
    微前端qiankun接入Vue和React项目
    (202402)多智能体MetaGPT入门2:AI Agent知识体系结构
    T — SQl 高阶语法之索引
    视频改字祝福 豪车装X系统源码uniapp前端源码
    7 月 2 日邀你来TD Hero 线上发布会
    积加ERP与金蝶云星空对接集成日期范围报告查询打通销售出库新增
    Linux下shell编写脚本指南
  • 原文地址:https://blog.csdn.net/weixin_47365903/article/details/121002719