【鲸鱼优化算法】基于阈值控制的鲸鱼算法TIWOA求解单目标优化问题附matlab代码

简介: 【鲸鱼优化算法】基于阈值控制的鲸鱼算法TIWOA求解单目标优化问题附matlab代码

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

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

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

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

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

⛄ 内容介绍

针对鲸鱼算法在迭代后期种群多样性减少问题,本文提出一种基于阈值控制的改进鲸鱼优化算法(简记为TIWOA),将均匀分布空间与伪反向学习策略相结合,对原始种群位置进行初始化,为全局搜索奠定基础;改进了基于正态变异算子的选择种群方案,增加了局部搜索速度;设计了非线性收敛因子,配合改进的基于正弦函数的螺旋位置更新,使算法在迭代后期有更好的全局搜索能力.文中选取了25个国际标准测试函数对改进算法进行测试,结果表明,TIWOA算法在收敛精度与收敛速度上,更明显优于其它算法,经过Friedman检验与Wilcoxon检验,TIWOA算法与其它改进的WOA有显著性差异,说明TIWOA算法改进有明显效果.

⛄ 部分代码

%_________________________________________________________________________%

% 鲸鱼优化算法             %

%_________________________________________________________________________%

% The Whale Optimization Algorithm

function [Leader_score,Leader_pos,Convergence_curve]=WOA(SearchAgents_no,Max_iter,lb,ub,dim,fobj)


% initialize position vector and score for the leader

Leader_pos=zeros(1,dim);

Leader_score=inf; %change this to -inf for maximization problems



%Initialize the positions of search agents

Positions=initialization(SearchAgents_no,dim,ub,lb);


Convergence_curve=zeros(1,Max_iter);


t=0;% Loop counter


% Main loop

while t<Max_iter

   for i=1:size(Positions,1)

       

       % Return back the search agents that go beyond the boundaries of the search space

       Flag4ub=Positions(i,:)>ub;

       Flag4lb=Positions(i,:)<lb;

       Positions(i,:)=(Positions(i,:).*(~(Flag4ub+Flag4lb)))+ub.*Flag4ub+lb.*Flag4lb;

       

       % Calculate objective function for each search agent

       fitness=fobj(Positions(i,:));

       

       % Update the leader

       if fitness<Leader_score % Change this to > for maximization problem

           Leader_score=fitness; % Update alpha

           Leader_pos=Positions(i,:);

       end

       

   end

   

   a=2-t*((2)/Max_iter); % a decreases linearly fron 2 to 0 in Eq. (2.3)

   

   % a2 linearly dicreases from -1 to -2 to calculate t in Eq. (3.12)

   a2=-1+t*((-1)/Max_iter);

   

   % Update the Position of search agents

   for i=1:size(Positions,1)

       r1=rand(); % r1 is a random number in [0,1]

       r2=rand(); % r2 is a random number in [0,1]

       

       A=2*a*r1-a;  % Eq. (2.3) in the paper

       C=2*r2;      % Eq. (2.4) in the paper

       

       

       b=1;               %  parameters in Eq. (2.5)

       l=(a2-1)*rand+1;   %  parameters in Eq. (2.5)

       

       p = rand();        % p in Eq. (2.6)

       

       for j=1:size(Positions,2)

           

           if p<0.5  

               if abs(A)>=1

                   rand_leader_index = floor(SearchAgents_no*rand()+1);

                   X_rand = Positions(rand_leader_index, :);

                   D_X_rand=abs(C*X_rand(j)-Positions(i,j)); % Eq. (2.7)

                   Positions(i,j)=X_rand(j)-A*D_X_rand;      % Eq. (2.8)

                   

               elseif abs(A)<1

                   D_Leader=abs(C*Leader_pos(j)-Positions(i,j)); % Eq. (2.1)

                   Positions(i,j)=Leader_pos(j)-A*D_Leader;      % Eq. (2.2)

               end

               

           elseif p>=0.5

             

               distance2Leader=abs(Leader_pos(j)-Positions(i,j));

               % Eq. (2.5)

               Positions(i,j)=distance2Leader*exp(b.*l).*cos(l.*2*pi)+Leader_pos(j);

               

           end

           

       end

   end

   t=t+1;

   Convergence_curve(t)=Leader_score;

