您现在的位置:首页 >> 机器学习 >> 内容

基于GOA蚱蜢优化算法的KNN分类器最优特征选择matlab仿真

时间:2023/1/31 19:48:47 点击:

  核心提示:A318,包括程序操作录像...

1.完整项目描述和程序获取

>面包多安全交易平台:https://mbd.pub/o/bread/Y56Zmpxv

>如果链接失效,可以直接打开本站店铺搜索相关店铺:

点击店铺

>如果链接失效,程序调试报错或者项目合作可以加微信或者QQ联系。

2.部分仿真图预览



3.算法概述

        蝗 虫 优 化 算 法 ( Grasshopper Optimization Algorithm, GOA) 是一种新型的元启发式算法,由 Mirjalili 等人于2017年提出。该算法受幼虫和成年蝗虫大范围移动与寻找食物源的聚集行为启发,具有操作参数少,公式简单的特点。针对基准测试函数优化问题的实验结果表明,GOA的收敛性优于粒子群算法。

4.部分源码

.......................................................................

GrassHopperPositions=round(initialization(N,dim,ub,lb));

GrassHopperFitness = zeros(1,N);

fitness_history=zeros(N,Max_iter);

position_history=zeros(N,Max_iter,dim);

Convergence_curve=zeros(1,Max_iter);

Trajectories=zeros(N,Max_iter);

cMax=2.079;

cMin=0.00004;

........................................................................

[sorted_fitness,sorted_indexes]=sort(GrassHopperFitness);

for newindex=1:N

    Sorted_grasshopper(newindex,:)=GrassHopperPositions(sorted_indexes(newindex),:);

end

TargetPosition=Sorted_grasshopper(1,:);

TargetFitness=sorted_fitness(1);

l=2; 

while l<Max_iter+1

    c=cMax-l*((cMax-cMin)/Max_iter); 

    for i=1:size(GrassHopperPositions,1)

        temp= GrassHopperPositions';

        for k=1:2:dim

            S_i=zeros(2,1);

            for j=1:N

                if i~=j

                    Dist=distance(temp(k:k+1,j), temp(k:k+1,i)); 

                    r_ij_vec=(temp(k:k+1,j)-temp(k:k+1,i))/(Dist+eps);

                    xj_xi=2+rem(Dist,2);

                    s_ij=((ub(k:k+1) - lb(k:k+1))*c/2)*S_func(xj_xi).*r_ij_vec; 

                    S_i=S_i+s_ij;

                end

            end

            S_i_total(k:k+1, :) = S_i;

        end

...........................................................................

        fitness_history(i,l)=GrassHopperFitness(1,i);

        position_history(i,l,:)=GrassHopperPositions(i,:);

        Trajectories(:,l)=GrassHopperPositions(:,1);

        if GrassHopperFitness(1,i)<TargetFitness

            TargetPosition=GrassHopperPositions(i,:);

            TargetFitness=GrassHopperFitness(1,i);

        end

    end

    Convergence_curve(l)=TargetFitness;

    disp(['In GOA iteration #', num2str(l), ' , target''s objective = ', num2str(TargetFitness)])

    l = l + 1;

end

if (flag==1)

    TargetPosition = TargetPosition(1:dim-1);

end

A318

作者:我爱C编程 来源:我爱C编程
本站最新成功开发工程项目案例
相关文章
  • 没有相关文章
相关评论
发表我的评论
  • 大名:
  • 内容:
本类固顶
  • 没有
  • FPGA/MATLAB商业/科研类项目合作(www.store718.com) © 2025 版权所有 All Rights Reserved.
  • Email:1480526168@qq.com 站长QQ: 1480526168