Optimización basada en la enseñanza y el aprendizaje (TLBO)

El proceso de encontrar valores óptimos para los parámetros específicos de un sistema dado para cumplir con todos los requisitos de diseño mientras se considera el costo más bajo posible se denomina optimización . Los problemas de optimización se pueden encontrar en todos los campos de la ciencia.

En general, el problema de optimización se puede escribir como,  

optimizar f_1(x), ..., f_i(x), ..., f_N(x) , x = (x_1, ..., x_d)

sujeto a,  

                    h_j(x) = 0 , (j = 1, 2, ..., J)

                    g_k(x) <=0 , ((k=1, ..., K)

donde  f_1, ..., f_N    son los objetivos, mientras que  h_j    y  g_k    son las restricciones de igualdad y desigualdad, respectivamente. En el caso de que N=1, se denomina optimización de un solo objetivo. Cuando N≥2, se convierte en un problema de optimización multiobjetivo cuya estrategia de solución es diferente a la de un solo objetivo. Este artículo trata principalmente de problemas de optimización de un solo objetivo.

Muchos académicos e investigadores han desarrollado varias metaheurísticas para abordar problemas de optimización complejos/no resueltos. Ejemplo: optimización de enjambre de partículas , optimización de lobo gris, optimización de colonia de hormigas , algoritmos genéticos , algoritmo de búsqueda de cuco, etc.  

Este artículo tiene como objetivo presentar una nueva técnica de optimización meta-heurística llamada Optimización Basada en el Aprendizaje de la Enseñanza (TLBO).

Inspiración del algoritmo:

La optimización basada en el aprendizaje de la enseñanza (TLBO) es una técnica de optimización metaheurística basada en la población que simula el entorno de un aula para optimizar una función objetivo dada y fue propuesta por RV Rao et al. en 2011.

    En un salón de clases, el maestro pone su trabajo duro y educa a todos los alumnos de una clase. Luego, los alumnos interactúan consigo mismos para modificar y mejorar aún más el conocimiento adquirido.

Este algoritmo consta de dos fases:  

1) Fase de profesor

Todos los estudiantes aprenden del maestro y adquieren conocimientos.

2) Fase de aprendizaje  

Los estudiantes interactúan entre ellos para compartir conocimientos entre ellos.  

  • Estructura de datos para almacenar alumnos de clase.

Figura 1: Estructura de datos para almacenar estudiantes

  • Estructura de datos para almacenar con el estudiante de la clase

Figura 2: Estructura de datos para almacenar con el estudiante

Modelo matemático

1) Fase de enseñanza

  • El estudiante con un valor mínimo de condición física se considera como maestro
  • Xmean se usa en esta fase, donde Xmean es la media de todos los estudiantes en la clase
  • Ecuación de generación de nueva solución:
    • Xnuevo = X + r*(Xprofesor – TF*Xmedia)                       ( 1)
    • donde TF es el factor de enseñanza y es 1 o 2 (elegido al azar)
  • Si Xnew es mejor que X . Luego reemplace X con Xnew

2) Fase de aprendizaje

  • Xpartner: un compañero de clase elegido al azar
  • Xpartner es elegido para interactuar e intercambiar conocimientos
  • Ecuación de generación de nueva solución
    • Deje que la aptitud de Xparter sea Fpartner y la de X sea F
    • Si(F < Fsocio ) ( 2)
      • Xnuevo = X + r*(X – Xsocio)
    • Más
      • Xnuevo = X – r*(X – Xsocio)
  • d. SI Xne w es mejor que X . Luego reemplace X con Xnew

Algoritmo

  • Parámetros del problema:
    • Número de dimensiones ( d )
    • Límite inferior ( minx )
    • Límite superior ( maxx )
  • Hiperparámetros del algoritmo:
    • Número de partículas ( N )
    • Número máximo de iteraciones ( max_iter )
Step1: Randomly initialize Class of N students Xi ( i=1, 2, …, n)
Step2: Compute fitness value of all the students
Step3: For Iter in range(max_iter):  # loop max_iter times  
           For i in range(N):  # for each student
                 # Teaching phase-----------
                     Xteacher = student with least fitness value
                     Xmean = mean of all the students
                     TF ( teaching factor) = either 1 or 2 ( randomly chosen ) 
                     Xnew = class[i].position + r*(Xteacher - TF*Xmean)
                 
                     # if Xnew < minx OR Xnew > maxx then clip it
                     Xnew = min(Xnew, minx)
                     Xnew = max(Xnew, maxx)
                     
                     # compute fitness of new solution
                     fnew = fitness(Xnew)
                     
                     # greedy selection strategy
                     if(fnew < class[i].fitness)
                         class[i].position = Xnew
                         class[i].fitness = fnew
                     
                 # Learning phase------------
                  Xpartner = randomly chosen student from class
                  
                  if(class[i].fitness < Xpartner.fitness):
                      Xnew = class[i].position + r*(class[i].position - Xpartner)
                  else
                      Xnew = class[i].position - r*(class[i].position - Xpartner)
                      
                     # if Xnew < minx OR Xnew > maxx then clip it
                     Xnew = min(Xnew, minx)
                     Xnew = max(Xnew, maxx)
                     
                     # compute fitness of new solution
                     fnew = fitness(Xnew)
                     
                     # greedy selection strategy
                     if(fnew < class[i].fitness)
                         class[i].position = Xnew
                         class[i].fitness = fnew                     
            End-for
        End -for
Step 4: Return best student from class

Publicación traducida automáticamente

Artículo escrito por shaadk7865 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *