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

目录

0 引言

1 数学模型

2 优化方式

3 Matlab代码

3.1 伪代码

3.2 DE主函数

3.3 DE-LSTM

0 引言

差分进化算法(Differential Evolution,DE)是1995年Storn等人为了解决切比雪夫多项式问题提出进化算法,在后续发展发现其更适用解决复杂优化问题。DE算法主要通过父代个体进行交叉变异生成差分矢量和子代个体;利用选择操作,将符合误差要求个体保留至下一代。

1 数学模型

DE数学模型包括前期对种群个体编码、父代之间交叉和变异、父子代个体之间选择,从而生成优势个体。具体模型如下:

1)初始化:在初始化过程中,生成一组均匀分布的总体如下:

式中j为种群个数,G迭代,Xlow,Xupp为问题维度边界。

2)变异:在突变过程中,我们为每个目标载体𝑋𝑗𝐺在第𝐺代生成一个突变载体𝑉𝑗𝐺,如下式所示:

式中F为突变系数;突变方案如下:

3)交叉:突变后,通过父代之间进行交叉生成一个新的向量为子代。如下式:

式中Cr为交叉系数,交叉示意图如下:

4)选择:对交叉和变异及原来个体进行适应度比较,采用轮盘赌等策略进行优势个体选拔:

式中f为适应度函数

2 优化方式

前篇对支持向量机(长短期记忆神经网络原理及Matlab代码复现-CSDN博客)原理讲解,从长短期记忆神经网络matlab代码运算过程中,可以看到LSTM受多个超参数影响(隐藏层节点、学习率、分批量、正则化等等)。因此结合上述DE原理介绍,可以将长短期记忆神经网络超参数作为种群个体位置,每一个个体位置对应长短期记忆神经网络的预测值,将这个预测值作为适应度进行上述编码、交叉、变异和选择操作,得到更符合误差需求个体生成。

3 Matlab代码

3.1 伪代码

3.2 DE主函数

%%  开始循环
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)]);

en

3.3 DE-LSTM

时间序列模型代码:差分进化算法(DE)优化长短期记忆神经网络代码-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值