改进分组教学优化算法(Modified Group Teaching Optimization Algorithm,MGTOA)原文作者
一、算法灵感
分组教学优化算法(Group Teaching Optimization Algorithm, GTOA)是一种模拟群体教学机制的元启发式优化算法。GTOA的灵感来自于集体教学机制。每个学生都将学习在教师阶段获得的知识,但每个学生的自主权都很弱。本文认为每个学生都有不同的学习动机。优秀学生具有较强的自学能力,而普通学生具有一般的自学动机。为了解决这一问题,本文提出了一种学习动机策略,并添加了基于随机反对意见的学习和重启策略,以提高优化算法(Modified Group Teaching Optimization Algorithm, MGTO)的全局性能。
二、分组教学优化算法
GTOA的理念是通过模拟小组学习机制来提高整个班级的知识水平。考虑到每个学生都有不同的知识,这在实践中是非常复杂的。为了将分组教学的思想融入优化算法中,本文假设群体、决策变量和适应度值与学生、提供给学生的科目和学生的知识相似。该算法分为以下四个阶段。
2.1 能力分组阶段
为了更好地展示小组教学的优势,所有学生都会根据自己的知识水平分为两组,老师会对这两组学生进行不同的教学。在分组中,相对强大的一组被称为精英学生,另一组是普通学生。教师在教学时将更有能力制定不同的教学计划。分组后,随着教师的教学,精英学生与普通学生之间的差距会越来越大。为了更好地教学,GTOA的分组是一个动态过程,在一个学习周期后再次进行分组。
2.2 教师阶段
教师阶段是指学生通过教师获得知识。在GTOA中,教师为两组学生制定两种不同的教学计划。
教师阶段一:优秀学生接受知识的能力较强,因此教师更注重提高学生的整体平均知识水平。此外,还考虑了学生对知识接受程度的差异。因此,精英学生将根据教师的教学和学生的整体知识水平进行学习。这样可以有效地提高整体知识水平。
x
t
e
a
c
h
e
r
,
i
=
x
i
+
a
×
(
x
T
−
F
×
(
b
×
M
+
c
×
x
i
)
)
(1)
{x_{teacher,i}} = {x_i} + a \times ({x_T} - F \times (b \times M + c \times {x_i}))\tag{1}
xteacher,i=xi+a×(xT−F×(b×M+c×xi))(1)
M
=
1
N
∑
i
=
1
N
x
i
(2)
M = {1 \over N}\sum\limits_{i = 1}^N {{x_i}} \tag{2}
M=N1i=1∑Nxi(2)
b
+
c
=
1
(3)
b + c = 1\tag{3}
b+c=1(3)其中,
N
N
N 是学生人数,
x
i
{x_i}
xi 是第
i
i
i 个学生。
x
T
{x_T}
xT 是一名教师。
M
M
M 是学生的平均知识。
F
F
F 是
1
1
1 或
2
2
2 的系数,
x
t
e
a
c
h
e
r
,
i
{x_{teacher,i}}
xteacher,i 是通过教师阶段获得的解。
a
a
a、
b
b
b 和
c
c
c 是
[
0
,
1
]
[0,1]
[0,1] 中的随机数。
F
F
F 的值可以是
1
1
1 或
2
2
2。
x
t
e
a
c
h
e
r
,
i
=
x
i
+
2
×
d
×
(
x
T
−
x
i
)
(4)
{x_{teacher,i}} = {x_i} + 2 \times d \times ({x_T} - {x_i})\tag{4}
xteacher,i=xi+2×d×(xT−xi)(4)其中,
d
d
d 是
[
0
,
1
]
[0,1]
[0,1] 之间的随机数。
此外,学生不能保证他们会在教师阶段获得知识,因此指定了最小值来表示学生在教师阶段之后的知识水平。
x
t
e
a
c
h
e
r
,
i
=
{
x
t
e
a
c
h
e
r
,
i
,
f
(
x
t
e
a
c
h
e
r
,
i
)
<
f
(
x
i
)
x
i
,
f
(
x
t
e
a
c
h
e
r
,
i
)
≥
f
(
x
i
)
(5)
{x_{teacher,i}} = \left\{ \begin{aligned} {x_{teacher,i}},f({x_{teacher,i}}) < f({x_i}) \cr {x_i},f({x_{teacher,i}}) \ge f({x_i}) \cr \end{aligned} \right. \tag{5}
xteacher,i={xteacher,i,f(xteacher,i)<f(xi)xi,f(xteacher,i)≥f(xi)(5)
2.3 学生阶段
学生可以在业余时间通过自学或与其他学生互动来获得知识。学生阶段包括学生阶段一和学生阶段二。为了提高自己的知识水平。在业余时间,学生会将自己在教学阶段学到的知识进行总结,以供自学。
x
s
t
u
d
e
n
t
,
i
=
{
x
t
e
a
c
h
e
r
,
i
+
e
×
(
x
t
e
a
c
h
e
r
,
i
−
x
t
e
a
c
h
e
r
,
j
)
+
g
×
(
x
t
e
a
c
h
e
r
,
i
−
x
i
)
,
f
(
x
t
e
a
c
h
e
r
,
i
)
<
f
(
x
t
e
a
c
h
e
r
,
j
)
x
t
e
a
c
h
e
r
,
i
−
e
×
(
x
t
e
a
c
h
e
r
,
i
−
x
t
e
a
c
h
e
r
,
j
)
+
g
×
(
x
t
e
a
c
h
e
r
,
i
−
x
i
)
,
f
(
x
t
e
a
c
h
e
r
,
i
)
≥
f
(
x
t
e
a
c
h
e
r
,
j
)
(6)
{x_{student,i}} = \left\{ \begin{aligned} {x_{teacher,i}} + e \times ({x_{teacher,i}} - {x_{teacher,j}}) + \cr g \times ({x_{teacher,i}} - {x_i}),f({x_{teacher,i}}) < f({x_{teacher,j}}) \cr {x_{teacher,i}} - e \times ({x_{teacher,i}} - {x_{teacher,j}}) + \cr g \times ({x_{teacher,i}} - {x_i}),f({x_{teacher,i}}) \ge f({x_{teacher,j}}) \cr\end{aligned} \right.\tag{6}
xstudent,i=⎩
⎨
⎧xteacher,i+e×(xteacher,i−xteacher,j)+g×(xteacher,i−xi),f(xteacher,i)<f(xteacher,j)xteacher,i−e×(xteacher,i−xteacher,j)+g×(xteacher,i−xi),f(xteacher,i)≥f(xteacher,j)(6)其中,
e
e
e 和
g
g
g 是
[
0
,
1
]
[0,1]
[0,1] 范围内的两个随机数,
x
s
t
u
d
e
n
t
,
i
{x_{student,i}}
xstudent,i 是学生
i
i
i 通过从学生阶段学习而获得的知识,
x
t
e
a
c
h
e
r
,
j
{x_{teacher,j}}
xteacher,j 是学生
j
j
j 通过从教师阶段学习而获取的知识,
j
j
j 是一个
1
1
1 到
N
N
N 之间的随机整数。在等式(6)中,右边的第二项和第三项分别表示向其他学生学习和自我学习。
此外,学生无法通过学生阶段获得知识,因此指定了最小值来表示学生在教师阶段之后的知识水平。
x
i
=
{
x
t
e
a
c
h
e
r
,
i
,
f
(
x
t
e
a
c
h
e
r
,
i
)
<
f
(
x
s
t
u
d
e
n
t
,
i
)
x
s
t
u
d
e
n
t
,
i
,
f
(
x
t
e
a
c
h
e
r
,
i
)
≥
f
(
x
s
t
u
d
e
n
t
,
i
)
(7)
{x_i} = \left\{ \begin{aligned} {x_{teacher,i}},f({x_{teacher,i}}) < f({x_{student,i}}) \cr {x_{student,i}},f({x_{teacher,i}}) \ge f({x_{student,i}}) \cr\end{aligned} \right.\tag{7}
xi={xteacher,i,f(xteacher,i)<f(xstudent,i)xstudent,i,f(xteacher,i)≥f(xstudent,i)(7)
2.4 教师分配阶段
选择优秀的教师可以提高学生的学习能力。建立良好的教师匹配机制对提高学生的知识水平具有重要意义。在GWO算法中,通过选择最好的三只狼来获得平均值,并用于引导所有狼进行捕食。受GWO算法狩猎行为的启发,教师的分配由以下公式表示:
x
T
=
{
x
f
i
r
s
t
,
f
(
x
f
i
r
s
t
)
≤
f
(
x
f
i
r
s
t
+
x
s
e
c
o
n
d
+
x
t
h
i
r
d
3
)
x
f
i
r
s
t
+
x
s
e
c
o
n
d
+
x
t
h
i
r
d
3
,
f
(
x
f
i
r
s
t
)
>
f
(
x
f
i
r
s
t
+
x
s
e
c
o
n
d
+
x
t
h
i
r
d
3
)
(8)
{x_T} = \left\{ \begin{aligned} {x_{{{first}}}}{{ }},f({x_{{{first}}}}) \le f({{{x_{{{first}}}} + {x_{{{second}}}} + {x_{{{third}}}}} \over 3}) \cr {{{x_{{{first}}}} + {x_{{{second}}}} + {x_{{{third}}}}} \over 3},f({x_{{{first}}}}) > f({{{x_{{{first}}}} + {x_{{{second}}}} + {x_{{{third}}}}} \over 3}) \cr\end{aligned} \right.\tag{8}
xT=⎩
⎨
⎧xfirst,f(xfirst)≤f(3xfirst+xsecond+xthird)3xfirst+xsecond+xthird,f(xfirst)>f(3xfirst+xsecond+xthird)(8)其中,
x
f
i
r
s
t
{x_{{{first}}}}
xfirst,
x
s
e
c
o
n
d
{x_{{{second}}}}
xsecond 和
x
t
h
i
r
d
{x_{{{third}}}}
xthird 分别是具有第一、第二和第三适应度值的学生。为了加速算法的收敛,精英学生和普通学生通常使用相同的老师。
三、改进分组教学优化算法
3.1 学习动机
在原始算法的学生阶段,每个学生都可以通过自学或与同学交流来获得知识。然而,它不适合精英学生和普通学生。精英学生比普通学生有更强的学习能力和动力,更倾向于自学。然而,普通学生的学习能力较弱,往往在同学之间学习。
因此,精英学生根据等式(9)获得学习动机
D
D
D。并通过等式(10)找到新的解决方案。普通学生可以根据等式(11)找到新方案。
D
=
(
1
−
i
)
/
N
∗
sin
(
2
∗
π
∗
r
)
(9)
D = (1 - i)/N*\sin (2*\pi *r)\tag{9}
D=(1−i)/N∗sin(2∗π∗r)(9)
x
s
t
u
d
e
n
t
,
i
=
x
t
e
a
c
h
e
r
,
i
+
D
×
x
t
e
a
c
h
e
r
,
i
(10)
x_{student,i} = x_{teacher,i} + D \times x_{teacher,i}\tag{10}
xstudent,i=xteacher,i+D×xteacher,i(10)其中,
r
r
r 是
[
0
,
1
]
[0,1]
[0,1] 的随机数。
x
s
t
u
d
e
n
t
,
i
=
{
x
t
e
a
c
h
e
r
,
i
+
e
×
(
x
t
e
a
c
h
e
r
,
i
−
x
t
e
a
c
h
e
r
,
j
)
+
g
×
(
x
t
e
a
c
h
e
r
,
i
−
M
)
,
f
(
x
t
e
a
c
h
e
r
,
i
)
<
f
(
x
t
e
a
c
h
e
r
,
j
)
x
t
e
a
c
h
e
r
,
i
−
e
×
(
x
t
e
a
c
h
e
r
,
i
−
x
t
e
a
c
h
e
r
,
j
)
+
g
×
(
x
t
e
a
c
h
e
r
,
i
−
M
)
,
f
(
x
t
e
a
c
h
e
r
,
i
)
≥
f
(
x
t
e
a
c
h
e
r
,
j
)
(11)
{x_{student,i}} = \left\{ \begin{aligned} {x_{teacher,i}} + e \times ({x_{teacher,i}} - {x_{teacher,j}}) + g \times ({x_{teacher,i}} - M),f({x_{teacher,i}}) < f({x_{teacher,j}}) \cr {x_{teacher,i}} - e \times ({x_{teacher,i}} - {x_{teacher,j}}) + g \times ({x_{teacher,i}} - M),f({x_{teacher,i}}) \ge f({x_{teacher,j}}) \cr\end{aligned} \right.\tag{11}
xstudent,i={xteacher,i+e×(xteacher,i−xteacher,j)+g×(xteacher,i−M),f(xteacher,i)<f(xteacher,j)xteacher,i−e×(xteacher,i−xteacher,j)+g×(xteacher,i−M),f(xteacher,i)≥f(xteacher,j)(11)
3.2 基于随机反向学习机制
基于对立学习(OBL)是一种新的计算智能方案。在过去的几年里,OBL已经成功地应用于各种基于种群的进化算法。基于随机对立的学习在基于对立的学习的基础上增加
[
0
,
1
]
[0,1]
[0,1] 的随机值,从而获得逆解范围内的随机解。它不仅扩大了搜索范围,而且增强了种群的多样性,使算法具有更强的探索能力和收敛能力。具体公式如下:
x
n
e
w
i
=
(
u
b
+
l
b
)
−
(
x
T
−
t
)
/
T
max
×
r
a
n
d
×
x
i
(12)
xne{w_i} = (ub + lb) - ({x_T} - t)/{T_{\max }} \times rand \times {x_i}\tag{12}
xnewi=(ub+lb)−(xT−t)/Tmax×rand×xi(12)其中,
x
n
e
w
i
xnew_i
xnewi 表示在基于随机对立的学习之后获得的解。
确定通过基于随机反向学习获得的解是否优于原始解:
x
i
=
{
x
i
,
f
(
x
i
)
≤
f
(
x
n
e
w
i
)
x
n
e
w
i
,
f
(
x
i
)
>
f
(
x
n
e
w
i
)
(13)
x_i = \left\{ \begin{aligned} &x_i{{ }}&,f(x_i) \le f(xnew_i) \cr &xnew_i{{ }}&,f(x_i) > f(xnew_i) \cr\end{aligned} \right.\tag{13}
xi={xixnewi,f(xi)≤f(xnewi),f(xi)>f(xnewi)(13)
3.3 重启策略
重启策略可以重新分配长期陷入局部最优状态的解的值,使差解跳出局部最优状态。这种策略可以用物质代替长期陷入局部最优状态的解,使差解跳出局部最优状态。加入重启策略可以增强算法的探索能力,使算法更好地收敛。
首先,根据公式(14)设置重新启动阈值限制。然后,为每个解设置向量试验,并记录每次迭代后是否获得更好的解。初始值为
0
0
0。如果获得了更好的解决方案,则相应的试验为
0
0
0;否则,相应的试验增加
1
1
1。如果矢量试验大于限制,则执行重新启动策略。
L
i
m
i
t
=
ln
(
t
)
(14)
Limit = \ln (t)\tag{14}
Limit=ln(t)(14) 重新启动策略通过等式(15)和(16)分别生成两个新的解
T
1
T_1
T1 和
T
2
T_2
T2 ,并通过等式(17)执行边界处理,然后选择更好的解来替换原始解。在那之后,相应的试验被重新分配到
0
0
0。重启策略的公式如下:
T
1
=
l
b
+
r
a
n
d
(
)
×
(
u
b
−
l
b
)
(15)
{T_1} = lb + rand() \times (ub - lb)\tag{15}
T1=lb+rand()×(ub−lb)(15)
T
2
=
r
a
n
d
(
)
×
(
u
b
+
l
b
)
−
X
i
(16)
{T_2} = rand() \times (ub + lb) - {X_i}\tag{16}
T2=rand()×(ub+lb)−Xi(16)
T
2
=
l
b
+
r
a
n
d
(
)
×
(
u
b
−
l
b
)
,
i
f
T
2
≥
u
b
∣
∣
T
2
≤
l
b
(17)
{T_2} = lb + rand() \times (ub - lb){{ }},\ if\ {{ }}{T_2} \ge ub||{T_2} \le lb\tag{17}
T2=lb+rand()×(ub−lb), if T2≥ub∣∣T2≤lb(17)
3.4 算法伪代码
- 初始化参数 t 、 T m a x 、 u b 、 l b 、 N 、 d i m t、Tmax、ub、lb、N、dim t、Tmax、ub、lb、N、dim。
- 根据公式随机初始化人口 X i X_i Xi。
- 计算所有个体的适应度值,并选择最优解 G G G
- While t < T m a x t<T_{max} t<Tmax
- 根据等式(8)定义教师。
- 学生分为精英学生( X g o o d X_{good} Xgood)和普通学生( X b a d ) X_{bad}) Xbad)。精英学生的数量是 N g o o d N_{good} Ngood。
- For i = 1 i = 1 i=1 to N N N do
- if i < N g o o d i <N_{good} i<Ngood then
- 教师阶段是根据等式 (1)、(2)、(3) 和 (5) 实现的。
- else
- 教师阶段是根据等式 (4) 和 (5) 来实现的。
- End If
- 对更新后的学生进行边界处理。
- 计算精英学生的平均知识水平( M M M)
- if i < N g o o d i<N_{good} i<Ngood then
- For j = 1 j = 1 j=1 to d i m dim dim do
- 精英学生根据方程 (9) 获得学习动机 D D D,并通过方程 (10) 和 (7) 进行学生阶段。
- End For
- else
- 普通学生根据等式 (11) 和 (7) 进行学生阶段。
- End If
- End For
- 对更新后的学生进行边界处理。
- 通过等式 (12) 使用基于随机反向学习策略生成逆解,并且根据等式 (13) 更新学生位置。
- 计算学生的新适应度值,并判断是否更好。如果更好,则替换适应度值和相应的 l i m i t = 0 limit=0 limit=0。否则, l i m i t limit limit 将加 1 1 1。
- 根据等式(14)定义 l i m i t limit limit。
- For i = 1 i = 1 i=1 to N N N do
- While t r i a l ( i ) < L i m i t trial(i) < Limit trial(i)<Limit do
- T 1 T_1 T1 和 T 2 T_2 T2 由等式 (15) 和 (16) 生成,并且 T 2 T_2 T2 使用等式 (17) 进行边界处理。给 X i X_i Xi 分配一个随机位置。
- t r i a l ( i ) = 0 trial(i)=0 trial(i)=0
- End While
- End For
- t = t + 1 t=t+1 t=t+1
- End While
四、实验结果
MGTOA 和 GTOA 在23个经典测试函数(设置维度 d i m = 30 dim=30 dim=30)的F5、F6、F7中的收敛曲线,测试函数公式如下:
函数 | 公式 | 理论值 |
---|---|---|
F5 | F 5 ( x ) = ∑ i = 1 d − 1 [ 100 ( x i + 1 − x i 2 ) 2 + ( x i − 1 ) 2 ] {F_5}(x) = \sum\nolimits_{i = 1}^{d - 1} {[100{{({x_{i + 1}} - x_i^2)}^2} + {{({x_i} - 1)}^2}]} F5(x)=∑i=1d−1[100(xi+1−xi2)2+(xi−1)2] | 0.00 0.00 0.00 |
F6 | F 6 ( x ) = ∑ i = 1 d ( x i + 5 ) 2 {F_6}(x) = {\sum\nolimits_{i = 1}^d {({x_i} + 5)} ^2} F6(x)=∑i=1d(xi+5)2 | 0.00 0.00 0.00 |
F7 | F 7 ( x ) = ∑ i = 1 d i × x i 4 + r a n d o m [ 0 , 1 ) {F_7}(x) = \sum\nolimits_{i = 1}^d {i \times x_i^4 + random[0,1)} F7(x)=∑i=1di×xi4+random[0,1) | 0.00 0.00 0.00 |
4.1 F5收敛曲线
4.2 F6收敛曲线
4.3 F7收敛曲线
五、参考文献
[1] 贾鹤鸣, 智能优化算法及 MATLAB 实现[M], 清华大学出版社, 2024。
[2] Honghua Rao, Heming Jia, Di Wu, et al. A Modified Group Teaching Optimization Algorithm for Solving Constrained Engineering Optimization Problems[J]. Mathematics, 2022, 10, 3765.