文献[1]提出了一种新的元启发式算法——技能优化算法(Skill Optimization Algorithm, SOA)来解决优化问题。设计SOA的基本灵感来自于人类获取和改进技能的努力。SOA的各个阶段在数学上分为两个阶段,分别为:(1)探索,从专家那里获得技能;(2)开发,基于实践和个人努力的技能改进。
SOA是一种基于人群的方法,其成员是努力学习和提高技能的人。SOA总体成员实际上是给定优化问题的候选解决方案。这些成员在搜索空间中的位置显示了问题决策变量的值。SOA成员的位置在算法开始时随机初始化。SOA总体可以根据式(1)使用一个矩阵进行数学建模。 X = [ X 1 ⋮ X i ⋮ X N ] N × m = [ x 1 , 1 ⋯ x 1 , d ⋯ x 1 , m ⋮ ⋱ ⋮ ⋱ ⋮ x i , 1 ⋯ x i , d ⋯ x i , m ⋮ ⋱ ⋮ ⋱ ⋮ x N , 1 ⋯ x N , d ⋯ x N , m ] N × m (1) X=\begin{bmatrix}X_1\\\vdots\\X_i\\\vdots\\X_N\end{bmatrix}_{N\times m}=\begin{bmatrix} x_{1,1} & \cdots & x_{1,d} & \cdots & x_{1,m} \\\vdots & \ddots & \vdots & \ddots& \vdots\\x_{i,1} & \cdots & x_{i,d} & \cdots & x_{i,m} \\\vdots & \ddots & \vdots & \ddots & \vdots \\ x_{N,1} & \cdots & x_{N,d} & \cdots & x_{N,m}\end{bmatrix}_{N\times m}\tag{1} X=⎣ ⎡X1⋮Xi⋮XN⎦ ⎤N×m=⎣ ⎡x1,1⋮xi,1⋮xN,1⋯⋱⋯⋱⋯x1,d⋮xi,d⋮xN,d⋯⋱⋯⋱⋯x1,m⋮xi,m⋮xN,m⎦ ⎤N×m(1)其中, X X X是SOA的人群矩阵, X i X_i Xi表示第 i i i个候选解, X i , d X_{i,d} Xi,d是第 i i i个成员的第 d d d维变量的值, N N N表示SOA的成员数, m m m是变量数。
人群中的每个成员都是问题的候选解决方案。换句话说,通过将每个成员放在问题变量中,就可以求出目标函数的值。因此,目标函数得到的值可以根据式(2)用向量进行数学建模。 F = [ F 1 ⋮ F i ⋮ F N ] N × 1 = [ F ( X 1 ) ⋮ F ( X i ) ⋮ F ( X N ) ] N × 1 (2) F=\begin{bmatrix}F_1\\\vdots\\F_i\\\vdots\\F_N\end{bmatrix}_{N\times1}=\begin{bmatrix}F(X_1)\\\vdots\\F(X_i)\\\vdots\\F(X_N)\end{bmatrix}_{N\times 1}\tag{2} F=⎣ ⎡F1⋮Fi⋮FN⎦ ⎤N×1=⎣ ⎡F(X1)⋮F(Xi)⋮F(XN)⎦ ⎤N×1(2)其中, F F F为目标函数的向量, F i F_i Fi为基于第 i i i个候选解的目标函数值。考虑到为目标函数评估的值,最好的值标识最好的成员,同样,最差的值标识最差的成员。由于在每次迭代中更新了群体的成员和目标函数的值,因此在每次迭代中也更新了最佳成员和最差成员。
SOA中更新种群成员的过程分为探索和开发两个阶段。探索阶段基于模拟从专家那里学习技能的过程。开发阶段基于通过个人努力和活动模拟技能提高。在SOA设计中,更新过程分为两个阶段进行,目的是在问题解决空间中进行全局搜索,而开发阶段的目的是进行局部搜索。在探索阶段,SOA的设计是为了让SOA成员在不同成员的指导下在搜索空间中移动,并防止其仅向最佳成员的方向移动。这增加了算法在精确扫描搜索空间和识别原始最佳区域方面的探索能力。另一方面,在开发阶段,基于种群中每个成员附近的局部搜索,算法能够收敛到更好的可能解。
在第一个阶段,每个SOA成员在社区专家成员的指导下努力获得一项技能。每个群体成员的质量与该群体成员获得的目标函数值相称。SOA成员的专家成员是基于目标函数值拥有更好条件的成员。对于每个SOA成员,所有具有比该成员更好的目标函数值的成员都被视为“专家集”。在这个集合的成员中,随机选择一个成员作为专家来训练这个成员。因此,被选来指导SOA成员的专家不一定是最佳的候选解决方案。事实上,对于所有SOA成员来说,最佳候选解决方案是专家集合的永久成员。专家成员通过学习技能使群体成员被引导到搜索空间的不同位置,即算法的全局搜索和探索能力。如果为总体的每个成员计算的新位置改进了目标函数的值,则是可以接受的。因此,更新的第一阶段可以利用式(3)和式(4)根据上面提到的概念建模。 X i P 1 : x i , d P 1 = x i , d + r × ( E i , d − I × x i , d ) , E i = X k , w h e r e F k < F i a n d k i s r a n d o m l y s e l e c t e d f r o m { 1 , 2 , … , N } , k ≠ i (3) \begin{array}{c}X_i^{P1}: x_{i,d}^{P1}=x_{i,d}+r\times\left(E_{i,d}-I\times x_{i,d}\right),\,\,E_i=X_k,\\[2ex]where\,\,F_k
在第二阶段,每个群体成员都试图通过个人实践和活动来提高在第一阶段中获得的技能。在SOA中,这个概念被建模为局部搜索,目的是增加开发效率,使每个成员在其位置附近,寻求更好的条件来提高其目标函数的价值(这表示技能水平)。与前一阶段类似,如果该阶段新计算的位置优化了目标函数值,则可以接受。SOA更新这一阶段的概念是使用式(5)和式(6)进行数学建模的。 X i P 2 : x i , d P 2 = { x i , d + 1 − 2 r t × x i , d , r < 0.5 x i , d + l b j + r ( u b j − l b j ) t , e l s e (5) X_i^{P2}:x_{i,d}^{P2}=\begin{dcases}x_{i,d}+\frac{1-2r}{t}\times x_{i,d},\quad\quad\quad r<0.5\\[2ex]x_{i,d}+\frac{lb_j+r(ub_j-lb_j)}{t},\quad else\end{dcases}\tag{5} XiP2:xi,dP2=⎩ ⎨ ⎧xi,d+t1−2r×xi,d,r<0.5xi,d+tlbj+r(ubj−lbj),else(5) X i = { X i P 2 , F i P 2 < F i X i , e l s e (6) X_i=\begin{dcases}X_i^{P2},\quad\, F_i^{P2}
将SOA与MPA、WOA、GWO、MVO和GSA进行对比,以常用23个测试函数的F3、F4、F5(单峰函数/30维)、F10、F11、F12(多峰函数/30维)、F15、F16、F17(固定维度多峰函数/4维、2维、2维)为例,实验设置种群规模为30,最大迭代次数为500,每种算法独立运算30次,结果显示如下:
函数:F3
MPA:最差值: 0.002749, 最优值: 3.4693e-11, 平均值: 0.00024226, 标准差: 0.00056517
WOA:最差值: 99627.3833, 最优值: 22622.1317, 平均值: 46415.2986, 标准差: 16294.745
GWO:最差值: 0.00026596, 最优值: 5.3374e-08, 平均值: 3.2634e-05, 标准差: 6.8924e-05
MVO:最差值: 518.081, 最优值: 88.4632, 平均值: 251.5372, 标准差: 125.8415
GSA:最差值: 1308.7457, 最优值: 520.0025, 平均值: 932.5882, 标准差: 251.8509
SOA:最差值: 8.4507e-186, 最优值: 1.3294e-212, 平均值: 2.8171e-187, 标准差: 0
函数:F4
MPA:最差值: 1.1692e-08, 最优值: 8.6927e-10, 平均值: 3.5564e-09, 标准差: 2.4421e-09
WOA:最差值: 89.0255, 最优值: 0.064128, 平均值: 49.0812, 标准差: 27.6804
GWO:最差值: 3.4242e-06, 最优值: 7.2469e-08, 平均值: 6.3138e-07, 标准差: 5.9867e-07
MVO:最差值: 4.2879, 最优值: 0.88359, 平均值: 2.0095, 标准差: 0.85523
GSA:最差值: 11.7218, 最优值: 2.8764, 平均值: 7.1536, 标准差: 2.1165
SOA:最差值: 1.7032e-104, 最优值: 4.0091e-117, 平均值: 7.7976e-106, 标准差: 3.1497e-105
函数:F5
MPA:最差值: 26.1565, 最优值: 24.5212, 平均值: 25.3497, 标准差: 0.45797
WOA:最差值: 28.7409, 最优值: 26.9839, 平均值: 28.0663, 标准差: 0.43832
GWO:最差值: 29.5295, 最优值: 26.12, 平均值: 27.3117, 标准差: 0.73941
MVO:最差值: 2303.1135, 最优值: 36.316, 平均值: 452.9835, 标准差: 585.787
GSA:最差值: 186.1108, 最优值: 24.8285, 平均值: 59.2116, 标准差: 41.9134
SOA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0
函数:F10
MPA:最差值: 3.7703e-12, 最优值: 4.6985e-13, 平均值: 1.6689e-12, 标准差: 8.782e-13
WOA:最差值: 7.9936e-15, 最优值: 8.8818e-16, 平均值: 3.7303e-15, 标准差: 2.538e-15
GWO:最差值: 1.2523e-13, 最优值: 6.4837e-14, 平均值: 9.9772e-14, 标准差: 1.4576e-14
MVO:最差值: 3.5201, 最优值: 0.52979, 平均值: 1.7494, 标准差: 0.71125
GSA:最差值: 0.9313, 最优值: 7.9482e-09, 平均值: 0.031043, 标准差: 0.17003
SOA:最差值: 8.8818e-16, 最优值: 8.8818e-16, 平均值: 8.8818e-16, 标准差: 0
函数:F11
MPA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0
WOA:最差值: 0.13334, 最优值: 0, 平均值: 0.0044446, 标准差: 0.024344
GWO:最差值: 0.030414, 最优值: 0, 平均值: 0.0048432, 标准差: 0.0090107
MVO:最差值: 0.94681, 最优值: 0.69186, 平均值: 0.85948, 标准差: 0.072169
GSA:最差值: 39.4958, 最优值: 12.86, 平均值: 26.5137, 标准差: 6.2462
SOA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0
函数:F12
MPA:最差值: 2.2571e-05, 最优值: 1.0148e-09, 平均值: 7.5869e-07, 标准差: 4.1197e-06
WOA:最差值: 0.045543, 最优值: 0.0038912, 平均值: 0.020019, 标准差: 0.010146
GWO:最差值: 0.12502, 最优值: 0.013215, 平均值: 0.050392, 标准差: 0.027809
MVO:最差值: 5.7718, 最优值: 0.25223, 平均值: 2.0333, 标准差: 1.071
GSA:最差值: 6.6585, 最优值: 0.045674, 平均值: 1.8963, 标准差: 1.2485
SOA:最差值: 1.5705e-32, 最优值: 1.5705e-32, 平均值: 1.5705e-32, 标准差: 5.5674e-48
函数:F15
MPA:最差值: 0.00030749, 最优值: 0.00030749, 平均值: 0.00030749, 标准差: 3.4733e-15
WOA:最差值: 0.0022519, 最优值: 0.00031985, 平均值: 0.00063933, 标准差: 0.00041167
GWO:最差值: 0.020363, 最优值: 0.00030767, 平均值: 0.0024484, 标准差: 0.0060761
MVO:最差值: 0.020363, 最优值: 0.00038686, 平均值: 0.0033764, 标准差: 0.0067839
GSA:最差值: 0.022, 最优值: 0.0015435, 平均值: 0.0089047, 标准差: 0.0060472
SOA:最差值: 0.0004459, 最优值: 0.0003075, 平均值: 0.00033189, 标准差: 3.6808e-05
函数:F16
MPA:最差值: -1.0316, 最优值: -1.0316, 平均值: -1.0316, 标准差: 4.46e-16
WOA:最差值: -1.0316, 最优值: -1.0316, 平均值: -1.0316, 标准差: 1.9169e-09
GWO:最差值: -1.0316, 最优值: -1.0316, 平均值: -1.0316, 标准差: 1.8557e-08
MVO:最差值: -1.0316, 最优值: -1.0316, 平均值: -1.0316, 标准差: 4.7964e-07
GSA:最差值: -1.0316, 最优值: -1.0316, 平均值: -1.0316, 标准差: 4.8787e-16
SOA:最差值: -1.025, 最优值: -1.0316, 平均值: -1.0314, 标准差: 0.001215
函数:F17
MPA:最差值: 0.39789, 最优值: 0.39789, 平均值: 0.39789, 标准差: 2.3575e-14
WOA:最差值: 0.39811, 最优值: 0.39789, 平均值: 0.3979, 标准差: 4.1362e-05
GWO:最差值: 0.40247, 最优值: 0.39789, 平均值: 0.39805, 标准差: 0.00083666
MVO:最差值: 0.39789, 最优值: 0.39789, 平均值: 0.39789, 标准差: 6.9967e-07
GSA:最差值: 0.39789, 最优值: 0.39789, 平均值: 0.39789, 标准差: 0
SOA:最差值: 0.39789, 最优值: 0.39789, 平均值: 0.39789, 标准差: 5.5195e-09
实验结果表明:文献[1]所提出的SOA比所对比的算法具有更好的性能,并获得了更具竞争力的结果。
[1] H. Givi, M. Hubalovska. Skill optimization algorithm: a new human-based metaheuristic technique[J]. Computers, Materials & Continua, 2023, 74(1): 179-202.