基于非线性参数的海洋捕食者算法

一、理论基础

1、海洋捕食者算法(MPA)

请参考这里

2、非线性海洋捕食者算法(NMPA)

MPA算法根据各种研究的规则和要点以及自然界的实际行为模拟捕食者和猎物的运动。虽然具有合理的探索和开发速度,但MPA仍然在局部最优解附近停滞不前,无法实现全局最优解。NMPA的主要目的是通过调整捕食者阶段朝向猎物的大小,并使用引入的控制参数平衡算法的探索和开发阶段,来增强MPA的探索和开发。MPA算法的第二阶段包括探索和开发两个阶段。此步骤中的更改将提高MPA算法的效率和有效性。MPA算法的更新如下:
第一:NMPA算法使用一个新的自适应参数来控制捕食者移动的步长。该参数定义如下: C F n e w = a b s ( 2 ∗ ( 1 − ( I t e r M a x I t e r ) ) − 2 ) (1) CF_{new}=abs\left(2^*\left(1-\left(\frac{Iter}{Max_{Iter}}\right)\right)-2\right)\tag{1} CFnew=abs(2(1(MaxIterIter))2)(1)其中, C F n e w CF_{new} CFnew的值在区间 [ 0 , 2 ] [0,2] [0,2]中线性增加。MPA中的CF起着自适应参数的作用,以确定捕食者到达猎物的步长。NMPA使用新的线性参数的目的是在算法第二阶段的开发阶段和整个优化过程中保持算法的高探索能力。因此,该算法达到全局最优且不陷入局部最优解的机会增加。
第二:使用非线性参数 w w w作为控制参数,以平衡NMPA的探索和开发阶段。该参数定义如下: w = 2 ∗ exp ⁡ ( − ( 6 ∗ I t e r M a x I t e r ) 2 ) (2) w=2^*\exp\left(-\left(6^*\frac{Iter}{Max_{Iter}}\right)^2\right)\tag{2} w=2exp((6MaxIterIter)2)(2)其中, w w w值在区间 [ 2 , 0 ] [2,0] [2,0]中非线性减小。因此,猎物基于Lévy游走策略开发和捕食者基于布朗游走策略探索的更新公式改进如下: { s t e p s i z e i = R L ⊗ ( E l i t e i − R L ⊗ P r e y i ) P r e y i = w ∗ P r e y i + P ⋅ R ⊗ s t e p s i z e i i = 1 , 2 , ⋯   , n / 2 1 3 M a x _ I t e r < I t e r < 2 3 M a x _ I t e r (3) \begin{dcases}stepsize_i=R_L\otimes(Elite_i-R_L\otimes Prey_i)\\[2ex]Prey_i=w^*Prey_i+P\cdot R\otimes stepsize_i\end{dcases}\quad i=1,2,\cdots,n/2\\[2ex] \frac13Max\_Iter<Iter<\frac23Max\_Iter\tag{3} stepsizei=RL(EliteiRLPreyi)Preyi=wPreyi+PRstepsizeii=1,2,,n/231Max_Iter<Iter<32Max_Iter(3) { s t e p s i z e i = R B ⊗ ( R B ⊗ E l i t e i − P r e y i ) P r e y i = w ∗ E l i t e i + P ⋅ C F n e w ⊗ s t e p s i z e i i = n / 2 , ⋯   , n 1 3 M a x _ I t e r < I t e r < 2 3 M a x _ I t e r (4) \begin{dcases}stepsize_i=R_B\otimes(R_B\otimes Elite_i-Prey_i)\\[2ex]Prey_i=w^*Elite_i+P\cdot CF_{new}\otimes stepsize_i\end{dcases}\quad i=n/2,\cdots,n\\[2ex] \frac13Max\_Iter<Iter<\frac23Max\_Iter\tag{4} stepsizei=RB(RBEliteiPreyi)Preyi=wElitei+PCFnewstepsizeii=n/2,,n31Max_Iter<Iter<32Max_Iter(4)此外,算法第三阶段和涡流形成的模型也使用了新的自适应参数,更新如下: { s t e p s i z e i = R L ⊗ ( R L ⊗ E l i t e i − P r e y i ) P r e y i = E l i t e i + P ⋅ C F n e w ⊗ s t e p s i z e i i = 1 , 2 , ⋯   , n I t e r > 2 3 M a x _ I t e r (5) \begin{dcases}stepsize_i=R_L\otimes(R_L\otimes Elite_i-Prey_i)\\[2ex]Prey_i=Elite_i+P\cdot CF_{new}\otimes stepsize_i\end{dcases}\quad i=1,2,\cdots,n\\[2ex] Iter>\frac23Max\_Iter\tag{5} stepsizei=RL(RLEliteiPreyi)Preyi=Elitei+PCFnewstepsizeii=1,2,,nIter>32Max_Iter(5)最后,FADs效应公式更新如下: P r e y i = { P r e y i + C F n e w [ X min ⁡ + R L ⊗ ( X max ⁡ − X min ⁡ ) ] ⊗ U r ≤ F A D s P r e y i + [ F A D s ( 1 − r ) + r ] ( P r e y r 1 − P r e y r 2 )      r > F A D s (6) Prey_i=\begin{dcases}Prey_i+CF_{new}[X_{\min}+R_L\otimes(X_{\max}-X_{\min})]\otimes U\quad r≤FADs\\[2ex]Prey_i+[FADs(1-r)+r](Prey_{r_1}-Prey_{r_2})\quad\quad\,\,\,\, r>FADs\end{dcases}\tag{6} Preyi= Preyi+CFnew[Xmin+RL(XmaxXmin)]UrFADsPreyi+[FADs(1r)+r](Preyr1Preyr2)r>FADs(6)提出的NMPA算法的伪代码如图1所示。
在这里插入图片描述

图1 NMPA算法伪代码

二、仿真实验与结果分析

将NMPA与MPA、MVO、MFO、SSA、GWO、PSO和DE进行对比,以常用23个测试函数中的F1、F2、F3(单峰函数/50维)、F9、F10、F11(多峰函数/30维)、F15、F16、F17(固定维度多峰函数/4维、2维、2维)为例,实验设置种群规模为30,最大迭代次数为500,每种算法独立运算30次,结果显示如下:
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

函数:F1
MPA:最差值: 9.7593e-21, 最优值: 2.3297e-22, 平均值: 2.9176e-21, 标准差: 2.8823e-21, 秩和检验: 1.2118e-12
NMPA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
MVO:最差值: 16.052, 最优值: 3.6499, 平均值: 10.1821, 标准差: 2.6587, 秩和检验: 1.2118e-12
MFO:最差值: 42975.7823, 最优值: 613.5888, 平均值: 10627.2366, 标准差: 11869.196, 秩和检验: 1.2118e-12
SSA:最差值: 6.0187, 最优值: 0.14308, 平均值: 0.8488, 标准差: 1.1639, 秩和检验: 1.2118e-12
GWO:最差值: 5.8901e-19, 最优值: 4.2241e-21, 平均值: 9.7291e-20, 标准差: 1.3241e-19, 秩和检验: 1.2118e-12
PSO:最差值: 1422.2888, 最优值: 570.427, 平均值: 943.2364, 标准差: 232.9208, 秩和检验: 1.2118e-12
DE:最差值: 2.4663, 最优值: 1.0737, 平均值: 1.7091, 标准差: 0.32927, 秩和检验: 1.2118e-12
函数:F2
MPA:最差值: 7.4878e-12, 最优值: 3.7617e-14, 平均值: 1.8723e-12, 标准差: 1.7811e-12, 秩和检验: 1.2118e-12
NMPA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
MVO:最差值: 3123781.4303, 最优值: 2.3232, 平均值: 110198.9506, 标准差: 570109.5292, 秩和检验: 1.2118e-12
MFO:最差值: 141.9233, 最优值: 18.2962, 平均值: 67.5238, 标准差: 26.3164, 秩和检验: 1.2118e-12
SSA:最差值: 16.7072, 最优值: 5.1051, 平均值: 9.6025, 标准差: 2.6562, 秩和检验: 1.2118e-12
GWO:最差值: 1.3201e-11, 最优值: 7.8438e-13, 平均值: 2.8593e-12, 标准差: 2.3181e-12, 秩和检验: 1.2118e-12
PSO:最差值: 42.1832, 最优值: 15.6349, 平均值: 27.5674, 标准差: 5.8734, 秩和检验: 1.2118e-12
DE:最差值: 0.41527, 最优值: 0.23698, 平均值: 0.31728, 标准差: 0.046303, 秩和检验: 1.2118e-12
函数:F3
MPA:最差值: 0.68899, 最优值: 1.2144e-05, 平均值: 0.045161, 标准差: 0.12557, 秩和检验: 1.2118e-12
NMPA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
MVO:最差值: 9995.1464, 最优值: 2743.0958, 平均值: 5932.9683, 标准差: 1628.313, 秩和检验: 1.2118e-12
MFO:最差值: 114266.0114, 最优值: 35538.183, 平均值: 64996.6678, 标准差: 19291.1283, 秩和检验: 1.2118e-12
SSA:最差值: 24355.5837, 最优值: 3580.028, 平均值: 10210.6693, 标准差: 5342.609, 秩和检验: 1.2118e-12
GWO:最差值: 0.92636, 最优值: 0.0031258, 平均值: 0.1876, 标准差: 0.23304, 秩和检验: 1.2118e-12
PSO:最差值: 18027.7431, 最优值: 6009.4299, 平均值: 10891.0078, 标准差: 3199.3455, 秩和检验: 1.2118e-12
DE:最差值: 122023.315, 最优值: 71915.8892, 平均值: 105142.2487, 标准差: 11188.3177, 秩和检验: 1.2118e-12
函数:F9
MPA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
NMPA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
MVO:最差值: 373.4206, 最优值: 161.7475, 平均值: 254.1163, 标准差: 54.766, 秩和检验: 1.2118e-12
MFO:最差值: 445.7286, 最优值: 198.5457, 平均值: 314.901, 标准差: 49.5023, 秩和检验: 1.2118e-12
SSA:最差值: 136.8207, 最优值: 51.8892, 平均值: 99.8347, 标准差: 21.7869, 秩和检验: 1.2118e-12
GWO:最差值: 13.9408, 最优值: 2.2737e-13, 平均值: 5.1956, 标准差: 4.566, 秩和检验: 1.2078e-12
PSO:最差值: 237.8088, 最优值: 125.3253, 平均值: 183.4204, 标准差: 27.2008, 秩和检验: 1.2118e-12
DE:最差值: 271.4351, 最优值: 213.4937, 平均值: 243.9343, 标准差: 13.6591, 秩和检验: 1.2118e-12
函数:F10
MPA:最差值: 1.9168e-11, 最优值: 2.7685e-12, 平均值: 7.7766e-12, 标准差: 3.5134e-12, 秩和检验: 1.2118e-12
NMPA:最差值: 8.8818e-16, 最优值: 8.8818e-16, 平均值: 8.8818e-16, 标准差: 0, 秩和检验: NaN
MVO:最差值: 19.8502, 最优值: 2.1346, 平均值: 3.5333, 标准差: 3.1208, 秩和检验: 1.2118e-12
MFO:最差值: 19.9668, 最优值: 14.1192, 平均值: 19.2057, 标准差: 1.2817, 秩和检验: 1.2118e-12
SSA:最差值: 6.7171, 最优值: 2.6577, 平均值: 4.4863, 标准差: 1.0522, 秩和检验: 1.2118e-12
GWO:最差值: 7.5787e-11, 最优值: 8.9821e-12, 平均值: 3.4662e-11, 标准差: 1.8518e-11, 秩和检验: 1.2118e-12
PSO:最差值: 11.8298, 最优值: 7.4193, 平均值: 8.892, 标准差: 0.93704, 秩和检验: 1.2118e-12
DE:最差值: 0.83023, 最优值: 0.30607, 平均值: 0.50589, 标准差: 0.12286, 秩和检验: 1.2118e-12
函数:F11
MPA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
NMPA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
MVO:最差值: 1.1291, 最优值: 1.0491, 平均值: 1.0905, 标准差: 0.020325, 秩和检验: 1.2118e-12
MFO:最差值: 369.4205, 最优值: 4.0917, 平均值: 76.6034, 标准差: 79.6338, 秩和检验: 1.2118e-12
SSA:最差值: 0.97569, 最优值: 0.23869, 平均值: 0.49162, 标准差: 0.20463, 秩和检验: 1.2118e-12
GWO:最差值: 0.024329, 最优值: 0, 平均值: 0.0028871, 标准差: 0.0075521, 秩和检验: 0.00065896
PSO:最差值: 13.3294, 最优值: 5.1603, 平均值: 9.1243, 标准差: 2.1066, 秩和检验: 1.2118e-12
DE:最差值: 0.97066, 最优值: 0.77484, 平均值: 0.88821, 标准差: 0.057871, 秩和检验: 1.2118e-12
函数:F15
MPA:最差值: 0.00030749, 最优值: 0.00030749, 平均值: 0.00030749, 标准差: 1.927e-15, 秩和检验: 4.6159e-10
NMPA:最差值: 0.00030749, 最优值: 0.00030749, 平均值: 0.00030749, 标准差: 6.4378e-13, 秩和检验: 1
MVO:最差值: 0.063248, 最优值: 0.00054051, 平均值: 0.007415, 标准差: 0.013478, 秩和检验: 3.0199e-11
MFO:最差值: 0.020363, 最优值: 0.00053771, 平均值: 0.0023649, 标准差: 0.0049137, 秩和检验: 3.018e-11
SSA:最差值: 0.020372, 最优值: 0.00051608, 平均值: 0.0021963, 标准差: 0.0049462, 秩和检验: 3.0199e-11
GWO:最差值: 0.020363, 最优值: 0.0003075, 平均值: 0.0037806, 标准差: 0.0075477, 秩和检验: 3.0199e-11
PSO:最差值: 0.020363, 最优值: 0.00030749, 平均值: 0.0019441, 标准差: 0.0050319, 秩和检验: 0.077194
DE:最差值: 0.0012257, 最优值: 0.00049896, 平均值: 0.00074107, 标准差: 0.00014796, 秩和检验: 3.0199e-11
函数:F16
MPA:最差值: -1.0316, 最优值: -1.0316, 平均值: -1.0316, 标准差: 4.7012e-16, 秩和检验: 0.43458
NMPA:最差值: -1.0316, 最优值: -1.0316, 平均值: -1.0316, 标准差: 4.5915e-16, 秩和检验: 1
MVO:最差值: -1.0316, 最优值: -1.0316, 平均值: -1.0316, 标准差: 6.0539e-07, 秩和检验: 4.1049e-12
MFO:最差值: -1.0316, 最优值: -1.0316, 平均值: -1.0316, 标准差: 6.7752e-16, 秩和检验: 1.4286e-12
SSA:最差值: -1.0316, 最优值: -1.0316, 平均值: -1.0316, 标准差: 1.8147e-14, 秩和检验: 4.0988e-12
GWO:最差值: -1.0316, 最优值: -1.0316, 平均值: -1.0316, 标准差: 2.2139e-08, 秩和检验: 4.1049e-12
PSO:最差值: -1.0316, 最优值: -1.0316, 平均值: -1.0316, 标准差: 6.1158e-16, 秩和检验: 1.4329e-06
DE:最差值: -1.0316, 最优值: -1.0316, 平均值: -1.0316, 标准差: 6.7122e-16, 秩和检验: 8.6696e-12
函数:F17
MPA:最差值: 0.39789, 最优值: 0.39789, 平均值: 0.39789, 标准差: 1.1251e-14, 秩和检验: 1
NMPA:最差值: 0.39789, 最优值: 0.39789, 平均值: 0.39789, 标准差: 2.2453e-13, 秩和检验: 1
MVO:最差值: 0.39789, 最优值: 0.39789, 平均值: 0.39789, 标准差: 5.6405e-07, 秩和检验: 1.6072e-11
MFO:最差值: 0.39789, 最优值: 0.39789, 平均值: 0.39789, 标准差: 0, 秩和检验: 0.00014488
SSA:最差值: 0.39789, 最优值: 0.39789, 平均值: 0.39789, 标准差: 4.3518e-14, 秩和检验: 0.0027133
GWO:最差值: 0.39919, 最优值: 0.39789, 平均值: 0.39795, 标准差: 0.00026251, 秩和检验: 1.6072e-11
PSO:最差值: 0.39789, 最优值: 0.39789, 平均值: 0.39789, 标准差: 0, 秩和检验: 0.00014488
DE:最差值: 0.39789, 最优值: 0.39789, 平均值: 0.39789, 标准差: 0, 秩和检验: 0.00014488

实验结果表明:与原始MPA以及其他最近的元启发式方法相比,该算法具有优越性。

三、参考文献

[1] Ali Safaa Sadiq, Amin Abdollahi Dehkordi, Seyedali Mirjalili, et al. Nonlinear marine predator algorithm: A cost-effective optimizer for fair power allocation in NOMA-VLC-B5G networks[J]. Expert Systems With Applications, 2022, 203: 117395.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

心️升明月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值