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
sujeto a,
donde son los objetivos, mientras que y 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.
- Estructura de datos para almacenar con el estudiante de la clase
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