差分进化算法(DE)优化长短期记忆神经网络原理及matlab代码

目录

0 引言

1数学模型

2 优化长短期记忆神经网络

2.1 优化的方式

2.2 伪代码

3 matlab代码

3.1 DE主函数代码

3.2 DE-LSTM代码

4 视频讲解

0 引言

差分进化算法(Differential Evolution,DE)是由Storn等人在19950年提出一种进化智能算法,它是通过模拟群体内个体间的合作与竞争而产生的全局搜索策略,采用实数编码、基于差分的简单变异操作和“一对一”的竞争生存策略,降低了进化计算操作的复杂性。

1数学模型

DE的工作原理在两个阶段:初始化和演化。在第一阶段,种群是随机产生的,在第二阶段,即进化,产生的种群经过突变、交叉和选择过程,这些过程不断重复,直到满足最大迭代要求。

第一阶段:初始化

(1)种群初始化:在初始化过程中,生成一组均匀分布种群:

式中Xlow、Xupp为种群编码的上下界。

第二阶段:演化

(2)变异:在突变过程中,为每个目标载体X𝑗(G)在第𝐺代生成一个突变载体𝑉𝑗(G):

式中F为突变因子,Xr1、Xr2、Xr3为随机编码个体

图1 变异方案

(3)交叉:个体突变后,进行交叉生成一个新的向量,称为试验向量,具体操作如下数学模型:

式中Cr为交叉概率

图2 交叉方案

(3)选择:根据目标向量和试验向量的适应度值进行比较,选拔出拥有更好生存能力赋予到下一代。此操作的执行方式如下

式中f(X)代表编码个体对应适应度值

图3 选择方案

2 优化长短期记忆神经网络

2.1 优化的方式

前篇对长短期记忆神经网络(长短期记忆神经网络LSTM原理及matlab代码-CSDN博客)原理讲解,从长短期记忆神经网络matlab代码运算过程中,可以看到LSTM受多个超参数影响(隐藏层节点、学习率、分批量、正则化等等)。因此结合上述DE原理介绍,可以将这些超参数作为DE编码个体,赋予问题维度作为个体长度,每一个个体赋予适应度作为LSTM的预测值,进行上述DE算法演化活动。

2.2 伪代码

3 matlab代码

3.1 DE主函数代码

%%参数
% de_Maxiter 最大迭代次数
% de_pop 编码总数
% CR 交叉概率
% dim 问题维度
% F 变异因子
% fun 适应度函数

%%  开始循环
for time = 1 :de_Maxiter
    for i = 1: de_pop
        %变异
        r = randperm(de_pop, 5);
        mutantpos = Sol(r(1),:)+ F* (Sol(r(2),:)-Sol(r(3),:))...
        + F* (Sol(r(4),:)-Sol(r(5),:)); 
        % 交叉
        jj = randi(dim);
        for d = 1:dim
            if rand()< CR || d ==jj
                crossoverpos(d) = mutantpos(d);
            else
                crossoverpos(d) = Sol(i,d);
            end
        end
        %  检查是否越界
        crossoverpos(crossoverpos>ub) = ub(crossoverpos>ub);
        crossoverpos(crossoverpos<lb) = lb(crossoverpos<lb);

        % 选择
        new_fitness = fun(crossoverpos);

        if new_fitness < Fitness(i)
            Sol(i,:) = crossoverpos;
            Fitness(i) = new_fitness;
        end
    end
    [de_best, bestindex] = min(Fitness);
    de_Sol = Sol(bestindex,:);
    de_Fitness = de_best;
    
    % 适应度
    Fitnesstime(time) = de_best;
    
    disp(['第' num2str(time), '代:' num2str(de_best)]);

end

3.2 DE-LSTM代码

1)时间序列:时间序列:差分进化算法优化长短期记忆神经网络(DE-LSTM)

4 视频讲解

B站搜索:‘ 不想学习的陈成 ’

  • 15
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值