SSA-LSTM(麻雀算法优化长短期记忆神经网络)时间序列预测,运行环境matlab2018及以上。
- 麻雀搜索算法是一种群智能优化算法,主要是受麻雀的觅食行为和反捕食行为的启发而提出的,其仿生原理如下:
- 在麻雀觅食的过程中,分为发现者和加入者,发现者在种群中负责寻找食物并为整个麻雀种群提供觅食区域和方向,而加入者则是利用发现者来获取食物。为了获得食物,麻雀通常可以采用发现者和加入者这两种行为策略进行觅食。种群中的个体会监视群体中其它个体的行为,并且该种群中的攻击者会与高摄取量的同伴争夺食物资源,以提高自己的捕食率。此外,当麻雀种群受到捕食者的攻击时会做出反捕食行为。 仿照麻雀的这些行为,我们设计了该算法进行函数最优化求解。具体求解方式如下:
(1)在SSA中,具有较好适应度值的发现者在搜索过程中会优先获取食物。此外,因为发现者负责为整个麻雀种群寻找食物并为所有加入者提供觅食的方向。因此,发现者可以获得比加入者更大的觅食搜索范围。
(2)对于加入者,如前面所描述,在觅食过程中,一些加入者会时刻监视着发现者。或者同发现者进行食物的争夺或者围绕在发现者周围进行觅食。
(3)当整个麻雀种群受到捕食者威胁时或者意识到危险时,会进行反捕食行为:处在种群外围的麻雀极其容易受到捕食者的攻击,需要不断地调整位置以此来获得更好的位置。与此同时,处在种群中心的麻雀会去接近它们相邻的同伴,这样就可以尽量减少它们的危险区域。- 长短期记忆网络——通常被称为 LSTM,是一种特殊的 RNN,能够学习长期依赖性。由 Hochreiter 和 Schmidhuber(1997)提出的,并且在接下来的工作中被许多人改进和推广。LSTM 在各种各样的问题上表现非常出色,现在被广泛使用。
for t = 1 : M
[ ~, sortIndex ] = sort( pFit );% Sort.从小到大
[fmax,B]=max( pFit );
worse= x(B,:);
r2=rand(1);
%%%%%%%%%%%%%5%%%%%%这一部位为发现者(探索者)的位置更新%%%%%%%%%%%%%%%%%%%%%%%%%
if(r2<0.8)%预警值较小,说明没有捕食者出现
for i = 1 : pNum %r2小于0.8的发现者的改变(1-20) % Equation (3)
r1=rand(1);
x( sortIndex( i ), : ) = pX( sortIndex( i ), : )*exp(-(i)/(r1*M));%对自变量做一个随机变换
x( sortIndex( i ), : ) = Bounds( x( sortIndex( i ), : ), lb, ub );%对超过边界的变量进行去除
fit( sortIndex( i ) )=fitness(x(sortIndex( i ),:),P_train,T_train,P_test,T_test);
end
else %预警值较大,说明有捕食者出现威胁到了种群的安全,需要去其它地方觅食
for i = 1 : pNum %r2大于0.8的发现者的改变
x( sortIndex( i ), : ) = pX( sortIndex( i ), : )+randn(1)*ones(1,dim);
x( sortIndex( i ), : ) = Bounds( x( sortIndex( i ), : ), lb, ub );
fit( sortIndex( i ) )=fitness(x(sortIndex( i ),:),P_train,T_train,P_test,T_test);
end
end
————————————————
版权声明:本文为CSDN博主「机器学习之心」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文
[1] https://blog.csdn.net/article/details/126134940?spm=1001.2014.3001.5501
[2] https://blog.csdn.net/article/details/126134940?spm=1001.2014.3001.5501
[3] https://blog.csdn.net/article/details/126082442?spm=1001.2014.3001.5501