ECJ 9
A Java-based Evolutionary Computation and
Genetic Programming Research System
by Sean Luke
Contributors: Liviu Panait, Jeff Bassett, Robert Hubley, and Alexander Chircop
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 may make you reconsider notions about Java and slowness.
Features
ECJ is pretty full-featured as evolutionary computation systems go, and I believe it to be the most feature-rich GP system available in the public domain.
General Features
- 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
- 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
- Hooks for coevolution, competitive/cooperative fitness strategies, and multiobjective optimization
- Packages for parsimony pressure
GP Features
- 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) Features
- Fixed-Length and Variable-Length Genomes
- Arbitrary representations
- Five pre-done vector application problem domains (sum, rosenbrock, sphere, step, noisy-quartic)
Other Features
- Multiset-based genomes in the rule package, for evolving Pitt-approach rulesets or other set-based representations.
- Hooks for using the Teambots robot simultation system to do evaluation.
Download ECJ
Download ECJ version 9 as ec.tar.gz or (bigger) ec.zip. The license agreement and online documentation of the system is also available.
ECJ is released under a special open source license. Please read the license before using the software. See the provided README file to locate the software license.
ECJ is a very extensive system and my experimental needs only rigorously test certain parts of it. I welcome you to try it out and bang on it and improve it. Please contact me with any suggestions, ideas, or modifications.
Migrating from the Previous Version
ECJ 9 is primarily bug fixes and the addition of two more tutorials and Robert Hubley's SPEA2 package. There should be no significant migration issues.
The Agent
The software license refers to the "Agent". Presently, that's me, Sean.
Contacting the author
Sean Luke can be found at http://www.cs.umd.edu/users/seanl/
Other Publically-Available Java-Based Evolutionary Computation Systems
- GP Systems
-
- Tree-based GP, implemented with trees
-
- Tree-based GP, implemented with arrays
-
- GP Applets
-
- GP using Java Bytecode
-
- Private GP Systems
-
- GP: Whereabouts Unknown
-
- gpjpp
- gpjava, originally developed at ASyG, Vrje Universiteit Brussel.
- Other EC Stuff in Java
This is just a small sample, of course.
-