本文主要是介绍基于野马优化算法的函数寻优算法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 一、理论基础
- 1、野马优化算法
- (1)创建初始种群
- (2)放牧行为
- (3)马的交配行为
- (4)团队领导
- (5)领导者的交流与选拔
- 2、WHO算法伪代码
- 二、仿真实验与结果分析
- 三、参考文献
一、理论基础
1、野马优化算法
文献[1]提出了一种新的优化算法,称为野马优化算法(Wild horse optimizer, WHO),其灵感来自野马的社会生活行为。
野马优化算法主要包括以下5个步骤:
- 创建初始种群、组建马群和挑选领导者;
- 马的放牧和交配;
- 领导团队(种马);
- 领导者的交流与选拔;
- 保存最优解。
(1)创建初始种群
所有优化算法的种群结构基本相同。将初始种群随机设置为 ( x → ) = { x → 1 , x → 2 , ⋯ , x → n } (\overrightarrow x)=\{\overrightarrow x_1,\overrightarrow x_2,\cdots,\overrightarrow x_n\} (x)={x1,x2,⋯,xn},目标函数用来重复评价种群,并确定目标值为 ( 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) (N−G)个成员平均分配。在算法开始时随机选择组的领导者,在后续阶段,根据组成员之间的适应度(最佳适应度)选择领导者。
(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)×(Stallionj−Xi,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=R1<TDR;IDX=(P==0);Z=R2⊗IDX+R3⊗(∼IDX)(2)其中, P P P是由0和1组成的向量, R → 1 \overrightarrow R_1 R1和 R → 3 \overrightarrow R_3 R3是 [ 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 R1的索引值, 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=1−iter×(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)×(WH−StallionGi)+WHifR3>0.52Zcos(2πRZ)×(WH−StallionGi)−WHifR3≤0.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所示。
二、仿真实验与结果分析
将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.
这篇关于基于野马优化算法的函数寻优算法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!