回归预测 | MATLAB实现PSO-GRU(粒子群优化门控循环单元)多输入单输出

回归预测 | MATLAB实现PSO-GRU(粒子群优化门控循环单元)多输入单输出

目录

    • 回归预测 | MATLAB实现PSO-GRU(粒子群优化门控循环单元)多输入单输出
      • 预测效果
      • 基本介绍
      • 程序设计
      • 拓展学习
      • 往期精彩
      • 参考资料

预测效果

回归预测 | MATLAB实现PSO-GRU(粒子群优化门控循环单元)多输入单输出_第1张图片
回归预测 | MATLAB实现PSO-GRU(粒子群优化门控循环单元)多输入单输出_第2张图片
回归预测 | MATLAB实现PSO-GRU(粒子群优化门控循环单元)多输入单输出_第3张图片
回归预测 | MATLAB实现PSO-GRU(粒子群优化门控循环单元)多输入单输出_第4张图片

基本介绍

GRU 为LSTM 的一个变体,是K.Cho 提出的,GRU 保留了LSTM 对梯度消失问题的能力,优化了它的内部结构,同时减少了更新隐藏层状态的计算量, 因此也是目前很常用的一种网络,也能处理RNN 网络中的很多问题[8-9]。LSTM 有三个门函数:输入
门、遗忘门和输出门,分别来控制输入值、记忆值和输出值。而对于GRU 模型只有两个门:更新门和重置门。GRU 单元有两个门:更新门z 和重置门r。更新门定义了保留上一记忆的多少部分, 重置门定义了如何把新的输入和上一记忆结合起来。和LSTM 不同的是, 这里没有持久化的单元状态。

回归预测 | MATLAB实现PSO-GRU(粒子群优化门控循环单元)多输入单输出_第5张图片

粒子群算法(PSO)是一种群体智能优化算法。该算法最早由Kennedy 和Eberhart 在1995 年提出的。该算法最早来源于对鸟类搜寻食物行为的研究,算法中粒子的速度和位置会发生相应的变化,在每一次迭代过程中,粒子根据自身适应度值调整下次飞行的方向和速度。粒子是有记忆的,每一次迭代都会更新种群的最优解。

程序设计

  • 完整程序和数据下载:PSO-GRU(粒子群优化门控循环单元)多输入单输出
%%--------------------------------------------------------------------------------------------------------------------------------------------------------------------
% 1. 寻找最佳参数
NN=5;                   %初始化群体个数
D=2;                    %初始化群体维数,
T=10;                   %初始化群体最迭代次数
c1=2;                   %学习因子1
c2=2;                   %学习因子2
%用线性递减因子粒子群算法
Wmax=1.2; %惯性权重最大值
Wmin=0.8; %惯性权重最小值
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%每个变量的取值范围
ParticleScope(1,:)=[10 200];  % 中间层神经元个数
ParticleScope(2,:)=[0.01 0.15]; % 学习率
ParticleScope=ParticleScope';
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
xv=rand(NN,2*D); %首先,初始化种群个体速度和位置
for d=1:D
    xv(:,d)=xv(:,d)*(ParticleScope(2,d)-ParticleScope(1,d))+ParticleScope(1,d);  
    xv(:,D+d)=(2*xv(:,D+d)-1 )*(ParticleScope(2,d)-ParticleScope(1,d))*0.2;
end
x1=xv(:,1:D);%位置
v1=xv(:,D+1:2*D);%速度
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%------初始化个体位置和适应度值-----------------
p1=x1;
pbest1=ones(NN,1);
for i=1:NN
    pbest1(i)=fitness(x1(i,:));
end
%------初始时全局最优位置和最优值---------------
gbest1=min(pbest1);
lab=find(min(pbest1)==pbest1);
g1=x1(lab,:);
gb1=ones(1,T);
%%--------------------------------------------------------------------------------------------------------------------------------------------------------------------
%-----浸入主循环,按照公式依次迭代直到迭代次数---
% N=40;                   %初始化群体个数
% D=10;                   %初始化群体维数
% T=100;                 %初始化群体最迭代次数
for i=1:T
    for j=1:NN
        if (fitness(x1(j,:))<pbest1(j))
            p1(j,:)=x1(j,:);%变量
            pbest1(j)=fitness(x1(j,:));
        end
        if(pbest1(j)<gbest1)
            g1=p1(j,:);%变量
            gbest1=pbest1(j);
        end
         w=Wmax-(Wmax-Wmin)*i/T;          
         v1(j,:)=w*v1(j,:)+c1*rand*(p1(j,:)-x1(j,:))+c2*rand*(g1-x1(j,:));
         x1(j,:)=x1(j,:)+v1(j,:); 
        %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%位置约束
        label=find(x1(j,:)>ParticleScope(2,:));
        x1(j,label)=ParticleScope(2,label);        
        label2=find(x1(j,:)<ParticleScope(1,:));
        x1(j,label2)=ParticleScope(1,label2);
        %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%速度约束                
        labe3=find(v1(j,:)>ParticleScope(2,:)*0.2);
        v1(j,labe3)=ParticleScope(2,labe3)*0.2;        
        label4=find(v1(j,:)<-ParticleScope(2,:)*0.2);
        v1(j,label4)=-ParticleScope(2,label4)*0.2;              
    end
        %         gb1(i)=min(pbest1);
        gb1(i)=gbest1;
end
%%--------------------------------------------------------------------------------------------------------------------------------------------------------------------

拓展学习

门控循环单元与普通的循环神经网络之间的关键区别在于: 前者支持隐状态的门控。 这意味着模型有专门的机制来确定应该何时更新隐状态, 以及应该何时重置隐状态。

回归预测 | MATLAB实现PSO-GRU(粒子群优化门控循环单元)多输入单输出_第6张图片

往期精彩

MATLAB实现PSO-LSTM(粒子群优化长短期记忆神经网络)多输入单输出
MATLAB实现Bayes-LSTM(贝叶斯优化长短期记忆神经网络)多输入单输出

参考资料

[1] https://blog.csdn.net/kjm13182345320/article/details/123660044
[2] https://blog.csdn.net/kjm13182345320/article/details/124283506

你可能感兴趣的:(回归预测,PSO-GRU,粒子群优化门控循环单元,多输入单输出,回归预测)