【预测模型】基于麻雀算法改进ELMAN神经网络实现数据预测 matlab代码

141 阅读4分钟

1 简介

风能,作为一种重要,有潜力,无污染,可再生、可持续的能源,已经成为全球发电最为迅速的能源之一,越来越受到世界各国的青睐。近年来,为缓解能源短缺问题,改善环境,实现经济乃至人类的可持续发展,世界各国纷纷大力发展风能资源。然而,在实际操作中,风能固有的波动性和间歇性通常会增加风能入网的难度,致使风电场输出功率不稳定,严重影响输出的电能质量,大大增加了电网安全性和稳定性运行风险,因此,风速预测在风电相关工作中至关重要,准确、可靠的预测结果不仅有利于调度人员事先掌握风电场的功率变化情况,及时制定调度运行计划,提高能量转换效率、降低风险,增加发电量等,同时也有利于风电并网稳定运行和有效消纳,对可能存在影响电网安全稳定运行的风险及时预警,从而避免风电功率随机波动造成电能损耗甚至电网崩溃。近年来,国内外学者进行了大量风速预测相关研究,风速预测水平得到一定程度的提升。单一预测模型虽简单容易实施,但其预测精度往往较低,难以满足风电场发电的需求。相比之下,基于优化算法和数据分解法的混合预测模型对风速预测性能有很大的提升。本文构建出一个基于麻雀搜索算法和Elman神经网络的混合预测模型,仿真结果表明提出的混合预测模型不仅可以降低预测误差,提高风速预测精度,增强预测结果的稳定性,同时对风电场发电的完善,发展以及风电并网安全管理也大有裨益。

1 SSA的基本原理

SSA算法是一种模拟麻雀觅食行为和反捕食行为的新型群体智能优化算法,其基本原理如下:在SSA中,每只麻雀位置对应其中的一个解。麻雀在觅食过程中有3种行为:①作为发现者寻找食物;②作为加入者跟随发现者觅食;③作为警戒者决定种群是否继续觅食。其中,发现者和加入者两者的身份是动态变化的,可相互转换,但两者比例保持恒定。发现者作为种群觅食的引导者,拥有更高的适应度值,可以获得更加广阔的搜索区域。而加入者为获取更高的适应度值跟随发现者进行觅食,同时一些加入者可能会不断地监控发现者并夺取食物资源来提高自身的捕食率。种群会随机选取一部分麻雀作为警戒者进行监视和预警,这些麻雀大概占整个种群的10%~20%,当种群边缘的麻雀在觅食过程中察觉到危险时,会迅速提醒整个种群做出反捕食行为。

​2 部分代码

function [FoodFitness,FoodPosition,Convergence_curve]=SSA(N,Max_iter,lb,ub,dim,fobj)
if size(ub,1)==1
   ub=ones(dim,1)*ub;
   lb=ones(dim,1)*lb;
end
Convergence_curve = zeros(1,Max_iter);
%Initialize the positions of salps
SalpPositions=initialization(N,dim,ub,lb);
FoodPosition=zeros(1,dim);
FoodFitness=inf;
%calculate the fitness of initial salps
for i=1:size(SalpPositions,1)
   SalpFitness(1,i)=fobj(SalpPositions(i,:));
end
[sorted_salps_fitness,sorted_indexes]=sort(SalpFitness);
for newindex=1:N
   Sorted_salps(newindex,:)=SalpPositions(sorted_indexes(newindex),:);
end
FoodPosition=Sorted_salps(1,:);
FoodFitness=sorted_salps_fitness(1);
%Main loop
l=2; % start from the second iteration since the first iteration was dedicated to calculating the fitness of salps
while l<Max_iter+1
   c1 = 2*exp(-(4*l/Max_iter)^2); % Eq. (3.2) in the paper
   for i=1:size(SalpPositions,1)
       SalpPositions= SalpPositions';
       if i<=N/2
           for j=1:1:dim
               c2=rand();
               c3=rand();
               %%%%%%%%%%%%% % Eq. (3.1) in the paper %%%%%%%%%%%%%%
               if c3<0.5 
                   SalpPositions(j,i)=FoodPosition(j)+c1*((ub(j)-lb(j))*c2+lb(j));
               else
                   SalpPositions(j,i)=FoodPosition(j)-c1*((ub(j)-lb(j))*c2+lb(j));
               end
               %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
           end
       elseif i>N/2 && i<N+1
           point1=SalpPositions(:,i-1);
           point2=SalpPositions(:,i);
           SalpPositions(:,i)=(point2+point1)/2; % % Eq. (3.4) in the paper
       end
       SalpPositions= SalpPositions';
   end
   for i=1:size(SalpPositions,1)
       Tp=SalpPositions(i,:)>ub';Tm=SalpPositions(i,:)<lb';SalpPositions(i,:)=(SalpPositions(i,:).*(~(Tp+Tm)))+ub'.*Tp+lb'.*Tm;
       SalpFitness(1,i)=fobj(SalpPositions(i,:));
       if SalpFitness(1,i)<FoodFitness
           FoodPosition=SalpPositions(i,:);
           FoodFitness=SalpFitness(1,i)
       end
   end
   Convergence_curve(l)=FoodFitness;
   l = l + 1;
end

3 仿真结果

4 参考文献

[1]李增, 迟道才, and 于淼. "基于遗传算法的改进Elman神经网络模型的降雨量预测." 沈阳农业大学学报 41.001(2010):69-72.

[2]许亮, 张紫叶, 陈曦, 赵世伟, 王鹿洋, & 王涛. (2021). 基于改进麻雀搜索算法优化bp神经网络的气动光学成像偏移预测. 光电子.激光, 32(6), 6.

部分理论引用网络文献,若有侵权联系博主删除。