zifa2003293 发表于 2021-12-7 06:54

优化算法 | 教学优化算法(附MATLAB代码)

今天为各位讲解教学优化算法(Teaching-Learning-Based Optimization Algorithm,TLBO),TLBO算法与遗传算法、粒子群算法、人工蜂群算法等群智能优化算法相比,其特殊之处在于没有过多的参数需要设置,而是只需要设置种群大小、迭代次数等几个共有的基本参数。
▎教学优化算法基本思想
TLBO算法基本思想源于教师的工作对学生的影响,即教师的教学水平会影响学生的学习成绩。TLBO的过程分为两个阶段:
(1)教师阶段:学生向教师学习。
(2)学习阶段:学生之间相互学习。
在TLBO算法中,学生群体对应种群;教师安排给学生的各个任务目标对应优化问题中的决策变量;学生的学习成绩对应优化问题的适应度值;种群中的最优解对应教师。
举个例子让各位能更好地理解上述含义,假设现有3名学生同时在学习语文和数学,每门课的满分均为100分,两门课总成绩越高表示学生在学习方面能力越强。这3名学生成绩如下表所示:
学生序号语文成绩数学成绩学生19090学生28080学生37070那么这3个学生实际上就为1个种群;决策变量即为语文课成绩和数学课成绩;学生的总成绩即为适应度值;因为学生1的总成绩最高,所以学生1即为种群中的教师。
▎教学优化算法数学公式推导
由前文可知,TLBO算法分为两个阶段,即教师阶段和学习阶段。因此,接下来分别推导两个阶段数学公式。
(1)教师阶段
在该阶段,学生向教师学习,教师努力提高学生们的平均成绩,即尽可能让全体学生在知识方面达到他/她的水平。
假设在第i次迭代中,有m个决策变量(即m个科目/目标),学生的数目为n(k=1,2,……,n), https://www.zhihu.com/equation?tex=M_%7Bj%2Ci%7D 为全体学生在决策变量j(j=1,2,……,m)的平均值,在当前迭代次数中目标函数值最优的学生记为kbest(注意,kbest是1~n中的某一个数,学生kbest被视为教师)。
因此,当前全体学生在每个变量(每个科目/目标)的平均值与教师的每个变量差值计算公式如下:

https://www.zhihu.com/equation?tex=%5Ctext+%7B+Difference_Mean+%7D_%7Bj%2C+k%2C+i%7D%3Dr_%7Bi%7D%5Cleft%28X_%7Bj%2C+%5Ctext+%7B+kbest+%7D%2C+i%7D-T_%7BF%7D+M_%7Bj%2C+i%7D%5Cright%29
其中,https://www.zhihu.com/equation?tex=X_%7Bj%2C+%5Ctext+%7B+kbest+%7D%2C+i%7D 为教师kbest在第i次迭代中的第j个决策变量; https://www.zhihu.com/equation?tex=r_j 为0~1之间的随机数; https://www.zhihu.com/equation?tex=T_F 为教学因子,随机取值为1或2。
为了尽可能让全体学生在知识方面达到教师的水平,因此需要更新每个学生的决策变量值,更新公式如下:

https://www.zhihu.com/equation?tex=X_%7Bj%2C+k%2C+i%7D%5E%7B%5Cprime%7D%3DX_%7Bj%2C+k%2C+i%7D%2B%5Ctext+%7B+Difference_Mean+%7D_%7Bj%2C+k%2C+i%7D
其中, 为学生k在第i次迭代中的第j个决策变量;为 更新后的值,如果学生k在决策变量更新后的目标函数值更优,那么才会被接受,否则 会维持不变。
在教师阶段的最后,要保留更新后每个学生的全体决策变量值,这些值将作为学习阶段的输入。
(2)学习阶段
在学习阶段,学生通过相互交流来提高知识储备水平。交流方式为随机交流,即一个学生随机与另外一个学生进行交流,如果对方知识储备比自己丰富,则自己会学习到新知识。
假设学生数目为n,现在从n个学生中随机选择2个目标函数值不相同的学生P(1~n之间的随机数)和Q(1~n之间的随机数),即https://www.zhihu.com/equation?tex=X_%7B%5Ctext+%7Btotal-+%7D+P%2C+i%7D%5E%7B%5Cprime%7D+%5Cneq+X_%7B%5Ctext+%7Btotal-+%7D+Q%2C+i%7D%5E%7B%5Cprime%7D ,其中和https://www.zhihu.com/equation?tex=X_%7B%5Ctext+%7Btotal-+%7D+P%2C+i%7D%5E%7B%5Cprime%7D+和https://www.zhihu.com/equation?tex=+X_%7B%5Ctext+%7Btotal-+%7D+Q%2C+i%7D%5E%7B%5Cprime%7D分别是https://www.zhihu.com/equation?tex=X_%7B%5Ctext+%7Btotal-+%7D+P%2C+i%7D和https://www.zhihu.com/equation?tex=+X_%7B%5Ctext+%7Btotal-+%7D+Q%2C+i%7D在教师阶段更新后的目标函数值。
如果优化问题为最小化问题,则决策变量更新公式如下:

