时序预测 | MATLAB实现IWOA-LSTM和LSTM时间序列预测(改进的鲸鱼算法优化长短期记忆神经网络)
目录
- 时序预测 | MATLAB实现IWOA-LSTM和LSTM时间序列预测(改进的鲸鱼算法优化长短期记忆神经网络)
- 预测效果
- 基本介绍
- 模型描述
- 程序设计
- 参考资料
预测效果
基本介绍
MATLAB实现IWOA-LSTM和LSTM时间序列预测(改进的鲸鱼算法优化长短期记忆神经网络)
模型描述
在鲸鱼寻找猎物的时候可能不知道猎物的具体位置在哪或者已经察觉到猎物离自己的位置不远时,鲸鱼需要整个群体通过不断地交流,使整个鲸鱼种群向距离猎物最近的鲸鱼个体位置( 当前的最优解) 移动,而目前离猎物最近的鲸鱼再以随机尝试的方式试图更加靠近猎物,从而使鲸鱼间接地不断靠近猎物。算法通过准反向学习方法来初始化种群,提高种群的多样性;然后将线性收敛因子修改为非线性收敛因子,有利于平衡全局搜索和局部开发能力;另外,通过增加自适应权重改进鲸鱼优化算法的局部搜索能力,提高收敛精度。
算法的基本步骤如下:
步骤1:实验数据分为训练集和测试集.
步骤2:把LSTM模型中学习率、训练次数、正则化率、神经网络隐藏层单元数目作为优化对象,初始化IWOA算法.
步骤3:计算每个个体的适应度值.以各鲸鱼对应参数构建LSTM神经网络模型,通过训练数据进行训练,测试数据进行预测,将预测结果的平均绝对百分比误差作为各鲸鱼的适应度值.
步骤4:根据鲸鱼的适应度值确定全局最优位置和局部最优位置.
步骤5:根据WOA算法式更新A和C.
步骤6:根据WOA算法的对鲸鱼的位置进行更新;
步骤7:判断终止条件.若满足终止条件,则输出最优解;否则,返回步骤3.
步骤8:用最优参数构建LSTM神经网络模型并进行预测.
程序设计
- 完整程序私信博主。
% Main loop
while t<Max_iter
for i=1:size(Positions,1)
% Return back the search agents that go beyond the boundaries of the search space
Flag4ub=Positions(i,:)>ub;
Flag4lb=Positions(i,:)<lb;
Positions(i,:)=(Positions(i,:).*(~(Flag4ub+Flag4lb)))+ub.*Flag4ub+lb.*Flag4lb;
% Calculate objective function for each search agent
% fitness=fobj(Positions(i,:));
[fitness,net] = fobj(Positions(i,:));
% Update the leader
if fitness<Leader_score % Change this to > for maximization problem
Leader_score=fitness; % Update alpha
Leader_pos=Positions(i,:);
end
end
参考资料
[1] Mirjalili S,Lewis A. The whale optimization algorithm[J]. Advancesin Engineering Software,2016,95( 5) : 51-67.
[2] https://blog.csdn.net/article/details/126086399?spm=1001.2014.3001.5501