Java Evolutionary Computation Toolkit
Appearance
ECJ is a 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 (genetic algorithm)|mutation] operators that produce new individuals.
Features:
General Features:
* GUI with charting * Platform-independent checkpointing and logging * Hierarchical parameter files * Multithreading * Mersenne Twister Random Number Generators * Abstractions for implementing a variety of EC forms.
EC Features:
* Asynchronous island models over TCP/IP * Master/Slave evaluation over multiple processors * Genetic Algorithms/Programming style Steady State and Generational evolution, with or without Elitism * Evolutionary-Strategies style (mu,lambda) and (mu+lambda) evolution * Very flexible breeding architecture * Many selection operators * Multiple subpopulations and species * Inter-subpopulation exchanges * Reading populations from files * Single- and Multi-population coevolution * SPEA2 multiobjective optimization * Particle Swarm Optimization * Differential Evolution * Spatially embedded evolutionary algorithms * Hooks for other multiobjective optimization methods * Packages for parsimony pressure
GP Tree Representations:
* Set-based Strongly-Typed Genetic Programming * Ephemeral Random Constants * Automatically-Defined Functions and Automatically Defined Macros * Multiple tree forests * Six tree-creation algorithms * Extensive set of GP breeding operators * Seven pre-done GP application problem domains (ant, regression, multiplexer, lawnmower, parity, two-box, edge)
Vector (GA/ES) Representations:
* Fixed-Length and Variable-Length Genomes * Arbitrary representations * Five 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.