改进分组教学优化算法(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 |