https://www.zhihu.com/equation?tex=%5Cbegin%7Baligned%7D+%26X_%7Bj%2C+P%2C+i%7D%5E%7B%5Cprime+%5Cprime%7D%3DX_%7Bj%2C+P%2C+i%7D%5E%7B%5Cprime%7D%2Br_%7Bi%7D%5Cleft%28X_%7Bj%2C+P%2C+i%7D%5E%7B%5Cprime%7D-X_%7Bj%2C+Q%2C+i%7D%5E%7B%5Cprime%7D%5Cright%29+%5Ctext+%7B%2C+If+%7D+X_%7B%5Ctext+%7Btotal+%7D-P%2C+i%7D%5E%7B%5Cprime%7D%3CX_%7B%5Ctext+%7Btotal+%7D-Q%2C+i%7D%5E%7B%5Cprime%7D+%5C%5C+%26X_%7Bj%2C+P%2C+i%7D%5E%7B%5Cprime%7D%3DX_%7Bj%2C+P%2C+i%7D%5E%7B%5Cprime%7D%2Br_%7Bi%7D%5Cleft%28X_%7Bj%2C+Q%2C+i%7D%5E%7B%5Cprime%7D-X_%7Bj%2C+P%2C+i%7D%5E%7B%5Cprime%7D%5Cright%29%2C+%5Ctext+%7B+If+%7D+X_%7B%5Ctext+%7Btotal+%7D%7D%5E%7B%5Cprime%7D-Q%2C+i%3CX_%7B%5Ctext+%7Btotal+%7D-P%2C+i%7D%5E%7B%5Cprime%7D+%5Cend%7Baligned%7D
如果学生P更新决策变量后的目标函数值更小,则接受。
如果优化问题为最大化问题,则决策变量更新公式如下:

https://www.zhihu.com/equation?tex=%5Cbegin%7Baligned%7D+%26X_%7Bj%2C+P%2C+i%7D%5E%7B%5Cprime+%5Cprime%7D%3DX_%7Bj%2C+P%2C+i%7D%5E%7B%5Cprime%7D%2Br_%7Bi%7D%5Cleft%28X_%7Bj%2C+P%2C+i%7D%5E%7B%5Cprime%7D-X_%7Bj%2C+Q%2C+i%7D%5E%7B%5Cprime%7D%5Cright%29+%5Ctext+%7B%2C+If+%7D+X_%7B%5Ctext+%7Btotal-+%7D+Q%2C+i%7D%5E%7B%5Cprime%7D%3CX_%7B%5Ctext+%7Btotal-P%2C+%7D%2C+i%7D%5E%7B%5Cprime%7D+%5C%5C+%26X_%7Bj%2C+P%2C+i%7D%5E%7B%5Cprime+%5Cprime%7D%3DX_%7Bj%2C+P%2C+i%7D%5E%7B%5Cprime%7D%2Br_%7Bi%7D%5Cleft%28X_%7Bj%2C+Q%2C+i%7D%5E%7B%5Cprime%7D-X_%7Bj%2C+P%2C+i%7D%5E%7B%5Cprime%7D%5Cright%29%2C+%5Ctext+%7B+If+%7D+X_%7B%5Ctext+%7Btotal-P+%7D%2C+i%7D%5E%7B%5Cprime%7D%3CX_%7B%5Ctext+%7Btotal-Q%2C+%7D+i%7D%5E%7B%5Cprime%7D+%5Cend%7Baligned%7D
如果学生P更新决策变量后的目标函数值更大,则接受。
▎实例讲解
接下来以求解一个最小化问题为例,讲解TLBO算法实现过程。

