基于野马优化算法的函数寻优算法

2024-03-09 23:59

本文主要是介绍基于野马优化算法的函数寻优算法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 一、理论基础
    • 1、野马优化算法
      • (1)创建初始种群
      • (2)放牧行为
      • (3)马的交配行为
      • (4)团队领导
      • (5)领导者的交流与选拔
    • 2、WHO算法伪代码
  • 二、仿真实验与结果分析
  • 三、参考文献

一、理论基础

1、野马优化算法

文献[1]提出了一种新的优化算法,称为野马优化算法(Wild horse optimizer, WHO),其灵感来自野马的社会生活行为。
野马优化算法主要包括以下5个步骤:

  1. 创建初始种群、组建马群和挑选领导者;
  2. 马的放牧和交配;
  3. 领导团队(种马);
  4. 领导者的交流与选拔;
  5. 保存最优解。

(1)创建初始种群

所有优化算法的种群结构基本相同。将初始种群随机设置为 ( x → ) = { x → 1 , x → 2 , ⋯ , x → n } (\overrightarrow x)=\{\overrightarrow x_1,\overrightarrow x_2,\cdots,\overrightarrow x_n\} (x )={x 1,x 2,,x n},目标函数用来重复评价种群,并确定目标值为 ( O → ) = { O 1 , O 2 , ⋯ , O n } (\overrightarrow O)=\{O_1,O_2,\cdots,O_n\} (O )={O1,O2,,On}。它还通过一组作为优化技术核心的规则进行了改进。基于种群的优化技术寻找最优数量的优化问题无法保证在一次运行中找到最优解,然而,如果有足够数量的随机解和优化步骤(迭代),找到最优全局的概率会增加。
首先,将这个初始种群分成几个小组。如果 N N N是种群数量,则分组数目为 G = ⌈ N × PS ⌉ G=\lceil{N\times\text{PS}}\rceil G=N×PS,其中 P S \rm PS PS是种马在总种群中的百分比,将其视为所提出算法的控制参数。根据种群的数量,可以得到 G G G个领导者(种马),剩下的 ( N − G ) (N-G) (NG)个成员平均分配。在算法开始时随机选择组的领导者,在后续阶段,根据组成员之间的适应度(最佳适应度)选择领导者。

(2)放牧行为

如前一节所述,小马驹通常大部分时间都在群体周围吃草。为了实施放牧行为,将种马视为放牧区的中心,群体成员在中心周围搜索(放牧)。式(1)用来模拟放牧行为。式(1)使组成员在具有不同半径的领导者周围移动和搜索。 X ˉ i , G j = 2 Z cos ⁡ ( 2 π R Z ) × ( Stallion j − X i , G j ) + Stallion j (1) \bar X_{i,G}^j=2Z\cos(2\pi RZ)\times\left(\text{Stallion}^j-X_{i,G}^j\right)+\text{Stallion}^j\tag{1} Xˉi,Gj=2Zcos(2πRZ)×(StallionjXi,Gj)+Stallionj(1)其中, X i , G j X_{i,G}^j Xi,Gj是组内成员(小马驹或母马)的当前位置, Stallion j \text{Stallion}^j Stallionj是种马(组内领导者)的位置, Z Z Z是由式(2)计算的自适应结构, R R R [ − 2 , 2 ] [−2,2] [2,2]范围内的均匀随机数并使得马群在领队的不同角度(360度)放牧, π = 3.14 \pi=3.14 π=3.14 cos ⁡ \cos cos函数通过 π \pi π R R R使得个体以不同半径进行移动, X ˉ i , G j \bar X_{i,G}^j Xˉi,Gj是放牧时组成员的新位置。 P = R → 1 < TDR ; I D X = ( P = = 0 ) ; Z = R 2 ⊗ I D X + R → 3 ⊗ ( ∼ I D X ) (2) \begin{array}{l}P=\overrightarrow R_1<\text{TDR};\,\,IDX=(P==0);\\[2ex]Z=R_2\otimes IDX+\overrightarrow R_3\otimes(\sim IDX)\end{array}\tag{2} P=R 1<TDR;IDX=(P==0);Z=R2IDX+R 3(IDX)(2)其中, P P P是由0和1组成的向量, R → 1 \overrightarrow R_1 R 1 R → 3 \overrightarrow R_3 R 3 [ 0 , 1 ] [0,1] [0,1]的随机向量, R 2 R_2 R2 [ 0 , 1 ] [0,1] [0,1]内的随机数, I D X IDX IDX是满足条件( P = = 0 P==0 P==0)的向量 R → 1 \overrightarrow R_1 R 1的索引值, TDR \text{TDR} TDR是一个由式(3)计算的随着迭代次数增加从1逐渐减小至0的自适应参数。 TDR = 1 − iter × ( 1 maxiter ) (3) \text{TDR}=1-\text{iter}\times\left(\frac{1}{\text{maxiter}}\right)\tag{3} TDR=1iter×(maxiter1)(3)其中, iter \text{iter} iter是当前迭代次数, maxiter \text{maxiter} maxiter是算法的最大迭代次数。

