Java Evolutionary Computation Toolkit - Enciclopedia

ECJ es un sistema de investigación de computación evolutiva gratuito escrito en Java. Es un marco que admite una variedad de técnicas de computación evolutiva, como algoritmos genéticos, programación genética, estrategias evolutivas, coevolución, optimización de enjambres de partículas y evolución diferencial. El marco modela procesos evolutivos iterativos utilizando una serie de pipelines dispuestos para conectar una o más subpoblaciones de individuos con selección, cría (como operadores de cruza y mutación que producen nuevos individuos). El marco es de código abierto y se distribuye bajo la Licencia de Software Libre Académico. ECJ fue creado por Sean Luke, profesor de ciencias de la computación en la Universidad George Mason, y es mantenido por Sean Luke y una variedad de colaboradores.

Características (listadas en la página del proyecto de ECJ):

Características Generales:

Interfaz gráfica de usuario con gráficos
Registro y punto de control independiente de la plataforma
Archivos de parámetros jerárquicos
Multithreading
Generadores de números aleatorios Mersenne Twister
Abstracciones para implementar una variedad de formas de EC.
Características de EC:

Modelos de islas asincrónicas sobre TCP/IP
Evaluación Maestro/Eslavo sobre múltiples procesadores
Estilos de evolución Estable y de Generaciones de Algoritmos/Programación Genética, con o sin elitismo
Evolución en estilo Estrategias Evolutivas (mu, lambda) y (mu+lambda)
Arquitectura de cría muy flexible
Muchos operadores de selección
Múltiples subpoblaciones y especies
Intercambios interpoblacionales
Lectura de poblaciones desde archivos
Coevolución de una y múltiples poblaciones
Optimización multiobjetivo SPEA2
Optimización de enjambres de partículas
Evolución diferencial
Algoritmos evolutivos incrustados espacialmente
Ganchos para otros métodos de optimización multiobjetivo
Paquetes para presión de simplicidad
Representaciones de Árboles de Programación Genética:

Programación Genética fuertemente tipada basada en conjuntos
Constantes aleatorias efímeras
Funciones y macros definidas automáticamente
Múltiples bosques de árboles
Seis algoritmos de creación de árboles
Extensa serie de operadores de cría de GP
Siete dominios de problemas de aplicación pre-hechos de GP (ant, regresión, multiplexor, cortacésped, paridad, dos cajas, borde)
Representaciones Vectoriales (GA/ES):

Genomas de longitud fija y variable
Representaciones arbitrarias
Cinco dominios de problemas de aplicación pre-hechos de vectores (suma, rosenbrock, esfera, paso, cuadrática ruidosa)
Otras Representaciones:

NEAT
Genomas basados en multiconjuntos en el paquete de reglas, para evolucionar conjuntos de reglas de enfoque Pitt u otras representaciones basadas en conjuntos.

Ver también
Paradiseo, un marco de metaheurísticas
MOEA Framework, un marco de código abierto en Java para algoritmos evolutivos multiobjetivo

Referencias
Página del proyecto ECJ
Wilson, G. C. McIntyre, A. Heywood, M. I. (2004), "Revisión de Recursos: Tres Sistemas de Código Fuente Abierto para Evolucionar Programas-Lilgp, ECJ y Grammatical Evolution", Genetic Programming And Evolvable Machines, 5 (19): 103-105, Kluwer Academic Publishers. ISSN 1389-2576