优化算法 | 教学优化算法(附MATLAB代码)
今天为各位讲解教学优化算法(Teaching-Learning-Based Optimization Algorithm,TLBO),TLBO算法与遗传算法、粒子群算法、人工蜂群算法等群智能优化算法相比,其特殊之处在于没有过多的参数需要设置,而是只需要设置种群大小、迭代次数等几个共有的基本参数。
▎教学优化算法基本思想
TLBO算法基本思想源于教师的工作对学生的影响,即教师的教学水平会影响学生的学习成绩。TLBO的过程分为两个阶段:
(1)教师阶段:学生向教师学习。
(2)学习阶段:学生之间相互学习。
在TLBO算法中,学生群体对应种群;教师安排给学生的各个任务目标对应优化问题中的决策变量;学生的学习成绩对应优化问题的适应度值;种群中的最优解对应教师。
举个例子让各位能更好地理解上述含义,假设现有3名学生同时在学习语文和数学,每门课的满分均为100分,两门课总成绩越高表示学生在学习方面能力越强。这3名学生成绩如下表所示:
学生序号 | 语文成绩 | 数学成绩 |
学生1 | 90 | 90 |
学生2 | 80 | 80 |
学生3 | 70 | 70 |
那么这3个学生实际上就为1个种群;决策变量即为语文课成绩和数学课成绩;学生的总成绩即为适应度值;因为学生1的总成绩最高,所以学生1即为种群中的教师。
▎教学优化算法数学公式推导
由前文可知,TLBO算法分为两个阶段,即教师阶段和学习阶段。因此,接下来分别推导两个阶段数学公式。
(1)教师阶段
在该阶段,学生向教师学习,教师努力提高学生们的平均成绩,即尽可能让全体学生在知识方面达到他/她的水平。
假设在第i次迭代中,有m个决策变量(即m个科目/目标),学生的数目为n(k=1,2,……,n), 为全体学生在决策变量j(j=1,2,……,m)的平均值,在当前迭代次数中目标函数值最优的学生记为kbest(注意,kbest是1~n中的某一个数,学生kbest被视为教师)。
因此,当前全体学生在每个变量(每个科目/目标)的平均值与教师的每个变量差值计算公式如下:
其中, 为教师kbest在第i次迭代中的第j个决策变量; 为0~1之间的随机数; 为教学因子,随机取值为1或2。
为了尽可能让全体学生在知识方面达到教师的水平,因此需要更新每个学生的决策变量值,更新公式如下:
其中, 为学生k在第i次迭代中的第j个决策变量; 为 更新后的值,如果学生k在决策变量更新后的目标函数值更优,那么才会被接受,否则 会维持不变。
在教师阶段的最后,要保留更新后每个学生的全体决策变量值,这些值将作为学习阶段的输入。
(2)学习阶段
在学习阶段,学生通过相互交流来提高知识储备水平。交流方式为随机交流,即一个学生随机与另外一个学生进行交流,如果对方知识储备比自己丰富,则自己会学习到新知识。
假设学生数目为n,现在从n个学生中随机选择2个目标函数值不相同的学生P(1~n之间的随机数)和Q(1~n之间的随机数),即 ,其中和和分别是和在教师阶段更新后的目标函数值。
如果优化问题为最小化问题,则决策变量更新公式如下:
如果学生P更新决策变量后的目标函数值更小,则接受 。
如果优化问题为最大化问题,则决策变量更新公式如下:
如果学生P更新决策变量后的目标函数值更大,则接受。
▎实例讲解
接下来以求解一个最小化问题为例,讲解TLBO算法实现过程。
假设种群数目为5,决策变量数目为2,迭代次数为1,则TLBO算法求解过程如下所示。
(1)初始化种群
随机生成5个满足决策变量约束的个体,具体值如表2.1所示。
很明显第5个个体的目标函数值最小,因此第5个个体是当前阶段的教师。
(2)教师阶段
现阶段,教师努力提高整个班级的成绩均值。假设对于变量而言, ,对于变量而言, ,同时,则 和平均值差值的计算公式如下:
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交流。假设在学习阶段,对于变量 而言, ,对于变量 而言, 。
对于个体1而言,因为个体2的目标函数值小于个体1的目标函数值,则知识从个体2转移至个体1,变量 和 的计算公式如下:
同理对于个体2而言,因为个体2的目标函数值小于个体4的目标函数值,则知识从个体2转移至个体4,变量 和 的计算公式如下:
依次计算出个体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智能优化算法:从写代码到算法思想》
遗传算法(GA)求解带时间窗的车辆路径(VRPTW)问题MATLAB代码
粒子群优化算法(PSO)求解带时间窗的车辆路径问题(VRPTW)MATLAB代码
▎作者新书购买链接
京东自营购买链接
当当自营购买链接