💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
基于DBO、PSO、SSA、GOOSE算法优化ELM的电力负荷预测研究:多变量输入超前多步预测
⛳️赠与读者
👨💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。当哲学课上老师问你什么是科学,什么是电的时候,不要觉得这些问题搞笑。哲学是科学之母,哲学就是追究终极问题,寻找那些不言自明只有小孩子会问的但是你却回答不出来的问题。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能让人胸中升起一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它居然给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。
或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎
💥1 概述
基于DBO、PSO、SSA、GOOSE算法优化ELM的电力负荷预测研究:多变量输入超前多步预测
1. 研究背景与意义
电力负荷预测是电力系统规划、运行和控制的核心环节,其准确性直接影响电网安全稳定性和经济效益。随着能源结构转型,负荷数据呈现强非线性、非平稳性、多变量耦合等特征(如温度、湿度、风速等环境因素与历史负荷的交互影响)。传统统计方法(如回归分析、时间序列法)难以捕捉复杂关系,而深度学习模型虽精度较高,但计算成本大。极限学习机(ELM)因其训练速度快、泛化能力强成为理想选择,但其随机初始化的输入权重和隐藏层偏置易导致过拟合和预测波动。
优化ELM的必要性:通过元启发式算法优化ELM参数(输入权重、偏置),可显著提升模型鲁棒性和预测精度。DBO、PSO、SSA、GOOSE四种算法因其全局搜索能力、收敛速度和多模态处理能力被选为优化器,尤其适用于多变量输入的超前多步预测场景。
2. 理论基础
2.1 极限学习机(ELM)
ELM是一种单隐藏层前馈神经网络(SLFN),结构如图1所示:


2.2 优化算法原理
(1)蜣螂优化算法(DBO)
灵感源于蜣螂滚球、跳舞、觅食和偷窃行为:
-
滚球行为:模拟蜣螂利用天体线索导航,位置更新受光源强度影响:

其中 α 控制光强随机性,k 为曲率参数。
-
繁殖与偷窃:母蜣螂产卵位置优化(局部开发),小偷蜣螂抢夺粪球(全局探索)。
优势:收敛快、参数少,但需改进以避免局部最优(如引入Circle混沌映射初始化种群)。
(2)粒子群算法(PSO)
模拟鸟群协作寻优,每个粒子更新速度和位置:

特点:全局搜索能力强、易并行化,但惯性权重 ωω 需自适应调整以平衡探索与开发。
(3)麻雀搜索算法(SSA)
基于麻雀种群分工(发现者、跟随者、警戒者):
-
发现者更新:

其中 ST 为安全阈值,Q 为高斯随机数。
优势:收敛速度快、稳定性好,适合高维优化。
(4)鹅优化算法(GOOSE)
模拟鹅群警戒行为(单腿站立、石头掉落预警):
- 探索阶段:计算石头掉落时间 t=2h/g 和声音传播距离 d=vst,用于位置更新。
- 开发阶段:通过随机变量 rnd 和系数 coecoe 平衡局部搜索:

特点:自适应调整搜索分辨率,适合复杂工程优化。

3. 多变量输入超前多步预测技术框架
3.1 输入变量选择与预处理
- 变量:温度、湿度、风速、压强、降水量、历史负荷等。
- 预处理:归一化、缺失值填补、特征选择(如随机森林评估重要性)。
- 数据划分:训练集(70%)、验证集(15%)、测试集(15%)。
3.2 超前多步预测建模
采用直接多步预测法(Direct Multi-Step, DMS),构建多输出ELM模型:
- 输入:时间窗口 t−kt−k 至 tt 的多变量数据。
- 输出:未来 t+1t+1 至 t+ht+h 的负荷序列(hh 为预测步长)。
- 优化目标:最小化预测误差(如MSE):

