基于Sinusoidal混沌映射的麻雀搜索算法求解单目标优化问题附matlab代码

简介: 基于Sinusoidal混沌映射的麻雀搜索算法求解单目标优化问题附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法  神经网络预测雷达通信 无线传感器

信号处理图像处理路径规划元胞自动机无人机

⛄ 内容介绍

雀搜索算法是一种新型的群智能优化算法 2020 年由Xue [15] 提出主要是受麻雀的觅食 反哺食行为启发具有寻优能力强收敛速度快的特点雀搜索算法将整个麻雀种群分为三类即寻食物的生产者抢夺食物的加入者和发现危险的戒者生产者和加入者可以相互转化但各自在 群中的占比不会发生变化在模拟实验中需要使用虚拟麻雀进行食物的 与其他寻优算法相同麻雀搜索算法首先需对麻雀种群与适应度值进行初始化麻雀种群可 初始化为如下形式表达式为(3) 

n为麻雀的数量d为要优化的变量的维度即独立参数的数目;xnd为第n只麻雀第d维度的值。由此,总体麻雀适应度值表征形式为 

(4)中:f(x)为个体适应度值。适应度值较好的麻雀(即生产者)在搜索中会优先获得食物并指引群体的觅食方向与范围,与此同时,生产者会具有更大的觅食搜索范围。生产者在觅食过程中,位置不断发生移动,而在遇到捕食者时,移动规则又会发生改变,即 

(5)中:t为当前迭代次数;j∈{12d}xitj为迭代第t次时,第i个麻雀的第j个维度的值;α∈(01],为随机数;iter_max为迭代次数最多的常数;R2∈[01],为报警值;ST∈[01],为安全阈值;Q为服从正态分布的随机数;L1×d阶矩阵(元素全为1)R2ST时,代表该区域安全,无捕食者出没,生产者会出现大范围觅食行为;R2≥ST时,表示一些麻雀发现了捕食者并发出警告,所有麻雀迅速飞入安全区域。而对加入者而言,在觅食过程中,一旦生产者找到了好的食物源,加入者必会知晓,并飞向它的附近抢食,同时,也有加入者会时刻监视生产者,随时准备争抢食物。由此加入者的位置更新规则为

(6)中:xp为生产者占据的最佳位置;xworst为全局最差位置;A1×d阶矩阵,每个元素随机为1或-1A†AT(AAT)1。当i时,表示适应性较差的第i个加入者抢夺食物失败,为了更好地获得食物避免挨饿只能飞往其他地区进行觅食。总体而言,假设意识到危险的麻雀(即警戒者)10~20%。初始位置则随机产生,规则为

(7)中:λ为步长控制函数,是一个均值为0,方差为1的正态分布随机数;fi为当前麻雀适应值;fg为全局最好适应值;fw为全局最差适应值;k为麻雀移动方向;xbest为全局最优位置;ε为最小常数,避免除数为零。当fifg时,警戒者位于种群边缘,意识到危险后向中央安全区靠近;当fifg时,则是处于种群中央的麻雀意识到了危险,为躲避危险,则向其他麻雀身边靠拢。

⛄ 部分代码

%_________________________________________________________________________________

%  Salp Swarm Algorithm (SSA) source codes version 1.0


%

%   Main paper:

%   S. Mirjalili, A.H. Gandomi, S.Z. Mirjalili, S. Saremi, H. Faris, S.M. Mirjalili,

%   Salp Swarm Algorithm: A bio-inspired optimizer for engineering design problems

%   Advances in Engineering Software

%   DOI: http://dx.doi.org/10.1016/j.advengsoft.2017.07.002

%____________________________________________________________________________________


function [FoodFitness,FoodPosition,Convergence_curve]=SSA(N,Max_iter,lb,ub,dim,fobj)

if size(ub,1)==1

   ub=ones(dim,1)*ub;

   lb=ones(dim,1)*lb;

end

Convergence_curve = zeros(1,Max_iter);

%Initialize the positions of salps

SalpPositions=initialization(N,dim,ub,lb);

FoodPosition=zeros(1,dim);

