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.
ECJ is presently developed at George Mason University's ECLab Evolutionary Computation Laboratory. The software has nothing to do with its initials' namesake, Evolutionary Computation Journal. ECJ's sister project is MASON, a multi-agent simulation system which dovetails with ECJ nicely.
Features
General Features
- GUI
- 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
- Hooks for other multiobjective optimization methods
- 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 13 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.
Mailing Lists
If you have questions or ideas regarding ECJ, we suggest you join the ECJ-INTEREST Discussion List. 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
Migrating from the Previous Version
ECJ has undergone a very large number of changes and additions since the previous version.
- ECJ now has a GUI available, which will improve with future versions.
- The GUI can do charting with a new charting facility and Statistics objects.
- ECJ also has a basic facility for doing multiple jobs.
- The EvolutionState (and SimpleEvolutionState and SteadyStateEvolutionState) objects have been overhauled with a new loop facility that is consistent and flexible (and simpler). This enables manipulation by the GUI and by the multiple-job facility. The make() and go() methods are gone.
- In order to make possible the GUI and the job facility, we needed to eliminate the non-final static variables in ECJ. This is largely the hashtable and array repositories for Cliques (specifically: GPFunctionSet, GPNodeConstraints, GPTreeConstraints, GPType, and RuleConstraints). If your code accesses these variables directly, you'll need to access them in their new locations (GPInitializer and RuleInitializer).
- ECJ's undergone some simplification to make development of Individuals and Fitness objects easier. Specifically, a number of Individual methods are no longer abstract, but instead have default implementations which do nothing or throw 'no-implementation' errors (but are rarely used -- so you can avoid implementing them). Additionally, Fitness is no longer an interface, but is now an abstract class, with default implementations of several methods.
- ECJ has significantly simplified read/print methods in Individual, Fitness, and GPNode in order to make printing easier to implement.
- At the same time, ECJ now has another read/write form (pure binary) for sending individuals over networks efficiently (using the DataOutput and DataInput java interfaces)
- Also in the name of simplification: the ES package has been overhauled and a number of classes have been eliminated (including, importantly, ESEvolutionState!).
- Likewise, the steadystate package has also seen a major overhaul. state.generations no longer refers to number of evaluations (that was always silly), but to a population's worth of individuals evaluated. Accordingly state.pseudogenerations is gone.
- New parsimony pressure methods have been added.
- Last but not least, ECJ now has a master/slave evaluation facility. Note that this is a rudimentary first implementation and will get better in future versions (we hope!).
The Agent
The software license refers to the "Agent". Presently, that's Sean Luke.
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.
-
|