3.3 优化ELM的流程
- 初始化:DBO种群映射为ELM参数(权重、偏置)。
- 适应度计算:以训练集MSE为适应度函数。
- 位置更新:按滚球、觅食等行为更新参数。
- 迭代优化:直至收敛或达到最大迭代次数。
- 预测:用优化后的参数构建ELM模型预测测试集。
- 其他算法:PSO优化ELM权重,SSA优化阈值,GOOSE优化偏置。
4. 算法优化ELM的实现与对比
4.1 优化策略与改进
| 算法 | 优化ELM的改进策略 | 作用 |
|---|---|---|
| DBO-ELM | 引入Circle混沌映射初始化 + Levy飞行策略 | 增强全局搜索,避免早熟收敛 |
| PSO-ELM | 自适应惯性权重 ωω + 边界处理 | 平衡探索与开发,提升稳定性 |
| SSA-ELM | 黄金正弦策略 + 警戒者比例调整 | 提高收敛精度 |
| GOOSE-ELM | 石头掉落机制 + 声音传播距离模型 | 增强局部开发能力 |
4.2 性能对比实验
实验设置:
- 数据:某地区电力负荷数据(温度、湿度等12变量)。
- 预测步长:超前6步(1小时间隔)。
- 评价指标:MAE、MAPE、RMSE、R²。
结果对比(测试集):
| 模型 | MAE | MAPE(%) | RMSE | R² | 训练时间(s) |
|---|---|---|---|---|---|
| 标准ELM | 18.39 | 7.92 | 24.15 | 0.204 | 0.8 |
| DBO-ELM | 4.49 | 1.96 | 8.07 | 0.881 | 12.3 |
| PSO-ELM | 3.34 | 1.46 | 5.65 | 0.937 | 9.5 |
| SSA-ELM | 6.70 | 2.92 | 9.10 | 0.860 | 8.2 |
| GOOSE-ELM | 3.21 | 1.40 | 5.32 | 0.942 | 7.8 |
分析:
- 精度:GOOSE-ELM最优(R²=0.942),因鹅群机制有效平衡探索与开发;PSO-ELM次之。
- 速度:SSA-ELM训练最快(8.2s),DBO因混沌映射计算成本较高。
- 稳定性:DBO-ELM改进后跳出局部最优能力增强,但SSA-ELM在噪声数据下波动较大。
可视化对比:
- 预测曲线(图3):GOOSE-ELM预测值与真实值贴合最紧密。
- 收敛曲线(图4):PSO与GOOSE收敛速度显著快于DBO和SSA。
5. 结论与展望
5.1 研究结论
- 多变量输入:温度、湿度等环境变量显著提升预测精度(R²提高>20%)。
- 算法优劣:
- GOOSE-ELM综合性能最佳(精度高、速度快),适合实时预测场景。
- PSO-ELM鲁棒性强,适用于高噪声数据。
- DBO-ELM需改进以降低计算成本。
- 超前多步预测:优化ELM在h=6h=6步内误差可控(MAPE<1.5%),但步长增加时精度下降。
5.2 未来方向
- 混合优化策略:结合DBO全局搜索与GOOSE局部开发,提升效率。
- 动态特征选择:根据负荷变化模式自适应调整输入变量。
- 融合深度学习:ELM+Attention机制处理长序列依赖。
- 工程应用:嵌入智能电表系统,实现实时负荷调度。
📚2 运行结果





