Red de conocimientos turísticos - Conocimientos sobre calendario chino - Notas sobre el algoritmo de optimización (13) Algoritmo de ballena

Notas sobre el algoritmo de optimización (13) Algoritmo de ballena

(Las siguientes descripciones no son términos académicos, son sólo para su placer)

El algoritmo de optimización de ballenas es un algoritmo basado en el comportamiento de las ballenas reuniendo a sus presas. Las ballenas son mamíferos sociales y cooperan entre sí para conducir y capturar a sus presas cuando cazan. El algoritmo de la ballena no se ha propuesto durante mucho tiempo. También es un algoritmo de optimización emergente y tiene pocos casos de investigación y aplicación.

En el algoritmo de la ballena, la posición de cada ballena representa una solución factible. Durante la caza de ballenas, cada ballena tiene dos comportamientos: uno es rodear a la presa, con todas las ballenas frente a otras ballenas; el otro es vaporizar la red, en la que las ballenas nadan en círculos y emiten burbujas para ahuyentar a las presas. En cada generación de nado, la ballena elige aleatoriamente entre estos dos comportamientos para cazar. Cuando una ballena adopta un comportamiento de rodear a su presa, elige aleatoriamente si nada hacia la ballena mejor posicionada o selecciona aleatoriamente una ballena para apuntar y acercarse a ella.

Obviamente, el núcleo del algoritmo de la ballena es la ballena.

La posición de cada ballena en el espacio de solución D-dimensional es

Cada ballena elige aleatoriamente rodear a su presa o usar una red de burbujas para ahuyentarla. la presa La proporción de ballenas que eligen rodear o ahuyentar a la presa es igual, es decir, P (envolver) = P (red de burbujas) = ​​0,5

Las ballenas que rodean a la presa elegirán nadar hacia la ballena. en la mejor posición o nadar hacia una ballena al azar.

La fórmula de actualización de la posición de la ballena es la siguiente:

Entre ellas, A es la posición óptima actual de la ballena, y cada dimensión de A es una distribución uniforme en (- El número aleatorio dentro de a, a) tiene un valor inicial de 2 y disminuye linealmente a 0 con el número de iteraciones. C es un número aleatorio distribuido uniformemente dentro de (0, 2). C es un número aleatorio distribuido uniformemente dentro de (0,2). || representa el valor absoluto de un número, es decir, el valor de cada dimensión no es negativo.

La fórmula para actualizar la posición de esta ballena es la siguiente:

donde es la posición de una ballena seleccionada al azar en la población actual.

Entonces, ¿cuándo elige la ballena nadar hacia el individuo óptimo y cuándo elige un individuo aleatorio como objetivo?

Esto vendrá determinado por el valor de A.

Cuando la ballena elige nadar hacia el mejor individuo. Tenga en cuenta que A es un vector D-dimensional, por lo que cuando el módulo de A es menor que 1, la ballena nadará hacia el mejor individuo.

En este momento, la ballena elegirá nadar hacia un individuo aleatorio.

Se puede ver que en el proceso de rodear a la presa, el modo de búsqueda del algoritmo de ballena es buscar más cerca del individuo óptimo o buscar más lejos del individuo aleatorio.

2.2 Red de burbujas

Cuando las ballenas están cazando, rocían paquetes de vapor de agua para formar una red de burbujas para ahuyentar a sus presas.

Entre ellos, b es una constante (no se encontró ninguna definición, el valor predeterminado es 1) y l es un número aleatorio distribuido uniformemente en .

Antes de cada movimiento, cada ballena lanza una moneda para decidir si rodea a su presa o utiliza una red de burbujas para ahuyentarla.

Como se puede ver en la descripción anterior, el proceso del algoritmo de ballena también es muy simple.

Función de aptitud

Experimento 1: algoritmo estándar de ballena

En la figura, podemos ver que la convergencia del algoritmo sigue siendo muy fuerte, aproximadamente ha convergido completamente en la 35ª generación. Los resultados finales son muy buenos y también muestran que el algoritmo tiene sólidas capacidades de búsqueda local. Esto confirma lo que dije en la sección anterior de que el algoritmo converge rápidamente y carece de la capacidad de saltar fuera del óptimo local.

Del flujo del algoritmo, podemos ver que la convergencia del algoritmo puede depender del parámetro a. Este debería ser un parámetro de optimización. Ahora arreglamos a, debilitamos el algoritmo y debilitamos su convergencia, y vemos si se mejora la búsqueda global y la capacidad de saltar del óptimo local.

Experimento 2: Se corrigió un

Como se puede ver en la imagen, el algoritmo casi no tiene convergencia y la velocidad de convergencia del algoritmo sigue siendo muy rápida.

Por favor vea los resultados experimentales.

Los resultados son peores que los del algoritmo de ballena estándar, lo que muestra que el parámetro a afectará la precisión de la búsqueda del algoritmo. El impacto del parámetro a en la convergencia del algoritmo radica en el impacto de a en el vector. A. Se fijó a = 1,5, de modo que el módulo de A tiene una mayor probabilidad de ser mayor que 1 que antes. En este momento, la probabilidad de que la ballena elija nadar hacia el individuo óptimo en el comportamiento de las presas circundantes se vuelve menor, lo que hace que el La velocidad de convergencia del algoritmo es más lenta y, al mismo tiempo, las capacidades de búsqueda global del algoritmo también se han mejorado hasta cierto punto.

Como algoritmo emergente, el autor no ha investigado mucho sobre el algoritmo de la ballena. A lo largo del proceso del algoritmo, podemos ver que el algoritmo de ballena estándar y el algoritmo de luciérnaga son similares. Ambos realizan búsquedas globales en la etapa inicial del algoritmo y búsquedas locales en la etapa posterior del algoritmo, y ninguno de ellos salta. la operación óptima local. El excelente rendimiento al enfrentar problemas simples puede reducirse considerablemente cuando se trata de problemas complejos. Sin embargo, debido a que el proceso y la estructura del algoritmo son relativamente simples, no habrá demasiadas mejoras en el algoritmo.

Los siguientes indicadores son puramente personales y solo como referencia

Referencias

Mirjalili S, Lewis A. The Whale Optimization Algorithm[J]. , 2016, 95: 51-67 Código de extracto: b13x

Contenido

Artículo anterior Notas del algoritmo de optimización (12) Algoritmo de Fireworks

Artículo siguiente Notas del algoritmo de optimización (14) Algoritmo de onda de agua

Implementación del algoritmo de optimización de Matlab (13) Implementación del algoritmo de ballena de Matlab