https://www.zhihu.com/equation?tex=f%28x%29%3D%5Csum_%7Bi%3D1%7D%5E%7Bn%7D+x_%7Bi%7D%5E%7B2%7D+%5Cquad-100+%5Cleq+x_%7Bi%7D+%5Cleq+100
假设种群数目为5,决策变量数目为2,迭代次数为1,则TLBO算法求解过程如下所示。
(1)初始化种群
随机生成5个满足决策变量约束的个体,具体值如表2.1所示。


很明显第5个个体的目标函数值最小,因此第5个个体是当前阶段的教师。
(2)教师阶段
现阶段,教师努力提高整个班级的成绩均值。假设对于变量而言,https://www.zhihu.com/equation?tex=r_1%3D0.58 ,对于变量https://www.zhihu.com/equation?tex=x_2+而言, https://www.zhihu.com/equation?tex=r_2%3D0.49 ,同时https://www.zhihu.com/equation?tex=T_F%3D1,则 和平均值差值的计算公式如下:


difference_Mean(x1)和difference_Mean(x2)分别加到上表中的前两列,同时更新每个个体的目标函数值,更新结果如表2.2所示。



现在比较表2.1和表2.2中每个个体的目标函数值,保留目标函数值更小的个体,则将表2.1和表2.2合并后表格如表2.3所示。


(3)学习阶段
在学习阶段,每个学生相互交流以便获得新知识。在本案例中,个体1与2交流、个体2与4交流、个体3与5交流、个体4与1交流、个体5与1交流。假设在学习阶段,对于变量 而言, https://www.zhihu.com/equation?tex=r_1%3D0.81,对于变量   而言, https://www.zhihu.com/equation?tex=r_2%3D0.92。
对于个体1而言,因为个体2的目标函数值小于个体1的目标函数值,则知识从个体2转移至个体1,变量和   的计算公式如下:

https://www.zhihu.com/equation?tex=%5Cbegin%7Baligned%7D+%26%5Cleft%28x_%7B1%7D%5Cright%29+%5Ctext+%7B+new+for+learner+%7D+1%3D-60.684%2B0.81%28-5.684-%28-60.684%29%29%3D-16.134+%5C%5C+%26%5Cleft%28x_%7B2%7D%5Cright%29+%5Ctext+%7B+new+for+learner+%7D+1%3D23.26%2B0.92%2828.26-23.26%29%3D27.86+%5Cend%7Baligned%7D
同理对于个体2而言,因为个体2的目标函数值小于个体4的目标函数值,则知识从个体2转移至个体4,变量和 的计算公式如下:

https://www.zhihu.com/equation?tex=%5Cbegin%7Baligned%7D+%26%5Cleft%28x_%7B1%7D%5Cright%29+%5Ctext+%7B+new+for+learner+%7D+2%3D-5.684%2B0.81%28-5.684-%28-64%29%29%3D41.552+%5C%5C+%26%5Cleft%28x_%7B2%7D%5Cright%29+%5Ctext+%7B+new+for+learner+%7D+2%3D28.26%2B0.92%2828.26-31%29%3D25.7392+%5Cend%7Baligned%7D
依次计算出个体3、4、5的变量和 的值,具体结果如表2.4所示,这里需要注意一点,因为个体5的变量计算结果为-110.34小于边界值-100,故将其赋值为-100。


现在比较表2.3和表2.4中每个个体的目标函数值,保留目标函数值更小的个体,则将表2.3和表2.4合并后表格如表2.5所示。


综上所述,在1次迭代过程中,随机产生初始解的最小目标函数值为1053,经过教师阶段和学习阶段后的最小目标函数值降低至830.9355。
▎问题与思考
在学习阶段,我们只是假设其中一种可能的交流方式,实际上学生之间的交流方式有很多种。比如说,可以让个体1分别与个体2、3、4、5交流,然后取交流后最好的个体作为个体1。其他个体也按照同样方式和另外4个个体交流,然后分别取交流后的最优个体对本身进行替换。






调整学生交流方式后,在1次迭代过程中,最小目标函数值由1053降低至551.4767。
▎教学优化算法代码获取方式
优化算法 | 教学优化算法(附MATLAB代码)

咱们下期再见
▎近期你可能错过了的好文章:
新书上架 | 《MATLAB智能优化算法:从写代码到算法思想》
优化算法 | 灰狼优化算法(文末有福利)
优化算法 | 鲸鱼优化算法
遗传算法(GA)求解带时间窗的车辆路径(VRPTW)问题MATLAB代码
粒子群优化算法(PSO)求解带时间窗的车辆路径问题(VRPTW)MATLAB代码
页: [1]
查看完整版本: 优化算法 | 教学优化算法(附MATLAB代码)