【优化求解】麻雀搜索优化算法(SSA)matlab源码 您所在的位置:网站首页 麻雀搜索算法论文 【优化求解】麻雀搜索优化算法(SSA)matlab源码

【优化求解】麻雀搜索优化算法(SSA)matlab源码

#【优化求解】麻雀搜索优化算法(SSA)matlab源码| 来源: 网络整理| 查看: 265

麻雀搜索算法的具体步骤描述以及公式介绍:

构建麻雀种群:分享图片

其中,d表示待优化问题的维数,n表示麻雀种群的数量。所有麻雀种群的适应度函数可以表示成如下形式:

分享图片

其中,Fx表示适应度函数值。

麻雀算法中的麻雀具有两大类分别是发现者和加入者,发现者负责为整个种群寻找食物并为加入者提供觅食的方向,因此,发现者的觅食搜索范围要比加入者的觅食搜索范围大。在每次迭代过程中,发现者按照公式(3)进行迭代。

分享图片

其中,t表示当前迭代次数,Xij表示第i个麻雀种群在第j维中的位置信息,阿尔法表示的0到1的随机数,itermax表示最大迭代次数,Q表示一个服从正态分布的随机数,L是一个1*d并且元素全为1的矩阵,R2属于0-1表示麻雀种群位置的预警值,ST属于0.5-1表示麻雀种群位置的安全值。

当R2ST时意味着种群中有部分麻雀已经发现捕食者,并向种群中的其他麻雀发出预警,所有麻雀都需要飞往安全区域进行觅食。

在觅食过程中,部分加入者会时刻监视发现者,当发现者发现更好的食物,加入者会与其进行争夺,若成功,会立即获得该发现者的食物,否则加入者按照公式(4)进行位置更新。

分享图片

其中,XP表示目前发现者所发现的最优位置,Xworst表示当前全局最差的位置,A表示其元素随机赋值为1或-1的1*d的矩阵并且满足一下关系:

L仍然是一个1*d并且元素全为1的矩阵。当i>n/2时这表明第i个加入者没有获得食物,处于饥饿状态,此时需要飞往其他地方进行觅食,以获得更多的能量。

在麻雀种群中,意识到危险的麻雀数量占总数的10%到20%,这些麻雀的位置是随机产生的,按照公式(5)对意识到危险的麻雀的位置进行不断更新。

分享图片

其中,Xbest表示当前全局最优位置,是服从标准正态分布的随机数用来作为步长控制参数,贝塔是一个属于-1到1的随机数,fi表示当前麻雀个体的适应度值,fg表示全局最佳适应度值,fw表示全局最差适应度值,像左耳朵一样的这个是读"一不洗诺"吗?"一不洗诺"表示一个避免分母为0的常数。当fi>fg时表示此时麻雀处于种群边缘,极易受到捕食者的***,当fi=fg时表示处于种群中间的麻雀也受到了危险,此时需要靠近其他麻雀以减少被捕食的风险。

%____________________________________________________________________________________ % You can simply define your cost in a seperate file and load its handle to fobj % The initial parameters that you need are: %__________________________________________ % fobj = @YourCostFunction % dim = number of your variables % Max_iteration = maximum number of generations % SearchAgents_no = number of search agents % lb=[lb1,lb2,...,lbn] where lbn is the lower bound of variable n % ub=[ub1,ub2,...,ubn] where ubn is the upper bound of variable n % If all the variables have equal lower bound you can just % define lb and ub as two single number numbers % To run SSA: [Best_score,Best_pos,SSA_cg_curve]=SSA(SearchAgents_no,Max_iteration,lb,ub,dim,fobj) %__________________________________________ clear all clc SearchAgents_no=30; % Number of search agents Function_name=‘F1‘; % Name of the test function that can be from F1 to F23 ( Max_iteration=1000; % Maximum numbef of iterations % Load details of the selected benchmark function [lb,ub,dim,fobj]=Get_Functions_details(Function_name); [Best_score,Best_pos,SSA_cg_curve]=SSA(SearchAgents_no,Max_iteration,lb,ub,dim,fobj); figure(‘Position‘,[500 500 660 290]) %Draw search space subplot(1,2,1); func_plot(Function_name); title(‘Parameter space‘) xlabel(‘x_1‘); ylabel(‘x_2‘); zlabel([Function_name,‘( x_1 , x_2 )‘]) %Draw objective space subplot(1,2,2); semilogy(SSA_cg_curve,‘Color‘,‘r‘) title(‘Objective space‘) xlabel(‘Iteration‘); ylabel(‘Best score obtained so far‘); axis tight grid on box on legend(‘SSA‘) display([‘The best solution obtained by SSA is \m ‘, num2str(Best_pos)]); display([‘The best optimal value of the objective funciton found by SSA is \n ‘, num2str(Best_score)]);

分享图片

完整代码或仿真咨询QQ1575304183

标签:shangdixinxi   上地信息   



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有