基于教学学习的优化的实施
machine learningpythonprogramming
简介
基于教学学习的优化 (TLBO) 基于课堂上教师与学习者之间的关系。在特定的课堂上,教师通过自己的努力将知识传授给学生。然后,学生或学习者相互交流并提高他们的知识。
让我们通过这篇文章进一步探索基于教师学习的优化。
什么是 TLBO?
让我们考虑一个群体 p(特别是一个班级)和班级中的学习者人数 l。优化问题可能存在决定性变量(学习者从中获取知识的科目)。可以发生两种学习模式−
通过老师(教学阶段)
通过学习者之间的互动(学习阶段)
我们关心的是学习者的结果,即适应度值。
TLBO 优化函数
优化算法涉及两种类型的函数。它们是
Sphere 函数 − 用于评估性能
它的数学形式为,
$$\mathrm{f(x_{1,}x_{2},.........x_{n})=\sum ^{n}_{i=0} \:\:x^{2}_{i}}$$
在 f(0,..0) = 0 处最小
Rastrigin 函数 − 用作测试函数的非凸函数它的数学形式为as,
$$\mathrm{f(x_{1,}x_{2},.........x_{n})=10+}\mathrm{\sum_{i=1}^{n} (x^{2}_{i}-10\cos\:\:\cos(2\prod x_{i})}$$
TLBO 算法在 Python 中的实现
示例
import numpy as np from pyMetaheuristic.algorithm import teaching_learning_based_optimization from pyMetaheuristic.utils import graphs def eas_opt(varval = [0, 0]): x_1, x_2 = varval fval = -np.cos(x_1) * np.cos(x_2) * np.exp(-(x_1 - np.pi) ** 2 - (x_2 - np.pi) ** 2) return fval plt_params = { 'min_values': (-6, -6), 'max_values': (6, 6), 'step': (0.2, 0.2), 'solution': [], 'proj_view': '3D', 'view': 'notebook' } graphs.plot_single_function(target_function = eas_opt, **plt_params) params = { 'population_size': 15, 'min_values': (-5, -5), 'max_values': (5, 5), 'generations': 500, 'verbose': True } tlbo = teaching_learning_based_optimization(target_function = eas_opt, **params) vars = tlbo[:-1] min = tlbo[ -1] print('Variables: ', np.around(vars, 5) , ' Minimum Value Found: ', round(min, 5) ) plt_params = { 'min_values': (-6, -6), 'max_values': (6, 6), 'step': (0.2, 0.2), 'solution': [vars], 'proj_view': '3D', 'view': 'notebook' } graphs.plot_single_function(target_function = eas_opt, **plt_params)
输出
Generation = 0 f(x) = -0.5748727344288006 Generation = 1 f(x) = -0.7555913129284719 Generation = 2 f(x) = -0.9219320357862593 Generation = 3 f(x) = -0.9644524112155972 Generation = 4 f(x) = -0.9809361915349301 Generation = 5 f(x) = -0.991863434885587 Generation = 6 f(x) = -0.9984949247685845 Generation = 7 f(x) = -0.9991563851570532 Generation = 8 f(x) = -0.9997584334443873 Generation = 9 f(x) = -0.9997584334443873 Generation = 10 f(x) = -0.9998450580252695 Generation = 11 f(x) = -0.9998982502404465 Generation = 12 f(x) = -0.999961847330126 Generation = 13 f(x) = -0.9999810734164969 Generation = 14 f(x) = -0.9999930426674921 Generation = 15 f(x) = -0.9999995055655798 Generation = 16 f(x) = -0.9999999410594664 Generation = 17 f(x) = -0.9999999410594664 Generation = 18 f(x) = -0.9999999877205884 Generation = 19 f(x) = -0.9999999877205884 Generation = 20 f(x) = -0.9999999931826284 ------------------------------------------------------------- ------------------------------------------------------- Generation = 500 f(x) = -0.9999999991966855 Variables: [3.14161 3.14158] Minimum Value Found: -1.0
基于教学学习的优化的优点
TLBO 算法除了人口规模和迭代次数两个参数外,不需要任何参数。
它更准确,不需要导数,
遵循完整的路径来生成解决方案
基于教学学习的优化的缺点
这是一种耗时的方法
优化算法的运行需要大量空间
结论
基于教学学习的优化是一种基于人口的算法,它严重依赖于教师和学习者之间以及学习者之间的学习关系。