单目标应用:基于蜣螂优化算法DBO的小波神经网络WNN数据预测(隐藏层神经元个数可修改)

作品简介

一、蜣螂优化算法DBO

蜣螂优化算法(Dung beetle optimizer,DBO)由Jiankai Xue和Bo Shen于2022年提出,该算法主要受蜣螂的滚球、跳舞、觅食、偷窃和繁殖行为的启发所得。http://t.csdn.cn/53V70


二、小波神经网络WNN

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

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

三、数值实验

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

部分数据如下:前5列为输入,后2列为输出

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

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

DBO求解结果如下:

MSE收敛图:


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

目标1真实值与预测值:


目标2真实值与预测值:


两个目标真实值与预测值的绝对误差MAE:


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

四、参考代码



创作时间: