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

目录

0引言

1 数学模型

2 优化支持向量机

2.1 优化的方式

2.2 伪代码

3 matlab代码

3.1 主函数代码

3.2 GTO-SVM

4 视频讲解

0 引言

人工大猩猩部队算法(Artificial gorilla troops optimizer,GTO)是由Benyamin Abdollahzadeh等人于2021年提出群智能算法,该算法主要模拟了大猩猩种群的迁移策略和求偶行为进行问题全局探索搜索和开发利用,具有寻优能力强特点。

1 数学模型

GTO数学模型主要包括俩个部分,首先是探索阶段,该阶段主要进行大猩猩迁移,包括以下三个机制,即迁移到一个未知的地方、向其他大猩猩的移动、向已知位置的迁移。其次是开发阶段,该阶段包括了

(1)探索阶段(迁移):给定p的参数被用来选择迁移机制选择,该阶段见下式数学模型:

其中p为介于0到1之间参数,该参数确定迁移到未知的位置概率;rand≥为0.5,则选择了向其他大猩猩的迁移机制;rand <为0.5,则选择迁移到已知位置的机制;GX是大猩猩个体候选位置向量,X为大猩猩个体当前位置向量;r1、r2、r3为0到1的随机参数,UB和LB为问题维度上下界限Xr和GXr为对应种群随机选择大猩猩个体,C、L、H是系数向量,其公式见下式:

其中it为当前迭代,MaxIt为最大迭代

(2)开发阶段(跟随):银背大猩猩Xsilverback是大猩猩领导者,带领种群走向食物,同时负责团队安全和福祉,因此在开发阶段,大猩猩逐渐向优势个体银背大猩猩靠拢,提高问题精度,其数学模型见下式:

(2)开发阶段(竞争成年雌性):这是开发阶段的第二个机制。一段时间后,当年轻的大猩猩进入青春期时,它们会与其他雄性大猩猩在选择成年䧳性的问题上展开竞争,这种竞争通常是激烈的。式(10)模拟了这种行为:

式中Q为冲击力,A为竞争中暴力程度;r5为0到1随机值;β优化操作之前的参数,E为评估值,符合问题正态分布的随机值;

2 优化支持向量机

2.1 优化的方式

前篇对支持向量机(支持向量机原理及matlab代码讲解(分类SVM和回归SVR)-CSDN博客)原理讲解,从支持向量机模型运算过程中,可以了解到模型高维映射核函数参数g和处罚因子c对模型预测结果影响最为重要。因此结合上述GTO原理介绍,可以将支持向量机参数c和g作为大猩猩种群,每一个种群对应支持向量机的预测值,将这个预测值作为适应度进行上述大猩猩活动。

2.2 伪代码

3 matlab代码

3.1 主函数代码

%% 参数
% max_iter  最大迭代次数
% pop_size 种群
% ub、lb 问题维度上下界
% variables_no 问题维度
%  SYD 适应度函数
% BoundaryCheck 边界函数
% p 迁移概率
%
%%主函数

for It=1:max_iter 
    
    a=(cos(2*rand)+1)*(1-It/max_iter);
    C=a*(2*rand-1); 

%% 探索阶段(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.2 GTO-SVM

1)回归预测模型:回归预测:人工大猩猩部队算法优化支持向量机(GTO-SVR)

3)分类模型:分类模型:人工大猩猩部队算法优化支持向量机(GTO-SVM)

4 视频讲解

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值