matlab多目标优化之海洋捕食者算法

8e02e53495353e80a5b210dbfc65d157.png

5627d1f1bb6925d229b39b6d35f2a3a6.png

(图片来源于参考资料截图)

海洋捕食者算法(Marine Predators Algorithm, MPA)是Afshin Faramarzi等人于2020年提出的一种新型元启发式优化算法。该算法是受海洋生物中捕食者和猎物的行为启发,在该算法中,捕食者和猎物均被视为搜索个体,捕食者会搜索猎物.同时猎物会寻找食物,主要以下特点和规则:

1)海洋捕食者对猎物丰富区域采取莱维飞行(Levy)策略,而对捕食者丰富区域采用布朗运动;

2) 捕食者在不同阶段,即捕食者与猎物游速不同时,会采用的觅食策略是不同的;

3)涡流形成或鱼类聚集效应(FADs)效应会改变捕食者觅食行为;

4)捕食者具有良好记忆提醒同类及记住成功觅食区域。

一、MAP的实现流程

根据以上特点,MPA的主要算法流程可以分为以下几步:

1)初始化种群。初始化种群可以通过随机初始或者通过混沌映射的方式来进行种群初始。这里采用随机初始的方式。

2)构建精英矩阵(Elite matrix)和猎物矩阵(Prey matrix),以及完成记忆存储;

3)MPA优化过程,可分为三阶段:

a) 在迭代前期,捕食者速度比猎物速度快,MPA采取勘探策略,其数学模型描述为:

5cb516e1e9bb188a37d6d9c12d211331.png

b) 在迭代中期,捕食者速度与猎物速度相同,此时MPA勘探和开发策略并重,猎物采用Levy飞行策略,而捕食者负责勘探,采用布朗运动策略,其数学模型描述为:

78f3fb2cee79acc77b9775afef783913.png

c) 在迭代后期,捕食者速度比猎物速度慢,MPA采用开发策略,捕食者采用levy飞行策略,其数学模型描述为:

8aab27caee728f32e6ede923736c9e8e.png

4)完成记忆存储和精英矩阵更新

5)添加FADs效应。这一部可以避免局部最优停滞,其数学模型描述为:

260e7fd38f14e01a1ce36554e6be1568.png

以上就是整个算法的实现过程,完整源代码Afshin Faramarzi已在File Exchange和GitHub中进行分享,这里就不再占用篇幅。

二、MAP的应用场景

ac66b68bd10bb568ad5fa48bf8c76664.png

(图片来源于参考资料截图)

为了验证MPA的效率,作者采用MPA针对29个优化测试函数、CEC-BC-2017的测试题等进行测试,取得不错的效果。作者通过与其他常用的优化算法进行对比发现,MPA的优化效率明显优于GA、PSO、GSA、CS、SSA和CMA-ES的算法,与SHADE和LSHADE-cnEpSin旗鼓相当。

在MPA的源程序文件夹中,包含如下几个关键文件:

MPA.m                              —— 海洋捕食者算法核心代码

levy.m                               —— levy策略

initialization.m                 —— 初始化

Get_Functions_details.m —— 测试函数

func_plot.m                      —— 绘图

main.m                             —— 测试用主函数

以下为测试用主函数:

clear;clc;close all;
format long
SearchAgents_no = 25;    % Number of search agents
Function_name    = 'F23'; % name of functions in Get_Functions_details.m 
Max_iteration    = 500;   % Maximum number of iterations
[lb,ub,dim,fobj] = Get_Functions_details(Function_name);
[Best_score,Best_pos,Convergence_curve]=MPA(SearchAgents_no,Max_iteration,lb,ub,dim,fobj);


% function topology
figure('Position',[500 400 700 290])
subplot(1,2,1);
func_plot(Function_name);
title('Function Topology')
xlabel('x_1');
ylabel('x_2');
zlabel([Function_name,'( x_1 , x_2 )'])


% Convergence curve
subplot(1,2,2);
semilogy(Convergence_curve,'Color','r')
title('Objective space')
xlabel('Iteration');
ylabel('Best score obtained so far');


display(['The best solution obtained by MPA is : ', num2str(Best_pos,10)]);
display(['The best optimal value of the objective function found by MPA is : ', num2str(Best_score,10)]);
disp(sprintf('--------------------------------------'));

