时序预测 | Matlab实现SO-CNN-BiGRU蛇群算法优化卷积双向门控循环单元时间序列预测
目录
- 时序预测 | Matlab实现SO-CNN-BiGRU蛇群算法优化卷积双向门控循环单元时间序列预测
- 预测效果
- 基本介绍
- 程序设计
- 参考资料
预测效果
基本介绍
时序预测 | Matlab实现SO-CNN-BiGRU蛇群算法优化卷积双向门控循环单元时间序列预测,运行环境Matlab2020b及以上。优化正则化率、学习率、隐藏层单元数。
1.Matlab实现SO-CNN-BiGRU蛇群算法优化卷积双向门控循环单元时间序列预测;
2.单变量时间序列预测;
3.多指标评价,评价指标包括:R2、MAE、MSE、RMSE等,代码质量极高;
4.鲸鱼算法优化参数为:学习率,隐含层节点,正则化参数;
5.excel数据,方便替换,运行环境2020及以上。
程序设计
- 完整源码和数据获取方式:私信博主回复Matlab实现SO-CNN-BiGRU蛇群算法优化卷积双向门控循环单元时间序列预测;
%% 获取最优种群for j = 1 : SearchAgentsif(fitness_new(j) < GBestF)GBestF = fitness_new(j);GBestX = X_new(j, :);endend%% 更新种群和适应度值pop_new = X_new;fitness = fitness_new;%% 更新种群 [fitness, index] = sort(fitness);for j = 1 : SearchAgentspop_new(j, :) = pop_new(index(j), :);end%% 得到优化曲线curve(i) = GBestF;avcurve(i) = sum(curve) / length(curve);
end%% 得到最优值
Best_pos = GBestX;
Best_score = curve(end);%% 得到最优参数
NumOfUnits =abs(round( Best_pos(1,3))); % 最佳神经元个数
InitialLearnRate = Best_pos(1,2) ;% 最佳初始学习率
L2Regularization = Best_pos(1,1); % 最佳L2正则化系数
%
inputSize = k;
outputSize = 1; %数据输出y的维度
% 参数设置
opts = trainingOptions('adam', ... % 优化算法Adam'MaxEpochs', 20, ... % 最大训练次数'GradientThreshold', 1, ... % 梯度阈值'InitialLearnRate', InitialLearnRate, ... % 初始学习率'LearnRateSchedule', 'piecewise', ... % 学习率调整'LearnRateDropPeriod', 6, ... % 训练次后开始调整学习率'LearnRateDropFactor',0.2, ... % 学习率调整因子'L2Regularization', L2Regularization, ... % 正则化参数'ExecutionEnvironment', 'gpu',... % 训练环境'Verbose', 0, ... % 关闭优化过程'SequenceLength',1,...'MiniBatchSize',10,...'Plots', 'training-progress'); % 画出曲线
参考资料
[1] https://blog.csdn.net/kjm13182345320/article/details/128577926?spm=1001.2014.3001.5501
[2] https://blog.csdn.net/kjm13182345320/article/details/128573597?spm=1001.2014.3001.5501