ECJ 28
A Java-based Evolutionary Computation Research System
By Sean Luke, Eric O. Scott, Liviu Panait, Gabriel Balan, Sean Paus, Zbigniew Skolicki, Rafal Kicinger, Elena Popovici, Keith Sullivan, Joseph Harrison, Jeff Bassett, Robert Hubley, Ankur Desai, Alexander Chircop, Jack Compton, William Haddon, Stephen Donnelly, Beenish Jamil, Joseph Zelibor, Eric Kangas, Faisal Abidi, Houston Mooers, James O'Beirne, L. Manzoni, Khaled Ahsan Talukder, Sam McKay, James McDermott, Jason Zou, Anson Rutherford, David Freelan, Ermo Wei, Sunil Rajendran, Ananya Dhawan, Ben Brumbac, Javier Hilty, and Anowarul Kabir.
|
ECJ is a research EC system written in Java. It was designed to be highly flexible, with nearly all classes (and all of their settings) dynamically determined at runtime by a user-provided parameter file. All structures in the system are arranged to be easily modifiable. Even so, the system was designed with an eye toward efficiency.
ECJ is developed at George Mason University's ECLab Evolutionary Computation Laboratory. The software has nothing to do with its initials' namesake, Evolutionary Computation Journal, nor with the European Court of Justic, which ECJ has been competing with on Google for years now! ECJ's sister project is MASON, a multi-agent simulation system which dovetails with ECJ nicely.
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.
- A really, really big manual
- Optional builds with Apache Maven
EC Features
- Asynchronous island models over TCP/IP
- Master/Slave evaluation over multiple processors, with support for generational, asynchronous steady-state, and coevolutionary distribution
- Genetic Algorithms/Programming style Steady State and Generational evolution, with or without Elitism
- Evolutionary-Strategies style (mu,lambda) and (mu+lambda) evolution
- Dedicated package for efficient single-state (hill-climbing, simulated annealing, etc.) methods
- CMA-ES, AMaLGaM IDEA, PBIL, DOvs EDAs
- Ant System, Ant Colony System, and GRASP
- Very flexible breeding architecture
- Many selection operators
- Multiple subpopulations and species
- Inter-subpopulation exchanges
- Reading populations from files
- Single- and Multi-population coevolution
- NSGA-II, NSGA-III, and SPEA2 multiobjective optimization
- Particle Swarm Optimization
- Differential Evolution
- Spatially embedded evolutionary algorithms
- Hooks for other multiobjective optimization methods
- Meta-Evolution
- 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
- Grammatical Encoding
- Push
- Many pre-done GP application problem domains, including ant, regression, multiplexer, lawnmower, parity, two-box, edge
Vector (GA/ES) Representations
- Fixed-Length and Variable-Length Genomes
- Arbitrary representations
- Variety of mutation and crossover operators
- Many pre-done vector application problem domains (rastrigin, sum, rosenbrock, sphere, step, noisy-quartic, booth, griewangk, nk, hiff, median)
- 23 Black-Box Optimization competition benchmark problems, plus noisy versions.
Other Representations
- NEAT
- Multiset-based genomes in the rule package, for evolving Pitt-approach rulesets or other set-based representations.
|
Download ECJ
Reviews
Genetic Programming and Evolvable Machines has reviewed ECJ, and kindly, a few times. The most recent is "Software Review: the ECJ Toolkit" by David White.
Mailing Lists
If you have questions or ideas regarding ECJ, we suggest you join the ECJ-INTEREST Discussion List. (Alternatively, send mail to listserv@listserv.gmu.edu with the words subscribe ECJ-INTEREST-L in the body of the message. Likewise, to unsubscribe, use unsubscribe ECJ-INTEREST-L). You can also view the archives. If you want to report a bug, you can contact the ECJ authors directly at ecj-help @ cs.gmu.edu
|