(3)马的交配行为

一只小马驹离开组 i i i并加入临时组,另一只小马驹离开组 j j j并加入临时组。假设这两只小马驹分别是雄性和雌性,由于这两只小马驹没有家庭关系,它们可以在青春期后交配。由此产生的孩子必须离开临时群体,加入另一个群体,如 k k k。所有不同的马群都会重复这种离开、交配和繁殖的循环。
为了模拟马的出走和交配行为,提出了与平均型交叉算子相同的式(4)。 X G , K p = Crossover ( X G , i q , X G , j z ) i ≠ j ≠ k , p = q = end Crossover = Mean (4) \begin{array}{l}X_{G,K}^p=\text{Crossover}(X_{G,i}^q,X_{G,j}^z)\quad i\neq j\neq k,p=q=\text{end}\\[2ex]\text{Crossover}=\text{Mean}\end{array}\tag{4} XG,Kp=Crossover(XG,iq,XG,jz)i=j=k,p=q=endCrossover=Mean(4)其中, X G , K p X_{G,K}^p XG,Kp表表示组 k k k中个体 p p p离群后再次进入组 k k k的个体位置, X G , i q X_{G,i}^q XG,iq表表示组 i i i中个体 q q q离群后再次进入组 i i i的个体位置, X G , j z X_{G,j}^z XG,jz表表示组 j j j中个体 z z z离群后再次进入组 j j j的个体位置。很明显,后面括号里的两个位置即为其父母的位置。

(4)团队领导