FoodFitness=inf;

%calculate the fitness of initial salps

for i=1:size(SalpPositions,1)

   SalpFitness(1,i)=fobj(SalpPositions(i,:));

end

[sorted_salps_fitness,sorted_indexes]=sort(SalpFitness);

for newindex=1:N

   Sorted_salps(newindex,:)=SalpPositions(sorted_indexes(newindex),:);

end

FoodPosition=Sorted_salps(1,:);

FoodFitness=sorted_salps_fitness(1);

%Main loop

l=2; % start from the second iteration since the first iteration was dedicated to calculating the fitness of salps

while l<Max_iter+1

   c1 = 2*exp(-(4*l/Max_iter)^2); % Eq. (3.2) in the paper

   for i=1:size(SalpPositions,1)

       SalpPositions= SalpPositions';

       if i<=N/2

           for j=1:1:dim

               c2=rand();

               c3=rand();

               %%%%%%%%%%%%% % Eq. (3.1) in the paper %%%%%%%%%%%%%%

               if c3<0.5

                   SalpPositions(j,i)=FoodPosition(j)+c1*((ub(j)-lb(j))*c2+lb(j));

               else

                   SalpPositions(j,i)=FoodPosition(j)-c1*((ub(j)-lb(j))*c2+lb(j));

               end

               %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

           end

       elseif i>N/2 && i<N+1

           point1=SalpPositions(:,i-1);

           point2=SalpPositions(:,i);

           SalpPositions(:,i)=(point2+point1)/2; % % Eq. (3.4) in the paper

       end

       SalpPositions= SalpPositions';

   end

   for i=1:size(SalpPositions,1)

       Tp=SalpPositions(i,:)>ub';Tm=SalpPositions(i,:)<lb';SalpPositions(i,:)=(SalpPositions(i,:).*(~(Tp+Tm)))+ub'.*Tp+lb'.*Tm;

       SalpFitness(1,i)=fobj(SalpPositions(i,:));

       if SalpFitness(1,i)<FoodFitness

           FoodPosition=SalpPositions(i,:);

           FoodFitness=SalpFitness(1,i);

       end

   end

   Convergence_curve(l)=FoodFitness;

   l = l + 1;

end



⛄ 运行结果

⛄ 参考文献

[1]黄敬宇. 融合t分布和Tent混沌映射的麻雀搜索算法研究[D]. 兰州大学.

❤️ 关注我领取海量matlab电子书和数学建模资料
❤️部分理论引用网络文献,若有侵权联系博主删除


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
4月前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
495 0
|
4月前
|
机器学习/深度学习 算法 机器人
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
256 8
|
4月前
|
机器学习/深度学习 算法 自动驾驶
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
289 8
|
4月前
|
机器学习/深度学习 供应链 算法
【电动车】基于削峰填谷的电动汽车多目标优化调度策略研究(Matlab代码实现)
【电动车】基于削峰填谷的电动汽车多目标优化调度策略研究(Matlab代码实现)
191 0
|
4月前
|
存储 人工智能 移动开发
利用 Hough 变换处理量测得到的含杂波的二维坐标,解决多目标航迹起始问题(Matlab代码实现)
利用 Hough 变换处理量测得到的含杂波的二维坐标,解决多目标航迹起始问题(Matlab代码实现)
123 0
|
4月前
|
机器学习/深度学习 数据采集 负载均衡
结合多种启发式解码方法的混合多目标进化算法,用于解决带工人约束的混合流水车间调度问题(Matlab代码实现)
结合多种启发式解码方法的混合多目标进化算法,用于解决带工人约束的混合流水车间调度问题(Matlab代码实现)
261 0
|
4月前
|
机器学习/深度学习 人工智能 算法
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
234 0
|
4月前
|
数据采集 分布式计算 并行计算
mRMR算法实现特征选择-MATLAB
mRMR算法实现特征选择-MATLAB
324 2
|
5月前
|
传感器 机器学习/深度学习 编解码
MATLAB|主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性
MATLAB|主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性
302 3
|
5月前
|
存储 编解码 算法
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
219 6