找回密码
 立即注册
查看: 283|回复: 0

基于北方苍鹰算法优化LSTM(NGO-LSTM)研究(Matlab ...

[复制链接]
发表于 2023-2-14 16:14 | 显示全部楼层 |阅读模式
   个人主页:研学社的博客

     欢迎来到本博客  


  博主优势:   
博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
r/>
> 座右铭:行百里者,半于九十。
<br/>    本文目录如下:   r/> 目录
/>  1 概述
  2 运行结果
  3 参考文献
  4 Matlab代码、数据
1 概述

苍鹰是森林中肉食性猛禽。视觉敏锐,善于飞翔。白天活动。性甚机警,亦善隐藏。通常单独活动,叫声尖锐洪亮。在空中翱翔时两翅水平伸直,或稍稍向上抬起,偶尔亦伴随着两翅的煽动,但除迁徙期间外,很少在空中翱翔,多隐蔽在森林中树枝间窥视猎物,飞行快而灵活,能利用短圆的翅膀和长的尾羽来调节速度和改变方向、在林中或上或下,或高或低穿行于树丛问,并能加还飞行速度在树林中追捕猎物,有时也在林缘开阔地上空飞行或沿直线滑翔,窥视地面动物活动,一旦发现森林中的鼠类、野兔、雉类、榛鸡、鸠鸽类和其他中小形鸟类的猎物,则迅速俯冲,呈直线追击,用利爪抓捕猎获物。它的体重虽然比等中型猛禽要轻五分之一左右,但速度要快3倍以上,伸出爪子打击猎物时的速度为每秒钟22.5米,所以捕食的特点是猛、准、狠、快,具有较大的杀伤力,凡是力所能及的动物,都要猛扑上去,用一只脚上的利爪刺穿其胸膛,再用另一只脚上的利爪将其腹部剖开,先吃掉鲜嫩的心、肝、肺等内脏部分,再将鲜血淋漓的尸体带回栖息的树上撕裂后啄食。
LSTM是RNN的一种变种,可以有效地解决RNN的梯度爆炸或者消失问题。,如图一所示为LSTM的结构,LSTM网络由一个个的LSTM单元连接而成。


本文基于北方苍鹰算法优化LSTM(NGO-LSTM)研究,并用Matlab代码实现之。
2 运行结果








部分代码:
function  [error_test,pererror_test,MAPE_test,RMSE_test,NRMSE_test,MSE_test,R2_test,NSE_test,CA_test,MAE_test,R1_test,accuracy_test,WI_test, PFC_test,  LFC_test ,PPTS_test]= assessment_criteria(test_simu,data_test)
error_test = test_simu-data_test;      % 测试集绝对误差
pererror_test=error_test./data_test;     % 相对误差
MAPE_test = mean(abs(pererror_test))*100;     % 平均绝对百分误差(平均相对误差)
RMSE_test  = sqrt(mean((error_test).^2));   % 均方根误差     RMSE can provide a good measure of model performance for high flows
NRMSE_test=sqrt(sum((error_test).^2))./sqrt(sum((data_test-mean(data_test)).^2)); % 测试集绝对误差
MSE_test=mse(error_test); %均方误差  
R2_test = 1 - (sum(error_test.^2) / sum((test_simu - mean(data_test)).^2));  % 确定性系数(R2-R-Square)  R2<1,R2越接近1预测结果越优
NSE_test=1-sum(power(error_test,2))/sum(power(data_test-mean(data_test),2)); % 纳什系数
CA_test=(MAPE_test/100 + NRMSE_test +(1-NSE_test))/3;  % combined accuracy

% SSE_test=sum(error_test.^2);   %误差平方和SSE_test为
MAE_test=mean(abs(error_test));       %平均绝对误差   
r_test=corrcoef(data_test,test_simu);    %corrcoef计算相关系数矩阵,包括自相关和互相关系数
R1_test=r_test(1,2);  
% accuracy_test=length(find(abs(pererror_test)<0.3))/size(data_test,1)*100;  %正确率,相对误差小于20%
accuracy_test_1=length(find(abs(pererror_test)<0.05))/size(data_test,1)*100;  %正确率,相对误差小于20%
accuracy_test_2=length(find(abs(pererror_test)<0.1))/size(data_test,1)*100;  %正确率,相对误差小于20%
accuracy_test_3=length(find(abs(pererror_test)<0.2))/size(data_test,1)*100;  %正确率,相对误差小于20%
accuracy_test_4=length(find(abs(pererror_test)<0.3))/size(data_test,1)*100;  %正确率,相对误差小于20%
accuracy_test_5=length(find(abs(pererror_test)<0.4))/size(data_test,1)*100;  %正确率,相对误差小于20%
accuracy_test_6=length(find(abs(pererror_test)<0.5))/size(data_test,1)*100;  %正确率,相对误差小于20%
3 参考文献

部分理论来源于网络,如有侵权请联系删除。
[1]满建峰,侯磊,杨凯,刘珈铨,张鑫儒,伍星光,贺思宸.基于PSO-LSTM混合模型的天然气管道多用气节点负荷预测研究[J].油气与新能源,2022,34(06):91-100.
4 Matlab代码、数据

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-16 10:21 , Processed in 0.092442 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表