山瞪羚优化算法(MGO)优化支持向量机及MATLAB代码复现

目录

0 引言

1 数学模型

2 优化方式

3 MATLAB代码

3.1 伪代码

3.2 MGO主函数代码

3.3 MGO-SVM、MGO-SVR

0 引言

山瞪羚优化算法(Mountain Gazelle Optimizer,MGO)是Benyamin Abdollahzadeh等人于2022年基于山瞪羚的社会生活和等级制度提出的群体智能算法。该算法模拟山瞪羚四个生活机制分别是单身雄性畜群、母性畜群、独居且有领地的成熟雄性畜群和迁徙觅食群,以实现有效的探索和开发。

1 数学模型

MGO的数学模型主要对四个机制进行建模,分别领地独居雄性(TSM)、母系山瞪羚群(MH)、单身雄性山瞪羚(BMH)、迁徙觅食(MSF),具体模型如下:

1)TSM:当雄性山瞪羚成年后,就会领地意识,成年雄性瞪羚之间的战斗发生在雌性瞪羚的领地或领地之上。年轻的雄性试图占领领地或雌性;另一方面,成年雄性试图保护自己的环境。从而更新自身位置,如下式模拟:

式中malegazelle 代表最佳全局解(成年雄性)的位置向量;参数 ri1 和 ri2 是随机整数 1 或 2; BH 代表年轻的雄性畜群系数向量; Cofi 是一个随机选择的向量系数,每次迭代中更新从而提升搜索能力;Xra是ra区间内的随机解(年轻的雄性); M pr 是一个平均数; N是标准正态分布的随机数; MaxIter 代表总迭代次数; Iter 代表当前迭代次数; r 代表0到1之间的随机数;

2)MH:母系山瞪羚在山瞪羚种群担任分娩瞪羚和年轻雄性中发挥作用。这种行为是用等式来表示如下:

式中:Xrand为山瞪羚种群随机种群向量,ri3,ri4为0到1的随机数;

3)BMH:年轻的雄性瞪羚之间会争夺雌性瞪羚和领地控制权,用下式数学方法来表示瞪羚的这种行为:

式中x(t) 是瞪羚向量在当前迭代中的位置;

4)MSF:山地瞪羚不断地寻找食物来源,并长途跋涉以获取食物和迁徙。用以下模型更新其位置更新。

式中ub,lb为问题维度边界。

2 优化方式

前篇对支持向量机(支持向量机原理及Matlab代码-CSDN博客)原理讲解,从支持向量机模型运算过程中,可以了解到模型高维映射核函数参数g和处罚因子c对模型预测结果影响最为重要。因此结合上述MGO原理介绍,可以将支持向量机的超参数作为山瞪羚种群位置,每一个种群位置对应支持向量机的预测值,将这个预测值作为适应度进行山瞪羚四种社会机制,更新更优位置。

3 MATLAB代码

3.1 伪代码

3.2 MGO主函数代码

% 主循环
    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)     
            
            % 计算随机选择系数向量
            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);
                       
            % 进行山瞪羚社会活动的位置更新
            NewX = Solution_Imp(X,BestX,lb,ub,N,cofi,M,A,D,i); 
            
            % 成本函数计算和边界检查
            [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 MGO-SVM、MGO-SVR

回归预测模型和分类模型的代码复现:

山瞪羚优化算法优化支持向量机(MGO-SVR、 MGO-SVM)-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值