白鲸优化算法(BWO)优化LSTM

白鲸优化算法(BWO)是一种启发式优化算法,旨在通过模拟白鲸的群体行为来解决优化问题。该算法具有全局搜索能力和快速收敛速度,可以用于解决各种复杂的优化问题。

BWO优化LSTM可以用于调整LSTM模型的参数或结构,以找到最优的模型配置,从而提高模型的性能。

实验结果如下:

部分主函数代码如下:

%% 清除内存、清除屏幕
clc
clear
%% 导入特征数据、当天的风速数据
data = xlsread('特征序列及实际值.xlsx');
Features   = data(1:18,:);                             %% 特征输入  :75天,每天24小时,每小时一个采样点,共计75*24=1800小时,18个特征数据
Wind_data  = data(19,:);                               %% 实际值输出:75天,每天24小时,每小时一个采样点,共计75*24=1800小时的风速数据
%%  数据平铺为4-D
LP_Features =  double(reshape(Features,18,24,1,75));   %% 特征数据格式为18*24*1*75,分别对应18特征24小时,75天
LP_WindData  = double(reshape(Wind_data,24,1,1,75));   %% 实际数据格式为24*1*1*75 ,分别对应24小时,75天
%% 格式转换为cell
NumDays  = 75;                                         %% 数据总天数为 75天
for i=1:NumDays
    FeaturesData{1,i} = LP_Features(:,:,1,i);
end
for i=1:NumDays
    RealData{1,i} = LP_WindData(:,:,1,i);
end
%% 划分数据
XTrain = FeaturesData(:,1:73);                         %% 训练集输入为 1-73   天的特征
YTrain = RealData(:,2:74);                             %% 训练集输出为 2-74天 的实际值                
XTest  = cell2mat(FeaturesData(: , 74));               %% 测试集输入第  74    天的特征
Ytest  = cell2mat(RealData(: , 75));                   %% 测试集输出为第 75天 的实际值
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% 优化算法信息 
SearchAgents_no = 2;      %% 搜索个体的数量
Max_iter = 20;            %% 最大迭代次数
lb = [0.001, 2, 50];      %% 变量下界(学习率,卷积核大小,神经元个数)
ub = [0.01, 5, 60];       %% 变量上界(学习率,卷积核大小,神经元个数)
dim = 3;                  %% 有几个需要优化的参数就是几维
fobj = @objectiveFunction;%% 目标函数
%% 白鲸算法BWO优化超参数 
[Leader_score, Leader_pos, Convergence_curve, bestPred, bestNet, bestInfo] = BWO(SearchAgents_no, Max_iter, lb, ub, dim, fobj);
%% 优化结果导出
Best_Cost = Leader_score;       %% 最佳适应度
Best_Solution = Leader_pos;     %% 最佳网络参数
bestPred = bestPred;            %% 最佳预测值
bestNet = bestNet;              %% 最佳网络
bestInfo = bestInfo;            %% 最佳训练曲线
% 显示优化结果
disp(['白鲸BWO优化所得参数分别为' num2str(Leader_pos)]);