泥环算法 (MRA)附matlab代码

发布于:2022-11-08 ⋅ 阅读:(993) ⋅ 点赞:(0)

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

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

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

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

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

⛄ 内容介绍

本文提出了一种新的元启发式优化算法,即泥环算法(MRA),它模拟了佛罗里达大西洋沿岸宽吻海豚的泥环摄食行为。MRA 的灵感主要基于宽吻海豚的觅食行为及其泥环摄食策略。海豚采用这种策略来诱捕鱼类,方法是单只海豚在沙子中快速移动尾巴并在鱼群周围游泳,从而形成羽流。鱼儿迷失了方向,跃过水面,却发现海豚在等待。MRA优化算法在数学上模拟了这种喂养策略,并通过与其他元启发式算法的综合比较证明了它的优化有效性。比较中使用了 29 个基准函数和 4 个常用的基准工程挑战。统计比较和结果证明,所提出的 MRA 在处理这些优化问题方面具有优势,并且可以比其他元启发式优化器获得最佳解决方案。

群体智能自诞生之日起就受到了机器学习社区的关注[1]。许多应用传统技术难以解决的优化问题可以通过群体智能方法成功解决。差异、波动、负反馈、正反馈、自组织、污名化和去中心化是群体智能的一些主要特征。利用群体智能的属性和定义来设计许多基于它的算法。这些方法可以分为两类。一种是仿生过程算法,一种是仿生行为算法。第一类由遗传算法监督,并模拟种群进化[2]. 第二类模仿各种物种寻找猎物的行为。蚁群优化[3]、人工蜂群[4]、粒子群优化[5]、海豚群算法[1]是这个类别的一些例子。这些算法在模式识别、聚类分析、无线传感器网络等方面有着广泛的应用。这些算法记录了良好的性能,并且它们正在被广泛实施。蚁群优化伪装蚂蚁的觅食行为,利用信息交换信息素寻找从巢穴到食物来源的最短路径。人工蜂群算法正在利用蜜蜂的采蜜行为,通过分工合作找到更好的蜜源。通过遗传算法模拟基因的交换和突变,并通过“适者生存”的规则,找到最适合环境的基因。采用粒子群优化方法模拟鸟群的捕食行为,通过信息交换发现猎物,并在考虑其他鸟类信息的情况下从搜索结果中定位最佳猎物。人类通过模仿自然获得了令人鼓舞的结果。

除了已经成功模拟的鸟类、蜜蜂和蚂蚁,自然界中还有其他生物如萤火虫、细菌等值得研究。海豚也不例外。相反,海豚具有许多可以模拟的生活习性和生物学特征,例如信息交流、分工、合作和回声定位。在他们的掠夺过程中,包括搜索、呼叫、接收和捕食在内的几个阶段都会派上用场,以实现他们的目标。在美国佛罗里达州的大西洋沿岸,观察到宽吻海豚的合作摄食行为。称为泥环喂料。它也被称为泥羽钓鱼[6]. 海豚采用这种狩猎策略来觅食和诱捕鱼类。羽毛是由一只海豚在沙子中快速移动尾巴并在一群鱼周围游泳时产生的。鱼儿变得迷失方向,因为它在它们周围生成了一个瞬间的网。鱼跃过水面,却发现海豚从羽流中跃出捕捉它们。图 1展示了从头顶依次进行的“泥羽供给”。

⛄ 部分代码

%_________________________________________________________________________%

%  Mud Ring Algorithm (MRA) source codes demo 1.0                         %

%                                                                         %

%  Developed in MATLAB R2020a                                             %

%                                                                         %

% 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

% T_max = 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 MRA: [MRLeader_score,MRLeader_pos,MRA_convergence_curve]=MRA(T_max, SearchAgents_no, dim, lb, ub, fobj)

%__________________________________________

close all

clear all 

clc

SearchAgents_no=30; % Number of search agents

Function_name='F3'; % Name of the test function that can be from F1 to F29 (Table 6,7,8, and 9 in the paper)

T_max=100; % Maximum numbef of iterations

% Load details of the selected benchmark function

[lb,ub,dim,fobj]=Get_Functions_details(Function_name);

[MRLeader_score,MRLeader_pos,MRA_convergence_curve]=MRA(T_max, SearchAgents_no, dim, lb, ub, fobj);

figure('Position',[269   240   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(MRA_convergence_curve,'Color','r')

title('Objective space')

xlabel('Iteration');

ylabel('Best score obtained so far');

axis tight

grid on

box on

legend('MRA')

img =gcf;  %获取当前画图的句柄

print(img, '-dpng', '-r600', './运行结果33.png')         %即可得到对应格式和期望dpi的图像

display(['The best solution obtained by MRA is : ', num2str(MRLeader_pos)]);

display(['The best optimal value of the objective funciton found by MRA is : ', num2str(MRLeader_score)]);

⛄ 运行结果

⛄ 参考文献

❤️ 关注我领取海量matlab电子书和数学建模资料

❤️部分理论引用网络文献,若有侵权联系博主删除

本文含有隐藏内容,请 开通VIP 后查看