麻雀搜索算法(SSA)优化支持向量机原理及matlab代码

目录

0 引言

1 数学模型

2 优化支持向量机

3 matlab代码

3.1 伪代码

3.2 SSA主函数代码

3.3 SSA-SVM

4 视频讲解

0 引言

麻雀搜索算法(Sparrow Search Algorithm,SSA)是由Jiankai Xue等人于2020提出群智能算法,该算法主要受麻雀的觅食行为和反捕食行为启发而构建对应数学模型进行寻优分析。通过多个模型对比分析,SSA算法寻优能力和收敛速度较为不错。

1 数学模型

SSA模拟麻雀的觅食行为和反捕食行为。将麻雀分为生产者和拾荒者,主要是生产者寻优食物的和拾荒者抢夺食物的行为构建数学模型。

1)麻雀种群位置和适应度矩阵表示:

式(1)为麻雀种群位置,其中n为麻雀数量,d为问题维度。式(2)为式(1)对应适应度。

2)生产者探索食物:具有适应度小的麻雀作为生产者,取负责寻找食物和指导整个种群的流动,其数学模型见下式:

式中R2为警报值,ST为安全阈值,当R2<ST意味着周围没有捕食者,生产者进入宽搜索模式,R2≥ST,这意味着一些麻雀已经发现了捕食者;Q为符合正态分布的随机值,L为均匀分布的问题维度随机值。

3)拾荒者监视生产者:拾荒者会频繁地监控生产者。一旦他们发现生产者找到了好的食物,他们就会立即离开现在的位置去争夺食物。如果他们赢了,他们可以立即得到生产者的食物,否则他们将继续执行规则下一步活动,其具体数学模型见下式:

式中Xp为生产者最佳位置,A为随机赋值为1或-1的问题维度的随机矩阵,L为随机问题维度矩阵。

4)群体边缘的麻雀在意识到危险时迅速向安全区域移动以获得更好的位置:当麻雀对应适应大于最小适应度fg时,贼其处于危险位置,将会向最优位置靠拢,当fi=fg。处于种群中间的麻雀意识到危险,需要靠近其他麻雀,此时只能寻求更低适应度种群位置,加快收敛速度。

式β步长控制参数,K∈[-1,1]的随机参数

2 优化支持向量机

优化的方式:

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

3 matlab代码

3.1 伪代码

3.2 SSA主函数代码

%%参数
% M    最大迭代次数
% pFit 适应度值
% pNum  生产者种群数量
% pop  麻雀种群数量
% fMin 最小适应度
% SYD 适应度函数
% ub、lb 问题维度边界
% dim 问题维度


