灰狼算法优化支持向量机(GWO-SVM)原理及matlab代码

0 引言

灰狼优化算法(Grey Wolf Optimizer,GWO)由澳大利亚格里菲斯大学学者 Mirjalili 等人于2014年提出来的一种群智能优化算法。它通过模拟狼群社会等级制度,将狼群种群按照社会等级高到低分为α、β、δ和ω四中类型狼,在地位等级最高α狼的带领下进行狩猎活动,包括:跟踪、包围猎物和攻击猎物等群体操作。

图1 灰狼的社会等级制度

1 数学模型

为了对灰狼算法进行数学建模,将最好三只狼(最优解)依次定义为α、β和δ,其余狼(候选解)定义为ω,它们由最好三只狼引导搜索目标,更新自身位置。

图2 灰狼位置更新

(1)包围猎物:灰狼搜索猎物时逐渐接近猎物并包围它,该行为数学模型如下:

式 (3. 1) 表示个体与猎物间的距离 , 式(3. 2)是灰狼的位置更 新公式。其中,t是目前的迭代代数,A和C是系数向量,Xp和X分别是猎物的位置向量和灰狼的位置向量。 a是收敛因子,随着迭代次数增加从 2 线性减小到 0 ,r1 和r2的是[0,1]的随机数 。

(2) 狩猎过程:每次迭代过程中,选出最优三只灰狼,最优三只灰狼利用自身位置判断猎物所在位置,同时强迫其他灰狼个体(ω)依据三只最优狼的位置进行更新自身的位置。

其中,Dα、Dβ和Dδ分别表示α、 β和δ与其他个体间的距离向量;Xα、Xβ和Xδ分别表示α、 β和δ狼当前的位置向量;C1、C2和C3是随机向量;X是当前灰狼的位置向量;X1、X2和X3分别定义了灰狼ω个体受α、 β和δ狼指导更新的位置。式(3.7)定义了灰狼最终位置。

(3) 攻击猎物(开发):灰狼在猎物停止移动时攻击目标完成捕猎行为,该过程主要由式(3.3)来完成,向量a是随着迭代次数增加从2到0线性递减,其对应系数向量A也在[-a,a]区间变化。如下图所示,当A的值在区间内时,灰狼的位置可以位与当前位置和猎物位置之间的任意位置,当A<1时,狼群发起攻击,也就是局部最优解。

图3 攻击猎物

(4)搜索猎物(勘探):灰狼根据 α ,β 和 δ 的位置来搜索猎物。灰狼在寻找猎物存在彼此分开,然后聚集在一起攻击猎物。基于数学建模中A向量大于1或者小于-1时迫使灰狼和猎物分离,实现全局搜索。如图4所示。同时GWO算法发掘新的解方案还依靠C系数向量,由式(3.4)可知,C系数向量是[0,2]之间随机值,表示为狼所在位置对猎物影响的随机权重。勘探过程避免了智能算法寻优过程中陷入局部最优状态。

图3 寻找猎物

2 优化BP神经网络

2.1 优化的方式

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

2.2 伪代码

3 matlab代码

3.1 主函数代码

% GWO数学模型
% dim 优化问题维度
% Max_iteration  最大迭代次数
% Positions   灰狼种群数
% SYD  适应度函数
% ub、lb 上下界限
% Alpha_score、Beta_score、Delta_score对应α,β,δ狼适应度
% Alpha_pos、Beta_pos、Delta_pos 对应α,β,δ狼位置
%% 主函数
while l<Max_iteration %white(t<最大迭代次数)
    for i=1:size(Positions,1)  %智能体个数
        
       % 超出边界处理
        Flag4ub=Positions(i,:)>ub;
        Flag4lb=Positions(i,:)<lb;
        Positions(i,:)=(Positions(i,:).*(~(Flag4ub+Flag4lb)))+ub.*Flag4ub+lb.*Flag4lb; %返回限制边界               
        
        % 计算狼群的适应度函数
        X = reshape(Positions(i,:),1,dim);
        fitness = SYD(X,net);
        net.trainParam.showWindow = 0;       % 关闭训练窗口
        % 跟新α,β,δ狼作为最优适应度
        if fitness<Alpha_score 
            Alpha_score=fitness; % α
            Alpha_pos=Positions(i,:);
        end
        
        if fitness>Alpha_score && fitness<Beta_score 
            Beta_score=fitness; % β
            Beta_pos=Positions(i,:);
        end
        
        if fitness>Alpha_score && fitness>Beta_score && fitness<Delta_score 
            Delta_score=fitness; % δ
            Delta_pos=Positions(i,:);
        end
    end
    
    
    a=2-l*((2)/Max_iteration); % a是从2到0线性递减的数
    
    % 跟新ω狼寻找猎物
    for i=1:size(Positions,1)
        for j=1:size(Positions,2)     
            
            % 根据α狼群更新位置X1  
 
            r1=rand(); % r1是[0,1]随机分布的数;
            r2=rand(); % r2是[0,1]随机分布的数;
            
            % 计算A1和C1
            A1=2*a*r1-a; % Eq3.3的系数向量
            C1=2*r2; % Eq3.4的系数向量
            
            % 计算α狼指导其他狼寻优的位置和距离
            D_alpha=abs(C1*Alpha_pos(j)-Positions(i,j)); % Eq3.5的距离公式
            X1=Alpha_pos(j)-A1*D_alpha; % Eq3.6的位置公式
            
            %根据β狼群更新位置X2           
            r1=rand();
            r2=rand();
            
            A2=2*a*r1-a; % 同上
            C2=2*r2; % 同上
            
            D_beta=abs(C2*Beta_pos(j)-Positions(i,j)); % 同上
            X2=Beta_pos(j)-A2*D_beta; % 同上       
             
            %根据Delta狼群更新位置X3
            r1=rand();
            r2=rand(); 
            
            A3=2*a*r1-a; % Equation 同上
            C3=2*r2; % Equation 同上
            
            D_delta=abs(C3*Delta_pos(j)-Positions(i,j)); % 同上
            X3=Delta_pos(j)-A3*D_delta; % 同上          
            
            %更新后的狼只位置
            Positions(i,j)=(X1+X2+X3)/3;% ω狼的位置 Eq3.7
            
        end
    end
    l=l+1;    
    Convergence_curve(l)=Alpha_score; % 返回最优α狼作为适应度
end

3.2 GWO-SVM代码

分类代码:分类器:灰狼算法优化支持向量机模型(GWO-SVM)

回归预测代码:回归预测:灰狼算法优化支持向量机模型(GWO-SVR)

4 视频讲解

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

  • 17
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值