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