领导者主要带领成员前往更合适的栖息地,如果当前组占主导地位,那么就使用这个地区;如果另一个小组占主导地位,他们必须离开该地。使用式(5)来表示该操作。 Stallion G i ‾ = { 2 Z cos ⁡ ( 2 π R Z ) × ( WH − Stallion G i ) + WH if R 3 > 0.5 2 Z cos ⁡ ( 2 π R Z ) × ( WH − Stallion G i ) − WH if R 3 ≤ 0.5 (5) \overline{\text{Stallion}_{G_i}}=\begin{dcases}2Z\cos(2\pi RZ)\times(\text{WH}-\text{Stallion}_{G_i})+\text{WH}\quad\text{if}\,\,R_3>0.5\\[2ex]2Z\cos(2\pi RZ)\times(\text{WH}-\text{Stallion}_{G_i})-\text{WH}\quad\text{if}\,\,R_3\leq0.5\end{dcases}\tag{5} StallionGi=2Zcos(2πRZ)×(WHStallionGi)+WHifR3>0.52Zcos(2πRZ)×(WHStallionGi)WHifR30.5(5)其中, Stallion G i ‾ \overline{\text{Stallion}_{G_i}} StallionGi是组 i i i领导者的下一个位置, WH \text{WH} WH是水坑(栖息地)的位置, Stallion G i \text{Stallion}_{G_i} StallionGi是组 i i i领导者的当前位置, Z Z Z是由式(2)计算的自适应结构, R R R [ − 2 , 2 ] [-2,2] [2,2]的随机数, π = 3.14 \pi=3.14 π=3.14

(5)领导者的交流与选拔

首先,随机选择领导者以保持算法的随机性。在算法的后期阶段,根据适应度选择领导者。如果其中一名组员的适应度优于组长,则组长和相应组员的位置将根据式(6)进行更改。 Stallion G i = { X G , i if cost ( X G , i ) < cost ( Stallion G i ) Stallion G i if cost ( X G , i ) > cost ( Stallion G i ) (6) \text{Stallion}_{G_i}=\begin{dcases}X_{G,i}\quad\quad\quad\,\text{if}\,\,\text{cost}(X_{G,i})<\text{cost}(\text{Stallion}_{G_i})\\[2ex]\text{Stallion}_{G_i}\quad\text{if}\,\,\text{cost}(X_{G,i})>\text{cost}(\text{Stallion}_{G_i})\end{dcases}\tag{6} StallionGi=XG,iifcost(XG,i)<cost(StallionGi)StallionGiifcost(XG,i)>cost(StallionGi)(6)

2、WHO算法伪代码

WHO算法伪代码如图1所示。
在这里插入图片描述

图1 WHO算法伪代码

二、仿真实验与结果分析

将WHO与PSO、TSA、LFD、GWO、SSA和MVO进行对比,实验设置种群规模为30,最大迭代次数为500,每种算法独立运行30次,以文献[1]中表1的F1、F3、F5、F7、F9、F10、F12、F13为例,结果显示如下:
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

函数:F1
PSO:最差值: 199.1251, 最优值: 24.0567, 平均值: 75.7259, 标准差: 37.5952, 秩和检验: 3.0199e-11
TSA:最差值: 3.7977e-20, 最优值: 8.6391e-25, 平均值: 2.1915e-21, 标准差: 7.0584e-21, 秩和检验: 3.0199e-11
LFD:最差值: 3.1771e-07, 最优值: 1.1855e-09, 平均值: 5.4427e-08, 标准差: 5.9442e-08, 秩和检验: 3.0199e-11
GWO:最差值: 5.1374e-26, 最优值: 1.4975e-29, 平均值: 2.5845e-27, 标准差: 9.3252e-27, 秩和检验: 3.0199e-11
SSA:最差值: 1.08e-06, 最优值: 2.0513e-08, 平均值: 1.8143e-07, 标准差: 2.5705e-07, 秩和检验: 3.0199e-11
MVO:最差值: 2.306, 最优值: 0.58476, 平均值: 1.3243, 标准差: 0.3795, 秩和检验: 3.0199e-11
WHO:最差值: 1.363e-48, 最优值: 3.1047e-75, 平均值: 5.7368e-50, 标准差: 2.5114e-49, 秩和检验: 1
函数:F3
PSO:最差值: 6501.7979, 最优值: 644.7392, 平均值: 1755.9489, 标准差: 1088.3267, 秩和检验: 3.0199e-11
TSA:最差值: 0.0024963, 最优值: 2.9686e-11, 平均值: 0.00025468, 标准差: 0.00054569, 秩和检验: 3.0199e-11
LFD:最差值: 4.357e-05, 最优值: 3.031e-06, 平均值: 1.3031e-05, 标准差: 8.9484e-06, 秩和检验: 3.0199e-11
GWO:最差值: 0.00018711, 最优值: 1.441e-08, 平均值: 2.3424e-05, 标准差: 4.1959e-05, 秩和检验: 3.0199e-11
SSA:最差值: 3320.1181, 最优值: 307.5603, 平均值: 1531.5274, 标准差: 855.6987, 秩和检验: 3.0199e-11
MVO:最差值: 339.5385, 最优值: 59.8682, 平均值: 187.385, 标准差: 73.1819, 秩和检验: 3.0199e-11
WHO:最差值: 6.1482e-17, 最优值: 1.9869e-33, 平均值: 2.2884e-18, 标准差: 1.1255e-17, 秩和检验: 1
函数:F5
PSO:最差值: 6991.7408, 最优值: 673.2313, 平均值: 2285.0014, 标准差: 1571.2605, 秩和检验: 3.0199e-11
TSA:最差值: 28.8936, 最优值: 26.2275, 平均值: 28.4178, 标准差: 0.75775, 秩和检验: 0.0090688
LFD:最差值: 28.3319, 最优值: 27.5325, 平均值: 28.0587, 标准差: 0.19061, 秩和检验: 2.4327e-05
GWO:最差值: 28.7589, 最优值: 25.9846, 平均值: 26.9463, 标准差: 0.83872, 秩和检验: 7.1186e-09
SSA:最差值: 2317.2236, 最优值: 25.7294, 平均值: 400.3655, 标准差: 672.3949, 秩和检验: 0.079782
MVO:最差值: 2986.4213, 最优值: 39.8747, 平均值: 469.0106, 标准差: 719.5935, 秩和检验: 1.2493e-05
WHO:最差值: 653.8461, 最优值: 26.2248, 平均值: 84.793, 标准差: 117.7462, 秩和检验: 1
函数:F7
PSO:最差值: 0.15303, 最优值: 0.01823, 平均值: 0.089016, 标准差: 0.0328, 秩和检验: 3.0199e-11
TSA:最差值: 0.018604, 最优值: 0.0044661, 平均值: 0.0090726, 标准差: 0.0034464, 秩和检验: 3.3384e-11
LFD:最差值: 0.016183, 最优值: 9.7898e-05, 平均值: 0.0048318, 标准差: 0.0035134, 秩和检验: 1.7479e-05
GWO:最差值: 0.005813, 最优值: 0.00048736, 平均值: 0.0020928, 标准差: 0.0011359, 秩和检验: 0.0036709
SSA:最差值: 0.32644, 最优值: 0.08041, 平均值: 0.18594, 标准差: 0.08038, 秩和检验: 3.0199e-11
MVO:最差值: 0.08076, 最优值: 0.015694, 平均值: 0.035094, 标准差: 0.014154, 秩和检验: 3.0199e-11
WHO:最差值: 0.0049114, 最优值: 0.00018323, 平均值: 0.0013566, 标准差: 0.0011078, 秩和检验: 1
函数:F9
PSO:最差值: 103.3937, 最优值: 31.2312, 平均值: 62.6386, 标准差: 16.9607, 秩和检验: 5.219e-12
TSA:最差值: 293.7311, 最优值: 94.1994, 平均值: 183.8828, 标准差: 41.8096, 秩和检验: 5.219e-12
LFD:最差值: 77.6847, 最优值: 5.916e-07, 平均值: 5.8816, 标准差: 15.9689, 秩和检验: 4.7954e-11
GWO:最差值: 14.2111, 最优值: 0, 平均值: 2.6653, 标准差: 3.6335, 秩和检验: 3.4057e-08
SSA:最差值: 104.4705, 最优值: 16.9143, 平均值: 56.5136, 标准差: 20.9998, 秩和检验: 5.219e-12
MVO:最差值: 194.7681, 最优值: 65.3839, 平均值: 115.8211, 标准差: 29.6424, 秩和检验: 5.219e-12
WHO:最差值: 1.8061e-05, 最优值: 0, 平均值: 6.0361e-07, 标准差: 3.2973e-06, 秩和检验: 1
函数:F10
PSO:最差值: 8.4792, 最优值: 3.7706, 平均值: 5.4217, 标准差: 0.96807, 秩和检验: 4.0806e-12
TSA:最差值: 3.5645, 最优值: 5.9064e-13, 平均值: 1.8462, 标准差: 1.5549, 秩和检验: 4.0806e-12
LFD:最差值: 0.00037869, 最优值: 0.00019293, 平均值: 0.00028003, 标准差: 5.6587e-05, 秩和检验: 4.0806e-12
GWO:最差值: 1.4655e-13, 最优值: 6.4837e-14, 平均值: 1.0569e-13, 标准差: 1.8419e-14, 秩和检验: 3.6599e-12
SSA:最差值: 6.7779, 最优值: 0.93132, 平均值: 2.6784, 标准差: 1.0741, 秩和检验: 4.0806e-12
MVO:最差值: 3.6277, 最优值: 0.54685, 平均值: 1.9589, 标准差: 0.74627, 秩和检验: 4.0806e-12
WHO:最差值: 4.4409e-15, 最优值: 8.8818e-16, 平均值: 1.3619e-15, 标准差: 1.2283e-15, 秩和检验: 1
函数:F12
PSO:最差值: 26.7013, 最优值: 3.2241, 平均值: 9.657, 标准差: 4.8842, 秩和检验: 3.0199e-11
TSA:最差值: 16.0828, 最优值: 0.32228, 平均值: 6.7402, 标准差: 4.1039, 秩和检验: 3.0199e-11
LFD:最差值: 0.11261, 最优值: 0.00093971, 平均值: 0.0089741, 标准差: 0.019759, 秩和检验: 3.0103e-07
GWO:最差值: 0.11999, 最优值: 0.013308, 平均值: 0.048264, 标准差: 0.028335, 秩和检验: 5.0723e-10
SSA:最差值: 18.1717, 最优值: 2.5074, 平均值: 6.7631, 标准差: 3.4416, 秩和检验: 3.0199e-11
MVO:最差值: 7.0241, 最优值: 0.25126, 平均值: 2.1715, 标准差: 1.4852, 秩和检验: 3.0199e-11
WHO:最差值: 0.10376, 最优值: 1.1283e-06, 平均值: 0.004366, 标准差: 0.018958, 秩和检验: 1
函数:F13
PSO:最差值: 202.2304, 最优值: 2.2319, 平均值: 44.4746, 标准差: 34.606, 秩和检验: 3.0199e-11
TSA:最差值: 4.7606, 最优值: 1.5567, 平均值: 3.1375, 标准差: 0.73333, 秩和检验: 3.0199e-11
LFD:最差值: 2.9661, 最优值: 0.063501, 平均值: 1.3717, 标准差: 1.347, 秩和检验: 3.0199e-11
GWO:最差值: 1.1281, 最优值: 0.22017, 平均值: 0.60756, 标准差: 0.23178, 秩和检验: 3.0199e-11
SSA:最差值: 45.7042, 最优值: 0.39328, 平均值: 16.2438, 标准差: 14.4898, 秩和检验: 3.0199e-11
MVO:最差值: 0.71334, 最优值: 0.076974, 平均值: 0.21566, 标准差: 0.13623, 秩和检验: 3.0199e-11
WHO:最差值: 0.011969, 最优值: 2.0758e-05, 平均值: 0.0021005, 标准差: 0.004265, 秩和检验: 1

实验结果表明:与其他算法相比,该算法具有很强的竞争力。

三、参考文献

[1] Naruei, I., Keynia, F. Wild horse optimizer: a new meta-heuristic algorithm for solving engineering optimization problems[J]. Engineering with Computers, 2022, 38: 3025-3056.

这篇关于基于野马优化算法的函数寻优算法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/792371

相关文章

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

HDFS—存储优化(纠删码)

纠删码原理 HDFS 默认情况下,一个文件有3个副本,这样提高了数据的可靠性,但也带来了2倍的冗余开销。 Hadoop3.x 引入了纠删码,采用计算的方式,可以节省约50%左右的存储空间。 此种方式节约了空间,但是会增加 cpu 的计算。 纠删码策略是给具体一个路径设置。所有往此路径下存储的文件,都会执行此策略。 默认只开启对 RS-6-3-1024k

康拓展开(hash算法中会用到)

康拓展开是一个全排列到一个自然数的双射(也就是某个全排列与某个自然数一一对应) 公式: X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0! 其中,a[i]为整数,并且0<=a[i]<i,1<=i<=n。(a[i]在不同应用中的含义不同); 典型应用: 计算当前排列在所有由小到大全排列中的顺序,也就是说求当前排列是第

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

hdu1171(母函数或多重背包)

题意:把物品分成两份,使得价值最接近 可以用背包,或者是母函数来解,母函数(1 + x^v+x^2v+.....+x^num*v)(1 + x^v+x^2v+.....+x^num*v)(1 + x^v+x^2v+.....+x^num*v) 其中指数为价值,每一项的数目为(该物品数+1)个 代码如下: #include<iostream>#include<algorithm>

【数据结构】——原来排序算法搞懂这些就行,轻松拿捏

前言:快速排序的实现最重要的是找基准值,下面让我们来了解如何实现找基准值 基准值的注释:在快排的过程中,每一次我们要取一个元素作为枢纽值,以这个数字来将序列划分为两部分。 在此我们采用三数取中法,也就是取左端、中间、右端三个数,然后进行排序,将中间数作为枢纽值。 快速排序实现主框架: //快速排序 void QuickSort(int* arr, int left, int rig

poj 3974 and hdu 3068 最长回文串的O(n)解法(Manacher算法)

求一段字符串中的最长回文串。 因为数据量比较大,用原来的O(n^2)会爆。 小白上的O(n^2)解法代码:TLE啦~ #include<stdio.h>#include<string.h>const int Maxn = 1000000;char s[Maxn];int main(){char e[] = {"END"};while(scanf("%s", s) != EO