白鲸优化算法(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)]);