技术领域
[0001] 本发明属于电气自动化领域,具体涉及一种基于误差补偿的短期煤价预测方法及系统。
相关背景技术
[0002] 随着经济技术的发展和人们生活水平的提高,电能已经成为了人们生产和生活中必不可少的二次能源,给人们的生产和生活带来了无尽的便利。因此,保障电能的稳定可靠供应,就成为了电力系统最重要的任务之一。
[0003] 目前,世界范围内的发电厂大部分依旧是火力发电厂。而在火力发电厂中,以煤炭为主要燃料的火电厂又占绝大多数。因此,保证以煤炭为主要燃料的火电厂的安全稳定运行,是电力系统的重中之重。
[0004] 以煤炭为主要燃料的火电厂在运营过程中,是极其依赖煤炭的。对煤炭进行事先购买和事先存储,不仅能够保证火电厂的安全平稳运行,也能够提高火电厂的运行效率和运行可靠性。因此,以煤炭为主要燃料的火电厂,对煤炭价格就变得较为敏感。对煤炭价格的准确预测,能够帮助火电厂提前进行运行计划和运营计划(包括购买煤炭的计划)的制定,从而提高火电厂的整体运行效率。
[0005] 目前,随着环境问题的日益严重,越来越多的新能源发电系统开始并入电网发电。新能源发电系统的并网,使得电力系统出力的随机性更大,进而也使得煤价的波动更加剧烈和频繁。目前,针对煤价的短期预测方案,还是基于以往的小规模新能源并网时的预测方案;这类预测方案在考虑新能源发电系统时,由于新能源发电系统的规模较小,因此往往进行了对应的简化,这使得这类预测方案已经无法适用于现今的大规模新能源并网的情况。
因此,现有的煤价预测方案,往往存在可靠性较差和精确性较差的问题。
具体实施方式
[0082] 本发明提供的这种基于误差补偿的短期煤价预测方法,包括如下步骤:
[0083] S1.获取目标区域的历史煤炭价格数据信息和煤炭价格影响因素数据信息;具体包括如下步骤:
[0084] 按日,获取目标区域的历史煤炭价格数据信息;
[0085] 按月,获取目标区域的煤炭价格影响因素数据信息,包括目标区域煤炭需求量数据信息、目标区域煤炭供给量数据信息、目标区域煤炭进口量数据信息和目标区域煤炭出口量数据信息;
[0086] S2.对步骤S1获取的数据信息进行预处理,得到历史煤价序列和影响因素序列;具体包括如下步骤:
[0087] 对按日获取的目标区域的历史煤炭价格数据信息不进行预处理,直接作为历史煤价序列;
[0088] 采用如下步骤对按月获取的目标区域的煤炭价格影响因素数据信息进行预处理:
[0089] 读取任一煤炭价格影响因素的第i月数据Ei和第i+1月数据Ei+1;
[0090] 采用如下算式计算第i月的插值步长si:
[0091]
[0092] 式中ni为第i月的天数;
[0093] 根据插值步长si,采用如下算式对第i月中的数据进行插值:
[0094] dh=(h‑1)×si+Ei
[0095] 式中dh为第i月中第h天的对应煤炭价格影响因素的数据,h=1,2,...,ni;
[0096] 采用以上步骤对所有的煤炭价格影响因素数据信息进行预处理,从而得到与历史煤价序列长度相等的影响因素序列;
[0097] S3.对步骤S2得到的影响因素序列和历史煤价序列之间进行相关性分析,选定若干主要影响因素,并构成主要影响因素序列;具体包括如下步骤:
[0098] 计算影响因素序列中各个影响因素与历史煤价序列之间的皮尔逊相关性系数;
[0099] 选择皮尔逊相关性系数大于设定值(优选为0.4)的影响因素,作为主要影响因素,并构成主要影响因素序列;
[0100] S4.对步骤S2得到的历史煤价序列进行变分模态分解(VMD),得到若干个IMF子信号;具体包括如下步骤:
[0101] 设定变分模态分解参数,包括分解模态个数K(优选为10)和惩罚系数α(优选为2000);
[0102] 采用希尔伯特变换、梯度平方准则和高斯平滑度,计算K个模块所对应的带宽,通过建立约束固定各模态频域内的带宽:
[0103]
[0104] 式中{uk}为分解后的IMF子信号的数学表达式序列;{ωk}为分解后的IMF子信号的中心频率序列; 为对时刻t的微分;δ(t)为狄拉克函数;uk(t)为分解后的IMF子信号在t时刻的数学表达式; 为2范数的平方;Sp为历史煤价序列;j为虚数单位;ωk为信号的中心频率;
[0105] 采用拉格朗日乘子,将有约束问题转化为无约束问题,得到解析解:
[0106]
[0107] 式中L({uk},{ωk},{λ})为拉格朗日函数;<>为变量乘积的平均值;{λ}为引入的拉格朗日乘子集合;λ(t)为t时刻的拉格朗日乘子状态;α为二次惩罚因子;
[0108] 采用求解器迭代更新模态参量:选择交替方向乘子法计算模态参量,得到最优解;然后通过傅里叶变换,完成数据频域‑时域的转化;IMF与中心频率的更新过程满足如下表达式:
[0109]
[0110]
[0111] 式中 分别为 Sp(t)、ui(t)、λ(t)的傅里叶变换形式; 分别为 ωk的第n+1次迭代结果。
[0112] 通过以上步骤,将历史煤价序列分解为K个IMF子信号;
[0113] S5.将步骤S4得到的IMF子信号和步骤S2得到的历史煤价序列合并和处理,得到训练数据集;具体包括如下步骤:
[0114] 将步骤S4得到的IMF子信号和步骤S2得到的历史煤价序列,以二维数组的形式进行合并,然后进行最大‑最小归一化处理,得到训练数据集;
[0115] S6.采用步骤S5得到的训练数据集,对Informer模型进行训练,得到短期煤价预测模型;具体包括如下步骤:
[0116] 将训练数据集逐条输入Informer模型中,经过编码器和解码器处理后,将解码器结果通过全连接层输出,得到预测结果;
[0117] Informer模型的编码器与解码IQ采用稀疏注意力机制:通过稀疏性评价判断注意力分布,确定贡献大于设定值的键值对(key,value,pair)的分布区间,从而忽略贡献小于设定值的键值对,提高算法效率;其中,采用KL散度评价第i个query稀疏性:
[0118]
[0119] 式中M(qi,k)为qi、k间散度去除常数值的结果;qk为第k个query;kj为第j个key;d为输入的维度;LK为key矩阵的行数;
[0120] 若qi能够得到大于设定值的M(qi,k),则判定前i‑1个键值对将有更大的概率获取更大的贡献权重;
[0121] 数据进入Informer模型的编码器部分后,采用若干层的数据蒸馏操作,不断使稀疏注意力机制作用于数据上,对贡献值越高的键值对赋予越高的权重,从而不断凸显时序特征;每一层的蒸馏操作均在上一层结果的基础上进行,相邻两层间的蒸馏操作表示为:
[0122]
[0123] 式中 为第j+1层的数据蒸馏层; 表示对 的全部操作;Conv()为一aa
维卷积函数;ELU(aa)为激活函数,aa≥0则ELU(aa)=e ‑1,aa<0则ELU(aa)=aa;MaxPool()为最大池化操;
[0124] 完成数据蒸馏后,数据编码器上传至解码器;解码器为一个序列生成器,包括两个相同的多头注意力层;编码器的输入向量为:
[0125]
[0126] 式中 为输入解码器的向量;Concat()为矩阵拼接操作; 为从输入序列中选择长度为Ltoken的序列; 为预测对象的0占位符;Ltoken为已知序列的长度;Ly为预测序列的长度;dmodel为模型维度;
[0127] 解码器的输出取决于设置的输出维度,由隐藏多头注意力机制生成;
[0128] 通过全连接层整合解码器的计算结果并输出,作为对应的IMF子信号的预测结果;
[0129] 通过以上步骤得到各个IMF子信号的预测结果,并与对应的时间戳相加,在进行反归一化,得到短期煤价预测模型的预测结果;
[0130] S7.根据步骤S6得到的短期煤价预测模型的输出与历史煤价序列的误差,构建误差序列;
[0131] S8.将步骤S7得到的误差序列和步骤S3得到的主要影响因素序列合并为误差训练集并处理,采用处理后的误差训练集对LSTM模型进行训练,得到短期煤价预测误差模型;具体包括如下步骤:
[0132] 将步骤S7得到的误差序列e和步骤S3得到的主要影响因素序列,以二维数组的形式合并为误差训练集并预处理,其中主要影响因素作为特征,误差作为标签;
[0133] 将处理后的误差训练集输入到LSTM模型中,预测未来的数值误差;LSTM模型的计算过程表示为:
[0134] it=σ(Wiixt+bii+Whiht‑1+bhi)
[0135] ft=σ(Wifxt+bif+Whfht‑1+bhf)
[0136] gt=tanh(Wigxt+big+Whght‑1+bhg)
[0137] ot=σ(Wioxt+bio+Whoht‑1+bho)
[0138] ct=ft⊙ct‑1+it⊙gt
[0139] ht=ot⊙tanh(ct)
[0140] 式中it为输入门的输出;σ()为sigmod激活函数;Wii为输入门的输入权重;xt为t时刻的输入;bii为输入门偏置;Whi为隐藏状态与输入门间的权重;ht‑1为t‑1时刻的隐藏状态;bhi为隐藏状态与输入门间的偏置;ft为遗忘门的输出;Wif为输入门与遗忘门间的权重;bif为输入门与遗忘门间的偏置;Whf为隐藏状态与遗忘门间的权重;bhf为隐藏状态与遗忘门间的偏置;gt为神经元的输出;Wig为输入门与神经元间的权重;big为输入门与神经元间的偏置;Whg为隐藏状态与神经元间的权重;bhg为隐藏状态与神经元间的偏置;ot为输出门的输出;Wio为输入门与输出门间的权重;bio为输入门与输出门间的偏置;Who为隐藏状态与输出门间的权重;bho为隐藏状态与输出门间的偏置;ct为t时刻的单元状态;⊙为矩阵元素相乘;
[0141] 训练完毕后,得到短期煤价预测误差模型;
[0142] S9.根据步骤S6得到的短期煤价预测模型和步骤S7得到的短期煤价预测误差模型,进行实际的基于误差补偿的短期煤价预测;具体包括如下步骤:
[0143] 进行实际的基于误差补偿的短期煤价预测时,将短期煤价预测误差模型的预测结果,与短期煤价预测模型的预测结果进行对应元素的相加,得到的最终结果为实际的基于误差补偿的短期煤价预测结果。
[0144] 以下结合一个实施例,对本发明方法的效果进行说明:
[0145] 本次实验选取某省某市2009.01.02‑2023‑08.05的日度煤价数据及相应时段的月度全国煤炭需求量、月度全国煤炭供给量、月度全国煤炭进口量及月度全国煤炭出口量为研究依据。实验以常规预测模型:GRU、BiLSTM、以及未经误差补偿的Informer为对比算法,对本发明提出的模型(表示为VMD‑Informer‑LSTM预测模型)进行验证。实验中,对比算法的2
数据同样经过VMD处理。之后,选择平均绝对误差(MAE),均方根误差(RMSE),拟合度(R)评估标准。
[0146] 首先,计算插值后各影响因素与煤价的PCC(皮尔逊相关系数),结果汇总如表1所示:
[0147] 表1影响因素与煤价的皮尔逊相关系数值示意表
[0148]影响因素 全国煤炭需求量 全国煤炭供给量 全国煤炭进口量 全国煤炭出口量PCC 0.6743 ‑0.5471 ‑0.1196 0.0742
[0149] 考虑到PCC的数值特性,选择PCC绝对值大于0.4的影响因素为主要影响因素,即,全国煤炭需求量、全国煤炭供给量为主要影响因素;
[0150] 实验中,全部模型或算法共输出366个预测结果,计算对应指标数值,并汇总如表2所示:
[0151] 表2指标数值汇总示意表
[0152]
[0153] 由表2知,Informer的加入明显提升了预测结果的精度:在不考虑误差补偿的前提2
下,Informer的R 分别高于BiLSTM模型以及GRU模型1.09%以及5.79%,MAE和RMSE较BiLSTM模型以及GRU模型分别降低了0.6元、3.54元和2.29元、9.15元。使用LSTM进行误差补
2
偿后,Informer输出结果的精度也有显著提高:相较于未补偿前,R 增加了1.39%,MAE和RMSE分别降低了0.70元和6.29元。综上可知,本发明方法的预测性能更加优越。
[0154] 如图3所示为本发明系统的功能模块示意图:本发明公开的这种实现所述基于误差补偿的短期煤价预测方法的系统,包括数据获取模块、数据处理模块、相关性分析模块、分解模块、合并模块、预测模型模块、误差构建模块、误差模型模块和煤价预测模块;数据获取模块、数据处理模块、相关性分析模块、分解模块、合并模块、预测模型模块、误差构建模块、误差模型模块和煤价预测模块依次串联;数据获取模块用于获取目标区域的历史煤炭价格数据信息和煤炭价格影响因素数据信息,并将数据上传数据处理模块;数据处理模块用于根据接收到的数据,对获取的数据信息进行预处理,得到历史煤价序列和影响因素序列,并将数据上传相关性分析模块;相关性分析模块用于根据接收到的数据,对影响因素序列和历史煤价序列之间进行相关性分析,选定若干主要影响因素,并构成主要影响因素序列,并将数据上传分解模块;分解模块用于根据接收到的数据,对历史煤价序列进行变分模态分解,得到若干个IMF子信号,并将数据上传合并模块;合并模块用于根据接收到的数据,将步IMF子信号和历史煤价序列合并和处理,得到训练数据集,并将数据上传预测模型模块;预测模型模块用于根据接收到的数据,采用训练数据集,对Informer模型进行训练,得到短期煤价预测模型,并将数据上传误差构建模块;误差构建模块用于根据接收到的数据,根据步短期煤价预测模型的输出与历史煤价序列的误差,构建误差序列,并将数据上传误差模型模块;误差模型模块用于根据接收到的数据,将误差序列和主要影响因素序列合并为误差训练集并处理,采用处理后的误差训练集对LSTM模型进行训练,得到短期煤价预测误差模型,并将数据上传煤价预测模块;煤价预测模块用于根据接收到的数据,根据短期煤价预测模型和短期煤价预测误差模型,进行实际的基于误差补偿的短期煤价预测。