La idea del algoritmo de enjambre de partículas se origina a partir del estudio del comportamiento depredador de los bancos de aves/peces. Simula el comportamiento de las aves que vuelan en grupos para buscar alimento. Las aves logran el objetivo óptimo mediante la cooperación colectiva. Es una especie de método de optimización basado en Swarm Intelligence. No tiene las operaciones de "Cruce" y "Mutación" del algoritmo genético. Busca el óptimo global siguiendo el valor óptimo actualmente buscado. Una característica obvia de la optimización por enjambre de partículas en comparación con otros métodos de optimización modernos es que requiere pocos parámetros para ajustarse, es simple y fácil de implementar y tiene una velocidad de convergencia rápida. Se ha convertido en un tema de investigación candente en el campo de los métodos de optimización modernos. .
?Imagínate una escena: un grupo de pájaros busca comida al azar. Se sabe que en esta zona sólo hay un trozo de comida; todas las aves no saben dónde está la comida pero pueden sentir a qué distancia está la posición actual de la comida; Entonces, ¿cuál es la estrategia óptima para encontrar comida?
1. Busca el área alrededor del ave más cercana a la comida.
2. Determina dónde está la comida según tu propia experiencia de vuelo.
PSO se inspira en este modelo. La base de PSO es el intercambio social de información.
Cada solución de problema de optimización se imagina como un pájaro, llamado "partículas". Todas las partículas buscan en un espacio D-dimensional.
Todas las partículas tienen una función de aptitud para determinar el valor de aptitud y determinar si la posición actual es buena o mala.
A cada partícula se le debe dotar de una función de memoria para recordar la mejor posición que ha buscado.
Cada partícula tiene además una velocidad que determina la distancia y dirección de vuelo. Esta velocidad se ajusta dinámicamente en función de su propia experiencia de vuelo y la experiencia de vuelo de sus compañeros.
La fórmula de actualización de la velocidad de la partícula contiene tres partes: la primera parte es la "parte de inercia", que es la memoria de la velocidad anterior de la partícula, la segunda parte es la parte de "autoreconocimiento", que puede ser la parte de "autoreconocimiento"; debe entenderse como la posición actual de la partícula i y la distancia entre la mejor posición de uno; la tercera parte es la parte de "experiencia social", que representa el intercambio de información y la cooperación entre partículas, y puede entenderse como la distancia entre la posición actual de partícula i y la mejor posición del grupo.
Paso 1: inicializa aleatoriamente el enjambre de partículas dentro del rango de inicialización, incluidas la posición y la velocidad aleatorias
Paso 2: calcula el valor de aptitud de cada partícula de acuerdo con la función de aptitud
>Paso 3: Para cada partícula, compare su valor de aptitud actual con el valor de aptitud correspondiente a su mejor posición histórica individual (pbest). Si el valor de aptitud actual es mayor, actualice la partícula individual con la posición histórica actual. posición óptima pbest
¿Paso 4? Para cada partícula, compare su valor de aptitud actual con el valor de aptitud correspondiente a la mejor posición global (gbest). Si el valor de aptitud actual es mayor, luego use la posición actual para. actualizar la posición óptima histórica gbest del grupo de partículas
Paso 5? Actualizar la velocidad y posición de las partículas
Paso 6 ¿Si no se alcanza la condición de terminación, vaya al paso 2? pasos
Por lo general, el algoritmo se detiene cuando alcanza el número máximo de iteraciones o el incremento del valor de aptitud óptimo es menor que un umbral determinado
El diagrama de flujo del algoritmo de enjambre de partículas es el siguiente:
Tome la función Ras (función de Rastrigin) como función objetivo y encuentre su valor mínimo en x1, x2∈. Esta función es muy engañosa para algoritmos como el recocido simulado y el cálculo evolutivo, porque tiene muchos puntos mínimos locales y puntos máximos locales, lo que fácilmente puede hacer que el algoritmo caiga en la optimización local y no pueda obtener la solución óptima global. Como se muestra en la figura siguiente, esta función solo tiene un valor mínimo global de 0 en (0,0).