Implementación de la optimización basada en la enseñanza y el aprendizaje
<h2>Introducción <p>La optimización basada en la enseñanza y el aprendizaje (TLBO) se basa en la relación entre un profesor y los alumnos de una clase. En una clase particular, un maestro imparte conocimientos a los estudiantes a través de su arduo trabajo. Luego, los estudiantes o alumnos interactúan entre sí y mejoran sus conocimientos.
Exploremos más sobre la optimización basada en el aprendizaje de los profesores a través de este artículo.
¿Qué es TLBO?
Consideremos una población p (particularmente una clase) y el número de alumnos l en la clase. Puede haber variables decisivas (temas sobre las cuales los alumnos adquieren conocimientos) para el problema de optimización. Pueden ocurrir dos modos de aprendizaje:
A través del profesor (Fase de enseñanza)
A través de la interacción de los alumnos entre ellos (fase de aprendizaje)
Nos preocupa el resultado para el alumno, que será el valor de aptitud física.
Funciones de optimización TLBO
Hay dos tipos de funciones involucradas en el algoritmo de optimización. Ellos son
La función Esfera : para evaluar el rendimiento
Está escrito matemáticamente como,
$$\mathrm{f(x_{1,}x_{2},.........x_{n})=\sum ^{n}_{i=0} \:\:x^{2}_{i}}$$
mín en f(0,..0)=0
La función Rastrigin : función no convexa utilizada como función de prueba. Se da matemáticamente como,
$$\mathrm{f(x_{1,}x_{2},.........x_{n})=10+}\mathrm{\sum_{i=1}^{n} ( x^{2}_{i}-10\cos\:\:\cos(2\prod x_{i})}$$
Implementación del algoritmo TLBO en Python
Ejemplo
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)
Producción
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
Ventajas de la optimización basada en el aprendizaje
El algoritmo TLBO no requiere ningún parámetro para funcionar, excepto dos parámetros que son el tamaño de la población y el recuento de iteraciones.
-
Es más preciso y no necesita derivada,
Sigue el camino completo para generar la solución.
Desventajas de la optimización basada en el aprendizaje de la enseñanza
Es un método que requiere mucho tiempo.
Se requiere una gran cantidad de espacio para que se ejecute el algoritmo de optimización
Conclusión
La optimización basada en el aprendizaje de la enseñanza es un algoritmo basado en la población que depende en gran medida de la relación de aprendizaje entre el profesor y los alumnos y también entre los propios alumnos.