ECJ is a freeware evolutionary computation research system written in Java. It is a framework that supports a variety of evolutionary computation techniques, such as genetic algorithms, genetic programming, evolution strategies, coevolution, particle swarm optimization, and differential evolution. The framework models iterative evolutionary processes using a series of pipelines arranged to connect one or more subpopulations of individuals with selection, breeding (such as crossover, and mutation operators that produce new individuals. The framework is open source and is distributed under the Academic Free License. ECJ was created by Sean Luke, a computer science professor at George Mason University, and is maintained by Sean Luke and a variety of contributors.
Features (listed from ECJ's project page):
General Features:
GUI with chartingPlatform-independent checkpointing and loggingHierarchical parameter filesMultithreadingMersenne Twister Random Number GeneratorsAbstractions for implementing a variety of EC forms.EC Features:
Asynchronous island models over TCP/IPMaster/Slave evaluation over multiple processorsGenetic Algorithms/Programming style Steady State and Generational evolution, with or without ElitismEvolutionary-Strategies style (mu,lambda) and (mu+lambda) evolutionVery flexible breeding architectureMany selection operatorsMultiple subpopulations and speciesInter-subpopulation exchangesReading populations from filesSingle- and Multi-population coevolutionSPEA2 multiobjective optimizationParticle Swarm OptimizationDifferential EvolutionSpatially embedded evolutionary algorithmsHooks for other multiobjective optimization methodsPackages for parsimony pressureGP Tree Representations:
Set-based Strongly Typed Genetic ProgrammingEphemeral Random ConstantsAutomatically Defined Functions and Automatically Defined MacrosMultiple tree forestsSix tree-creation algorithmsExtensive set of GP breeding operatorsSeven pre-done GP application problem domains (ant, regression, multiplexer, lawnmower, parity, two-box, edge)Vector (GA/ES) Representations:
Fixed-Length and Variable-Length GenomesArbitrary representationsFive pre-done vector application problem domains (sum, rosenbrock, sphere, step, noisy-quartic)Other Representations:
Multiset-based genomes in the rule package, for evolving Pitt-approach rulesets or other set-based representations.