单目标应用:基于麻雀搜索算法SSA的小波神经网络WNN数据预测(隐藏层神经元个数可修改,提供MATLAB代码)

176 篇文章 16 订阅
144 篇文章 82 订阅
该文探讨了使用麻雀搜索算法(SSA)优化小波神经网络(WNN)以提高预测性能。WNN结合Morlet小波函数进行高程拟合,SSA用于调整网络参数,包括权重和小波函数的伸缩和平移因子。通过数值实验,展示SSA优化后的WNN在降低均方误差(MSE)方面的优秀表现,证明了这种方法在数据预测中的有效性。适当增加隐藏层神经元数量和迭代次数能进一步提升预测准确性。
摘要由CSDN通过智能技术生成

一、麻雀搜索算法SSA

在这里插入图片描述

二、小波神经网络WNN

WNN是一种以小波基函数为隐含层节点、激励函数误差反向传播的神经网络,如下图所示:

在这里插入图片描述

图中X为WNN的输入样本,Y为WNN的预测输出,ωij和ωjk分别为连接输入层与隐含层、隐含层与输出层的权值,ψ(x)为小波基函数。本文所采用的小波基函数为Morlet小波函数,其表达式为:
在这里插入图片描述

参考文献:钱建国,樊意广.基于改进小波神经网络的GPS高程拟合研究[J].大地测量与地球动力学,2022,42(03):253-257.DOI:10.14075/j.jgg.2022.03.007.

三、数值实验

小波神经网络WNN中待优化参数为:输入层与隐含层的权值、小波基函数的伸缩因子、小波基函数的平移因子、隐含层与输出层的权值。麻雀搜索算法SSA的个体由WNN中输入层与隐含层的权值、小波基函数的伸缩因子、小波基函数的平移因子、隐含层与输出层的权值构成,目标函数为真实值与预测值的均方误差MSE。构建结构为5-8-2的小波神经网络WNN,通过SSA优化WNN结构参数,使其MSE最小。

部分数据如下:前5列为输入,后2列为输出
在这里插入图片描述

部分代码如下:WNN隐藏层神经元个数可以自己修改

close all
clear
clc
global inputnum hiddennum outputnum TrainNum 
inputnum=5;%神经网络输入层神经元个数(输入样本维度)
hiddennum=8;%神经网络隐藏层神经元个数(可以自己修改) 
outputnum=2;%神经网络输出层神经元个数(输出样本维度)
TrainNum=100;%训练集数目 
%% 麻雀搜索算法SSA优化小波神经网络WNN,目标函数是均方误差MSE
SearchAgents_no=50; %  种群大小(可以修改)
Function_name='F1'; 
Max_iteration=1000; %  最大迭代次数(可以修改)
[lb,ub,dim,fobj]=fun_info(Function_name);% 在fun_info.m中可以查看上下限及目标函数
[fMin,bestX,SSA_curve]=SSA(SearchAgents_no,Max_iteration,lb,ub,dim,fobj);  %bestX是WNN的最优参数
save bestX bestX %保留SSA优化WNN得到的最佳参数
%%
save SSA_curve SSA_curve %保留曲线
%% 画出SSA优化WNN的均方误差随迭代次数的图
figure
semilogy(SSA_curve,'Color','g')
title('Objective space')
xlabel('Iteration');
ylabel('MSE');
%axis tight
grid on
box on
legend('SSA')
%%
display(['The best solution obtained by SSA is : ', num2str(bestX)]);
display(['The best optimal value of the objective funciton found by SSA is : ', num2str(fMin)]);

SSA求解结果如下:

MSE收敛图:
在这里插入图片描述

两个目标真实值与预测值:红色为真实值,蓝色为预测值,真实值与预测值用黑线连接,一一对应。

在这里插入图片描述

目标1真实值与预测值:

在这里插入图片描述

目标2真实值与预测值:

在这里插入图片描述

两个目标真实值与预测值的绝对误差MAE:
在这里插入图片描述

由此可见SSA优化WNN用于数据预测效果十分不错,设置合适的隐藏层神经元个数,加大种群规模和迭代次数效果更佳。

四、参考代码

参考代码见评论区或添加博主微信获取。

  • 2
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值