人工大猩猩部队优化算法(GTO)优化支持向量机原理及MATLAB代码复现

目录

0 引言

1 数学模型

2 优化方式

3 MATLAB代码

3.1 伪代码

3.2 GTO主函数代码

3.3 GTO-SVR、GTO-SVM

0 引言

人工大猩猩部队优化算法(Artificial gorilla troops optimizer,GTO)是由Benyamin Abdollahzadeh等人于2021年基于大猩猩部队自然社会智能启发而提出新的元启发式算法,即人工。在该算法中,用数学方法计算了大猩猩的集体生命,并设计了新的机制来进行探索和开发。该算法具有寻优能力强的特点。

1 数学模型

GTO算法主要包括两大部分(探索阶段和开发阶段),探索阶段分三小点建模大猩猩迁移到未知位置,迁移到已知位置,以及迁移到其他大猩猩。开发阶段建模包括跟随银背鱼和成年雌性竞争两种行为。因此算法GTO即是对上述大猩猩五种行为进行建模。具体如下:

1)探索阶段:研究了GTO勘探阶段机制。考虑到大猩猩群体生活的本质,他们主要进行下述状态,其一在银背大猩猩的统治下成群生活,其二有些大猩猩会离开他们的群体,迁移到自然界中的不同地方,它们在过去可能遇到过,也可能没有遇到过。因此在对GTO随机初始化种群进行上述三种生活机制建模,具体如下:

在式(1)中,GX(t + 1)是下一次t迭代中的大猩猩候选位置向量。X (t)是大猩猩位置的当前向量。此外,r1、r2、r3和rand是在每次迭代中更新的从0到1的随机值。P是0-1的参数;该参数决定了选择迁移机制到一个未知位置的概率。UB和LB分别表示变量的上界和下界。Xr,GXr是从整个种群中随机选择的大猩猩种群位置,C、H和L的计算如下:

式中It为当前迭代次数,Maxit为最大迭代次数,Z为问题维度边界随机值。

2)跟随银背大猩猩(开发阶段):在大猩猩的群体中,银背大猩猩最佳种群位置,其他大猩猩跟着银背,遵循银背大猩猩的命令或跟随去不同的地区寻找食物来源。具体模型如下:

式中Xsiliverback是银背大猩猩的位置向量(最佳解)。L的计算使用公式(4),M使用等式(8)。在式(8)中,GXi (t)显示了每个候选大猩猩在迭代t中的向量位置。N表示大猩猩的总数。G也用式(9)估计,在式(9)中,L也用式(4)计算。

3)竞争成年雌性(开发阶段):在GTO种群中当年轻的大猩猩进入青春期时,它们会与其他雄性大猩猩战斗,以选择成年的雌性,用以下式子表示竞争后大猩猩位置。

式中Q是模拟大猩猩竞争战斗力系数,用公式(11)计算;r5是范围从0到1的随机值;β是在优化操作前给定的参数,E在使用式(13)求值时,被用来模拟暴力对解维度的影响。如果rand≥为0.5,E的E的值将等于正常值中的随机值。

2 优化方式

前篇对支持向量机(支持向量机原理及Matlab代码-CSDN博客)原理讲解,从支持向量机模型运算过程中,可以了解到模型高维映射核函数参数g和处罚因子c对模型预测结果影响最为重要。因此结合上述GTO原理介绍,可以将支持向量机的超参数作为大猩猩种群位置,每一个种群位置对应支持向量机的预测值,将这个预测值作为适应度更新大猩猩和银背大猩猩,进而进行大猩猩社会群体活动,更新新一轮银背大猩猩,直至满足误差要求。

3 MATLAB代码

3.1 伪代码

3.2 GTO主函数代码

%% 探索阶段(3种情况)
    for i=1:pop_size
        if rand<p    
            GX(i,:) =(ub-lb)*rand+lb;
        else  
            if rand>=0.5
                Z = unifrnd(-a,a,1,variables_no);
                H=Z.*X(i,:);   
                GX(i,:)=(rand-a)*X(randi([1,pop_size]),:)+C.*H; 
            else   
                GX(i,:)=X(i,:)-C.*(C*(X(i,:)- GX(randi([1,pop_size]),:))+rand*(X(i,:)-GX(randi([1,pop_size]),:))); 
            end
        end
    end       
       
    GX = BoundaryCheck(GX, lower_bound, upper_bound);
    
    % 重新分配种群
    for i=1:pop_size
         New_Fit= SYD(GX(i,:),net);
         net.trainParam.showWindow = 0;
         if New_Fit<Pop_Fit(i)
            Pop_Fit(i)=New_Fit;
            X(i,:)=GX(i,:);
         end
         if New_Fit<Silverback_Score 
            Silverback_Score=New_Fit; 
            Silverback=GX(i,:);
         end
    end
    
%% 开发(应用了“跟随银背”和“竞争”两种成年雌性行为)  
    for i=1:pop_size
       if a>=w  
            g=2^C;
            delta= (abs(mean(GX)).^g).^(1/g);
            GX(i,:)=C*delta.*(X(i,:)-Silverback)+X(i,:); 
       else
           
           if rand>=0.5
              h=randn(1,variables_no);
           else
              h=randn(1,1);
           end
           r1=rand; 
           GX(i,:)= Silverback-(Silverback*(2*r1-1)-X(i,:)*(2*r1-1)).*(Beta*h); 
           
       end
    end
   
    GX = BoundaryCheck(GX, lower_bound, upper_bound);
    
    % 重新分配种群    
    for i=1:pop_size
         New_Fit= SYD(GX(i,:),net);
         net.trainParam.showWindow = 0;
         if New_Fit<Pop_Fit(i)
            Pop_Fit(i)=New_Fit;
            X(i,:)=GX(i,:);
         end
         if New_Fit<Silverback_Score 
            Silverback_Score=New_Fit; 
            Silverback=GX(i,:);
         end
    end
             
convergence_curve(It)=Silverback_Score;
      
end 

3.3 GTO-SVR、GTO-SVM

1)回归模型、分类模型:(人工大猩猩部队优化算法优化支持向量机-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值