部分代码:
%% 调用DBO优化ELM
[score,bestchrom,DBO_trace]=DBO(pop_size, max_iter,lb,ub,dim,fobj );
[~,DBO_optimze_pre]=fun(bestchrom,inputnum,hiddennum,TYPE,activation,vp_train,vt_train,vp_test,T_test,ps_output);
disp('…………DBO优化的ELM测试集误差指标…………')
[mae1,mape1,test_MSE1,rmse1,Rsq1,test_RPD1]=calc_error(T_test,DBO_optimze_pre);
fprintf('\n')
%% 调用PSO优化ELM
[score,bestchrom,PSO_trace]=PSO(pop_size, max_iter,lb,ub,dim,fobj );
[~,PSO_optimze_pre]=fun(bestchrom,inputnum,hiddennum,TYPE,activation,vp_train,vt_train,vp_test,T_test,ps_output);
disp('…………PSO优化的ELM测试集误差指标…………')
[mae1,mape1,test_MSE1,rmse1,Rsq1,test_RPD1]=calc_error(T_test,PSO_optimze_pre);
fprintf('\n')
%% 调用SSA优化ELM
[score,bestchrom,SSA_trace]=SSA(pop_size, max_iter,lb,ub,dim,fobj );
[~,SSA_optimze_pre]=fun(bestchrom,inputnum,hiddennum,TYPE,activation,vp_train,vt_train,vp_test,T_test,ps_output);
disp('…………SSA优化的ELM测试集误差指标…………')
[mae1,mape1,test_MSE1,rmse1,Rsq1,test_RPD1]=calc_error(T_test,SSA_optimze_pre);
fprintf('\n')
%% 调用GOOSE优化ELM
[score,bestchrom,GOOSE_trace]=GOOSE(pop_size, max_iter,lb,ub,dim,fobj );
[~,GOOSE_optimze_pre]=fun(bestchrom,inputnum,hiddennum,TYPE,activation,vp_train,vt_train,vp_test,T_test,ps_output);
disp('…………GOOSE优化的ELM测试集误差指标…………')
[mae1,mape1,test_MSE1,rmse1,Rsq1,test_RPD1]=calc_error(T_test,GOOSE_optimze_pre);
fprintf('\n')
% 画各个算法的收敛曲线图
figure
plot(DBO_trace)
hold on
plot(PSO_trace)
hold on
plot(SSA_trace)
hold on
plot(GOOSE_trace)
hold off
legend('DBO','PSO','SSA','GOOSE')
xlabel('迭代次数')
ylabel('MAPE(%)')
%% 比较算法预测值 来自公众号《荔枝科研社》
str={'真实值','标准ELM','DBO-ELM','PSO-ELM','SSA-ELM','GOOSE-ELM'};
figure('Units', 'pixels', ...
'Position', [300 300 860 370]);
plot(T_test,'--*','LineWidth',2.5)
hold on
plot(T_sim0,'-.p')
hold on
plot(DBO_optimze_pre,'^-','Color',[0.1339 0.7882 0.8588],'LineWidth',1)
hold on
plot(PSO_optimze_pre,'s-','Color',[0.666 0.2882 0.8588],'LineWidth',1)
hold on
plot(SSA_optimze_pre,'v-','Color',[0.30 0.888 0.18],'LineWidth',1)
hold on
plot(GOOSE_optimze_pre,'x-','Color',[0.66 0.59 0.125],'LineWidth',1)
legend(str)
set (gca,"FontSize",12,'LineWidth',1.2)
box off
legend Box off
xlabel('样本点')
ylabel('负荷值')
%% 比较算法误差
test_y = T_test;
Test_all = [];
y_test_predict = T_sim0;
[test_MAE,test_MAPE,test_MSE,test_RMSE,test_R2]=calc_error(y_test_predict,test_y);
Test_all=[Test_all;test_MAE test_MAPE test_MSE test_RMSE test_R2];
y_test_predict = DBO_optimze_pre;
[test_MAE,test_MAPE,test_MSE,test_RMSE,test_R2]=calc_error(y_test_predict,test_y);
Test_all=[Test_all;test_MAE test_MAPE test_MSE test_RMSE test_R2];
y_test_predict = PSO_optimze_pre;
[test_MAE,test_MAPE,test_MSE,test_RMSE,test_R2]=calc_error(y_test_predict,test_y);
Test_all=[Test_all;test_MAE test_MAPE test_MSE test_RMSE test_R2];
y_test_predict = SSA_optimze_pre;
[test_MAE,test_MAPE,test_MSE,test_RMSE,test_R2]=calc_error(y_test_predict,test_y);
Test_all=[Test_all;test_MAE test_MAPE test_MSE test_RMSE test_R2];
y_test_predict = GOOSE_optimze_pre;
[test_MAE,test_MAPE,test_MSE,test_RMSE,test_R2]=calc_error(y_test_predict,test_y);
Test_all=[Test_all;test_MAE test_MAPE test_MSE test_RMSE test_R2];
str={'真实值','标准ELM','DBO-ELM','PSO-ELM','SSA-ELM','GOOSE-ELM'};
str1=str(2:end);
str2={'MAE','MAPE','MSE','RMSE','R2'};
data_out=array2table(Test_all);
data_out.Properties.VariableNames=str2;
data_out.Properties.RowNames=str1;
disp(data_out)
%% 柱状图 MAE MAPE RMSE 柱状图适合量纲差别不大的
color= [0.66669 0.1206 0.108
0.1339 0.7882 0.8588
0.1525 0.6645 0.1290
0.8549 0.9373 0.8275
0.1551 0.2176 0.8627
0.7843 0.1412 0.1373
0.2000 0.9213 0.8176
0.5569 0.8118 0.7882
1.0000 0.5333 0.5176];
figure('Units', 'pixels', ...
'Position', [300 300 660 375]);
plot_data_t=Test_all(:,[1,2,4])';
b=bar(plot_data_t,0.8);
hold on
for i = 1 : size(plot_data_t,2)
x_data(:, i) = b(i).XEndPoints';
end
🎉3 参考文献
文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。
[1]徐晟,蒋铁铮,向磊.ELM算法在微电网超短期负荷预测的应用[J].电气开关, 2013, 51(3):5.DOI:10.3969/j.issn.1004-289X.2013.03.022.
[1]马立新,尹晶晶,郑晓栋.SOM特征提取与ELM在电力负荷预测中的应用[J].电力科学与工程, 2015, 31(5):5.DOI:10.3969/j.issn.16720792.2015.05.001.
[3]龙干,黄媚,方力谦,等.基于改进多元宇宙算法优化ELM的短期电力负荷预测[J].电力系统保护与控制, 2022, 50(19):99-106.
🌈4 Matlab代码、数据
资料获取,更多粉丝福利,MATLAB|Simulink|Python资源获取


1539

被折叠的 条评论
为什么被折叠?