可根据自己需要在Get_Functions_details.m函数定义自己的函数,也可以单独定义一个待求函数文件。

如有需要海洋捕食者算法MPA完整代码的伙伴可以通过参考资料链接下载,或在公众号中回复“QQ”加入matlab编程爱好者②群获取,在群文件matlab爱好者公众号数据及程序文件夹下的海洋捕食者算法MPA

加群时,务必准确填写入群邀请码,否则一律拒加!

参考资料:

[1] Faramarzi A, et al. Marine Predators Algorithm: A nature-inspired metaheuristic. Expert Systems with Applications, 2020.

DOI: doi.org/10.1016/j.eswa.2020.113377

[2] github.com/afshinfaramarzi

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 海洋捕食者算法是一种基于自然选择的捕食行为的优化算法,该算法模拟了自然界海洋捕食者和被捕食者之间的进化竞争过程和群体智能协作机制。这种算法通常应用于求解多目标优化问题和复杂的非线性优化问题,能够快速找到最优解或者接近最优解的解决方案。 基于MATLAB平台的海洋捕食者算法的实现,通常包括以下几个步骤:首先,定义问题的目标函数并确定优化问题的约束条件。然后,设计合适的初始值和超参数进行参数初始化。接着,构建捕食者群和被捕食者群,进行种群初始化。在进行迭代优化过程,每一次迭代时捕食者采用算术交叉和变异操作来更新个体位置,被捕食者则采用簇操作来保持群体的多样性。根据更新后的个体位置,重新更新目标函数值并比较各个个体的适应度,确定新的捕食者和被捕食者个体,然后重复进行迭代过程,直到满足收敛准则或者达到最大迭代次数为止。 海洋捕食者算法具有计算效率高、全局搜索能力强、易于实现等优点,因此被广泛地应用于解决各种复杂的优化问题,特别适用于搜索范围比较大、局部极值多的优化问题。 ### 回答2: 海洋捕食者算法(Marine Predators Algorithm,简称MPA)是一种仿生优化算法,其目的是解决复杂的优化问题。该算法的灵感来源于海洋生物捕食者行为。MPA 将优化问题看作是一群捕食者海洋寻找猎物的过程,其捕食者代表搜索者,而猎物代表优化问题的最优解。算法过程捕食者会遵循一定的策略,如寻找和追踪猎物,以及适当地探索和利用环境信息等,来寻找最优解。 算法的实现,将搜索空间看作是海洋,将目标函数值看作是捕食者海洋的位置。通过仿真捕食者与猎物之间的交互,不断地更新捕食者的位置和状态,达到优化目标的最佳解。 该算法在优化解决方案具有一定优势,如良好的搜索效率、高度自适应和能够处理复杂的非线性问题等。同时,该算法也有一些局限性,如在大规模问题容易出现陷入局部最优等问题。 MATLAB 是一种科学计算软件,其拥有丰富的数学库和算法库,对海洋捕食者算法的实现提供了良好的支持。利用MATLAB语言实现MPA 算法,可以更加灵活和高效地完成算法的相关操作。在实际应用,通过修改捕食者的运动规则、适应度函数等参数,可以实现不同场景下的优化问题的求解。 ### 回答3: 海洋捕食者算法是一种模拟海洋生态系统捕食者和被捕食者之间竞争和适应的算法,可以应用于优化问题的求解。 该算法使用一个群体搜寻的方法,在每次迭代,通过对群体每个个体的位置和适应度进行更新和调整,最终得到最优解。 在该算法捕食者和被捕食者的角色由不同的种群扮演,它们通过复杂的捕食关系进行交互,在模拟生态系统的自然选择和适应性进化机制。 使用Matlab实现海洋捕食者算法时,需要进行两个主要的步骤:种群初始化和迭代搜索。在种群初始化,可以随机生成一些初始捕食者和被捕食者。在迭代搜索,通过不断地更新个体位置和适应度函数,来确定每个个体的适应性大小,从而让优秀的个体被保留,不好的个体被淘汰。 总的来说,海洋捕食者算法是一种有效的解决优化问题的算法,它通过模拟生态系统复杂的捕食关系,实现了较好的优化效果。在Matlab的实现也相对简单,可以通过一些编程技巧和常用的函数库来实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值