%SSA主循环
for t = 1 : M    
    [ans, sortIndex] = sort(pFit);
    [fmax,B]=max(pFit);
    worse= x(B,:);

    r2=rand(1);%警报值
    ST = 0.8;%安全阈值
    % 生产者负责寻找食物时位置更新
    if(r2 < ST)
        for i = 1 :pNum  
            r1=rand(1);
            x(sortIndex(i), :)= pX(sortIndex(i),:)*exp(-(i)/(r1*M));% Eq (3)
            x(sortIndex(i), :)= Bounds(x(sortIndex(i),:), lb, ub);
            fit(sortIndex(i))= SYD(x(sortIndex(i),:),net); 
            net.trainParam.showWindow = 0;
        end
    else
        for i = 1 :pNum  
            x(sortIndex(i), :) = pX(sortIndex(i),:)+randn(1)*ones(1,dim); % Eq (3)
            x(sortIndex(i), :) = Bounds(x(sortIndex(i),:), lb, ub);
            fit(sortIndex(i)) = SYD(x(sortIndex(i),:),net);
            net.trainParam.showWindow = 0;
        end    
    end

    [fMin,bestII] = min(fit);      
    bestXX = x(bestII, :); 
    % 拾荒者频繁地监视生产者
    for i = (pNum + 1) : pop  
        A=floor(rand(1,dim)*2)*2-1;%随机赋值为1或-1的dim随机矩阵
        if(i>(pop/2))
            x(sortIndex(i),:)=randn(1)*exp((worse-pX(sortIndex(i), :))/(i)^2); %Eq(4)
        else
            x(sortIndex(i),:)=bestXX+(abs((pX(sortIndex(i),:)-bestXX)))*(A'*(A*A')^(-1))*ones(1,dim);   %Eq(4)
        end 
        x(sortIndex(i),:)= Bounds(x(sortIndex(i),:), lb, ub);
          
        fit(sortIndex(i))= SYD(x(sortIndex(i),:),net);  
        net.trainParam.showWindow = 0;
    end

    c=randperm(numel(sortIndex));
    b=sortIndex(c(1:round(pop* 0.2)));
    
    % 群体边缘的麻雀在意识到危险时迅速向安全区域移动以获得更好的位置
    for j = 1 :length(b)      
    
        if (pFit(sortIndex(b(j)))>(fMin))
            x(sortIndex(b(j)),:)=bestX+(randn(1,dim)).*(abs((pX( sortIndex(b(j)),:)-bestX))); % Eq(5)
        else
            x(sortIndex(b(j)),:) =pX(sortIndex(b(j)),:)+(2*rand(1)-1)*(abs(pX(sortIndex(b(j)),:)-worse))/(pFit(sortIndex( b(j)))-fmax+1e-50); % Eq(5)
        end
        
        x(sortIndex(b(j)),:) =Bounds(x(sortIndex(b(j)),:), lb, ub);
        fit(sortIndex(b(j))) =SYD(x(sortIndex(b(j)),:),net);
        net.trainParam.showWindow = 0;
    end
    for i = 1: pop 
        if (fit(i) < pFit(i))
            pFit(i) = fit(i);
            pX(i,:) = x(i,:);
        end
        
        if(pFit(i) < fMin)
           fMin= pFit(i);
            bestX = pX(i,:);            
        end
    end
    Convergence_curve(t)=fMin;
end

3.3 SSA-SVM

1)回归预测模型:回归预测模型:麻雀搜索算法优化支持向量机模型(SSA-SVR)

2)分类模型:分类模型:麻雀搜索算法优化支持向量机模型(SSA-SVM)

4 视频讲解

B站讲解:‘ 不想学习的陈成 ’

  • 23
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
麻雀搜索算法SSA)是一种模拟麻雀觅食行为的优化算法,其灵感来源于麻雀的觅食行为和呼叫行为。而支持向量机(SVM)是一种常用的机器学习算法,广泛应用于分类和回归问题。 在MATLAB中,我们可以使用麻雀搜索算法支持向量机分类进行优化。首先,需要定义适应度函数,即目标函数,用于评估每个搜索麻雀的适应度。在支持向量机分类中,可以使用分类错误率或者其他评估指标作为适应度函数。 接下来,可以使用MATLAB的遗传算法函数或者粒子群算法函数来实现麻雀搜索算法。这些函数提供了优化搜索的框架,我们只需要在适应度函数中调用支持向量机分类的相关函数,并将其作为输入参数传入优化算法函数中即可。 在MATLAB中,可以使用SVMtrain函数训练支持向量机分类器,然后使用SVMclassify函数对测试数据进行分类预测。在适应度函数中,可以基于分类器的预测结果计算分类错误率或其他评估指标,并返回适应度值。 最后,运行麻雀搜索算法,通过不断迭代更新搜索麻雀的位置和速度,找到最优解,即能够最小化适应度函数的参数组合。最终得到优化后的支持向量机分类器,可以用于进行分类预测任务。 总之,通过将麻雀搜索算法支持向量机分类相结合,可以利用麻雀搜索算法优化能力提升支持向量机分类器的性能,并在MATLAB中实现这一过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值