end

⛄ 运行结果

⛄ 参考文献

[1]黄飞, 吴泽忠. 基于阈值控制的一种改进鲸鱼算法[J]. 系统工程, 2020, 38(2):16.

⛳️ 代码获取关注我

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


相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
2天前
|
算法 数据安全/隐私保护 计算机视觉
基于二维CS-SCHT变换和LABS方法的水印嵌入和提取算法matlab仿真
该内容包括一个算法的运行展示和详细步骤,使用了MATLAB2022a。算法涉及水印嵌入和提取,利用LAB色彩空间可能用于隐藏水印。水印通过二维CS-SCHT变换、低频系数处理和特定解码策略来提取。代码段展示了水印置乱、图像处理(如噪声、旋转、剪切等攻击)以及水印的逆置乱和提取过程。最后,计算并保存了比特率,用于评估水印的稳健性。
|
3天前
|
存储 算法 数据可视化
基于harris角点和RANSAC算法的图像拼接matlab仿真
本文介绍了使用MATLAB2022a进行图像拼接的流程,涉及Harris角点检测和RANSAC算法。Harris角点检测寻找图像中局部曲率变化显著的点,RANSAC则用于排除噪声和异常点,找到最佳匹配。核心程序包括自定义的Harris角点计算函数,RANSAC参数设置,以及匹配点的可视化和仿射变换矩阵计算,最终生成全景图像。
|
3天前
|
算法 Serverless
m基于遗传优化的LDPC码NMS译码算法最优归一化参数计算和误码率matlab仿真
MATLAB 2022a仿真实现了遗传优化的归一化最小和(NMS)译码算法,应用于低密度奇偶校验(LDPC)码。结果显示了遗传优化的迭代过程和误码率对比。遗传算法通过选择、交叉和变异操作寻找最佳归一化因子,以提升NMS译码性能。核心程序包括迭代优化、目标函数计算及性能绘图。最终,展示了SNR与误码率的关系,并保存了关键数据。
12 1
|
3天前
|
算法 关系型数据库 C语言
卡尔曼滤波简介+ 算法实现代码(转)
卡尔曼滤波简介+ 算法实现代码(转)
13 4
|
4天前
|
算法 调度
考虑需求响应的微网优化调度模型【粒子群算法】【matlab】
考虑需求响应的微网优化调度模型【粒子群算法】【matlab】
|
4天前
|
运维 算法
基于改进遗传算法的配电网故障定位(matlab代码)
基于改进遗传算法的配电网故障定位(matlab代码)
|
4天前
|
算法 调度
基于多目标粒子群算法冷热电联供综合能源系统运行优化(matlab代码)
基于多目标粒子群算法冷热电联供综合能源系统运行优化(matlab代码)
|
4天前
|
算法
基于改进粒子群算法的混合储能系统容量优化matlab
基于改进粒子群算法的混合储能系统容量优化matlab
|
4天前
|
算法
【免费】基于ADMM算法的多微网电能交互分布式运行策略(matlab代码)
【免费】基于ADMM算法的多微网电能交互分布式运行策略(matlab代码)
|
4天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于有序抖动块截断编码的水印嵌入和提取算法matlab仿真
这是一个关于数字图像水印嵌入的算法介绍。使用MATLAB2022a,该算法基于DOTC,结合抖动和量化误差隐藏,确保水印的鲁棒性和隐蔽性。图像被分为N*N块,根据水印信号进行二值化处理,通过调整重建电平的奇偶性嵌入水印。水印提取是嵌入过程的逆操作,通过重建电平恢复隐藏的水印比特。提供的代码片段展示了从块处理、水印嵌入到噪声攻击模拟及水印提取的过程,还包括PSNR和NC的计算,用于评估水印在不同噪声水平下的性能。