发布时间:2022-08-19 12:31
圆圈搜索算法(Circle Search Algorithm,CSA)由Mohammed H. Qais等人于2022年提出,该算法由圆上正切关系启发所得,思路新颖,简单高效。
其中,角度 θ 在CSA的勘探和开发中起着重要作用,其计算公式如下:
LSTM(Long Short Term Memory)是具有记忆长短期信息的能力的神经网络,传统的训练方式采用梯度下降。然而,梯度下降方法容易陷入局部最优,群智能优化算法具有较强的全局搜索能力。本文采用圆圈搜索算法(CSA)直接优化LSTM的权值和阈值,提高LSTM的求解精度。
本文采用的数据序列为:
data=exp(sin(0:0.02:30));%数据集(可以根据自己的需求更改)
训练集和测试集各占数据集的70%和30%。CSA优化LSTM的目标函数为训练集上真实值和预测值的均方误差(MSE),CSA种群大小为50,最大迭代次数为100,加大种群和迭代次数效果更佳。
%% 圆圈搜索算法CSA优化LSTM的权值和阈值实现数据预测。
close all
clear
clc
global net K XTrain YTrain XTest YTest mappingy method
data=exp(sin(0:0.02:30));%数据集(可以根据自己的需求更改)
Dim=sum(sum(K(:,1).*K(:,2)));%维度
lb=-5;%下界
ub=5;%上界
fobj=@Fun;%计算训练集上的函数值(真实值与预测值的均方误差MSE)
SearchAgents_no=50; % 种群大小(可以修改)
Max_iteration=100; % 最大迭代次数(可以修改)
[fMin,bestX,CSA_curve]=CSA(SearchAgents_no,Max_iteration,lb,ub,Dim,fobj); %圆圈搜索算法CSA优化LSTM的权值阈值 bestX是最优权值阈值
o=TestFun(bestX);%在测试集上预测
o1=TrainFun(bestX);%在训练集上预测
save bestX bestX %保留圆圈搜索算法CSA优化LSTM得到的最优参数
save CSA_curve CSA_curve %保留
%% 画出圆圈搜索算法CSA优化LSTM的均方误差随迭代次数的图
figure
semilogy(CSA_curve,'Color','g')
xlabel('Iteration');
ylabel('MSE');
legend('CSA')
%%
display(['The best solution obtained by CSA is : ', num2str(bestX)]);
display(['The best optimal value of the objective funciton found by CSA is : ', num2str(fMin)]);%fMin越小说明圆圈搜索算法CSA优化LSTM效果越好
测试集上真实值和预测值绝对误差(MAE):
由此可见,CSA优化LSTM的权值和阈值用于时间序列预测可行有效,加大迭代次数效果更佳。
完整MATLAB代码见博主微信朋友圈。