Java Evolutionary Computation Toolkit
| Company type | Free software platform |
|---|---|
| Industry | Evolutionary computation software |
| Founder | Sean Luke |
Area served | Worldwide |
Key people | Sean Luke |
| Products | Evolutionary computation platform (includes genetic algorithms, genetic programming, evolution strategies, coevolution, particle swarm optimization, differential evolution) |
| Website | cs |
ECJ is a free software platform designed for evolutionary computation research, developed in the Java programming language. It encompasses a wide range of evolutionary computation methodologies such as genetic algorithms, genetic programming, evolution strategies, coevolution, particle swarm optimization, and differential evolution. The system represents iterative evolutionary processes by utilizing pipelines that link subpopulations through selection and reproduction mechanisms including crossover and mutation. Distributed as open-source software under the Academic Free License, ECJ was originally created by Sean Luke, a computer science professor at George Mason University, who continues to oversee its development alongside other contributors.
Features (as described on ECJ's official project page)
General Capabilities:
- Graphical user interface featuring chart visualization
- Cross-platform checkpointing and logging functionality
- Hierarchical configuration files for parameters
- Support for multithreaded execution
- Implementation of Mersenne Twister random number generators
- Framework abstractions supporting diverse evolutionary computation paradigms
Evolutionary Computation Capabilities:
- Asynchronous island model implementations communicating via TCP/IP
- Master-slave evaluation distributed across multiple processors
- Genetic algorithms and programming accommodating both steady-state and generational models, with optional elitism
- Evolution strategies including (mu, lambda) and (mu+lambda) variants
- Highly adaptable breeding system architecture
- Variety of selection operator options
- Capability to manage multiple subpopulations and species with mechanisms for inter-subpopulation interaction
- Population data import from files
- Support for single- and multi-population coevolutionary scenarios
- SPEA2 algorithm for multiobjective optimization
- Particle swarm optimization and differential evolution methods
- Spatially structured evolutionary algorithm implementations
- Extension points for incorporating additional multiobjective techniques
- Parsimony pressure modules
Genetic Programming Tree Representations:
- Strongly typed genetic programming based on set structures
- Ephemeral random constants support
- Facilities for automatically defined functions and macros
- Multiple tree forests generated via six distinct creation algorithms
- Comprehensive suite of genetic programming breeding operators
- Seven preconfigured application domains including ant, regression, multiplexer, lawnmower, parity, two-box, and edge problems
Vector-Based (GA/ES) Representations:
- Genomes with fixed or variable length supporting arbitrary encoding schemes
- Five predefined vector application domains such as sum, Rosenbrock function, sphere function, step function, and noisy quartic
Additional Representations:
- NEAT (NeuroEvolution of Augmenting Topologies)
- Multiset genome structures suited for evolving Pitt-style rulesets or other set-based representations
See also
- Paradiseo, a framework for metaheuristic algorithms
- MOEA Framework, an open-source Java library dedicated to multiobjective evolutionary algorithms
References
- ECJ official project page
- Wilson, G. C., McIntyre, A., Heywood, M. I. (2004), "Resource Review: Three Open Source Systems for Evolving Programs—Lilgp, ECJ and Grammatical Evolution," Genetic Programming And Evolvable Machines, 5 (19): 103-105, Kluwer Academic Publishers. ISSN 1389-2576