多策略改进的山瞪羚算法(HMGO)优化BP神经网络原理及MATLAB代码复现

目录

0 引言

1 数学模型

2 模型性能可视化

3 MATLAB代码

3.1 伪代码

3.2 HMGO主函数

3.3 HMGO-BP

0 引言

为了提高MGO算法的全局搜索和局部开发能力,有学者提出多策略改进的山瞪羚算法(HMGO),该算法首先采用准反向学习策略,优化种群初始化,确保初始种群的广泛性。其次引入动态自适应因子和缩放因子,调整优化机制中的参数,以提升搜索精度和效率,最后引入AOA算法中MOP和MOA系数向量加快模型局部开发和全局探索能力。

1 数学模型

HMGO是在MGO的基础上引入4大策略,准反向学习、动态因子、缩放因子、AOA性能混合优化来提升算法性能,具体数学模型如下:

1)准方向学习策略:在MGO算法中,采用随机生成的初始位置策 略以确保山地瞪羚均匀分布,但这种做法牺牲了种群的多样性。为优化算法性能,研究者引入了多种反向学习策略,该策略在使得种群分布均匀同时,可以有效提高种群多样性,如下式:

式(10)为方向解种群生成,其中ub,lb为问题维度边界,式(11)为准反向学习解种群生成,r为-1到1之间随机数。

2)动态自适应密度因子:在 MGO 中,收敛因子a1对系数向量cofi有显著影响,不利于全局勘探与局部开发的有效平衡。因此引入非线性收敛因子 aa可以有效平衡勘探和开发能力,具体模型如下:

式中Ilter为当前迭代,MaxIter为最大迭代次数。

3)缩放因子优化 为解决 MGO 全局搜索性能忽略的问题,引入缩放因子(scaling factor, sf)优化机制。通过调整搜索步长,提高搜索效率,更灵活适应问题空间动态变化。

式中17为引入缩放影子sf后算法四个机制的山瞪羚位置更新

4)策略融合与性能提升 为提高 MGO 算法的勘探和开发能力,针对后 期易陷入局部最优解问题,特殊处理种群中的 20%个体。引入算术优化算法,通过乘法和除法策略进行全局 搜索,提高解的分散性,增强全局寻优能力。利用加法和减法策略降低解的分散性,增强局部寻优能 力。同时引入正余弦算子使 AOA 产生的解向内或 向外移动,动态地调整算法参数,达到提高全局搜索的效果增加解的多样性。

式中MOP和MOA为系数向量,其中当Ar>MOA进行式18,当Ar<MOA进行式19,有利于全局和局部性能,g(*)为AOA的算法派生。

2 模型性能可视化

HMGO-BP和MGO-BP的模型性能可视化:数据来源UCI回归数据集。

1)精度指标:

2)寻优指标:

3 MATLAB代码

3.1 伪代码

3.2 HMGO主函数

% 主循环
    for Iter=1:MaxIter
        for i=1:N
            
            RandomSolution=randperm(N,ceil(N/3));

            %计算的年轻雄性畜群系数向量
            M=X(randi([(ceil(N/3)),N]),:)*floor(rand)+mean(X(RandomSolution,:)).*ceil(rand);%eq (2)     
            
            %改进点2: 引入自适应动态密度因子计算随机选择系数向量
            cofi = Coefficient_Vector(dim,Iter,MaxIter);%eq (4)
            
            % 位置参数
            A =randn(1,dim).*exp(2-Iter*(2/MaxIter));
            D =(abs(X(i,:)) + abs(BestX))*(2*rand-1);
            
            % 改进点3:缩放因子优化
            % 进行山瞪羚社会活动的位置更新
            w = 3*((Iter-0.5*MaxIter)/MaxIter^2);
            vta = (-1)/(1+exp(-2*w))+1.2;
            sf = vta* cos(3*w);
            NewX = Solution_Imp(X,BestX,lb,ub,N,cofi,M,A,D,i,sf); 
            
            % 改进点4:引入AOA算法提高模型探索和开发能力
            MOP_Max=1; %加速函数最大值
            MOP_Min=0.2; %加速函数最小值
            Alpha = 0.499;
            MOP=1-((Iter)^(1/Alpha)/(MaxIter)^(1/Alpha)); % 数学优化概率eq 4  
            MOA=MOP_Min+Iter*((MOP_Max-MOP_Min)/MaxIter); % 加速函数 eq 2
            
            for j=1:size(NewX,1)
                gNewx(j,:) = sin(rand()).*NewX(j,:)+cos(rand()).*NewX(j,:);
                r1 = rand();
                if r1>MOA  
                    r2=rand();    
                    if r2>0.5 
                        NewX(j,:)=BestX.*MOP.*gNewx(j,:);
                    else
                    NewX(j,:)=(BestX.*gNewx(j,:))./(MOP+eps);
                    end
                else        
                    r3=rand();    
                    if r3>0.5          
                        NewX(j,:)=BestX+MOP.*gNewx(j,:);              
                    else 
                        NewX(j,:)=BestX-MOP.*gNewx(j,:);  
                    end 
                end
            end

            % 成本函数计算和边界检查
            [NewX , Sol_CostNew] = Boundary_Check(NewX,net,LB,UB);
                        
            % 为羚羊群增添新成员
            X=[X; NewX];       
            Sol_Cost=[Sol_Cost; Sol_CostNew];
            [~,idbest]=min(Sol_Cost);
            BestX=X(idbest,:);
            
            % 
        end
        
        % 更新种群
        [Sol_Cost, SortOrder]=sort(Sol_Cost);
        X=X(SortOrder,:);
        [BestFitness,idbest]=min(Sol_Cost);   
        BestX=X(idbest,:);
        X=X(1:N,:);
        Sol_Cost=Sol_Cost(1:N,:);
        cnvg(Iter)=BestFitness;
        BestF=BestFitness;
    end
end

3.3 HMGO-BP

单输出回归预测模型、多输出回归预测模型、分类模型和时间序列模型的代码复现:

改进的山瞪羚优化算法优化BP神经网络(HMGO-BP)-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值