Fuerte algoritmo evolutivo de Pareto SPEA
El objetivo del fuerte algoritmo evolutivo de Pareto SPEA es localizar y mantener un frente de soluciones no dominadas, idealmente un conjunto de soluciones de Pareto óptimas. Esto se logra mediante el uso de un proceso evolutivo (con procedimientos sustitutos para la recombinación y mutación genética) para explorar el espacio de búsqueda, y un proceso de selección que utiliza una combinación del grado de dominancia de una solución candidata (fuerte) y una estimación de la densidad. del frente de Pareto como aptitud asignada.
Un archivo del conjunto no dominado se mantiene separado de la población de soluciones candidatas utilizadas en el proceso evolutivo, lo que proporciona una forma de elitismo.

Aquí están las funciones del fuerte algoritmo evolutivo de Pareto SPEA.
La función CalculateRawFitness calcula la aptitud bruta como la suma de los valores de fuerza de las soluciones que dominan a un candidato dado, donde fuerza es el número de soluciones que domina una solución dada. La función CandidateDensity estima la densidad de un área del frente de Pareto como 1 / (o ^ k + 2) donde o ^ k es la distancia euclidiana de los valores objetivos entre una solución dada, el k-ésimo vecino más cercano de la solución, yk es la raíz cuadrada de la población y el tamaño del archivo combinados.
La función PopulateWithRemainingBest llena de forma iterativa el archivo con las soluciones candidatas restantes en orden de adecuación. La función RemoveMostSimilar trunca la población del archivo eliminando miembros con los valores o ^ k más pequeños calculados contra el archivo.
La función SelectParents selecciona los padres de una población utilizando un método de selección de laalgoritmo genético como la selección de torneos binarios. La función CrossoverAndMutation realiza los operadores de cruce y mutación del algoritmo genético.
El algoritmo escalable de Pareto fuerte de SPEA se diseñó y adaptó a instancias de problemas de optimización de funciones continuas y de múltiples objetivos combinatorios. Se puede utilizar una representación binaria para problemas de optimización de funciones continuas junto con operadores genéticos clásicos, como el cruce de un punto y la mutación puntual. Se puede usar un valor de k de 1 para la eficiencia sin dejar de proporcionar resultados útil. El tamaño del archivo suele ser más pequeño que el tamaño de la población.