ECJ 17
A Java-based Evolutionary Computation Research System
By Sean Luke, Liviu Panait, Gabriel Balan, Sean Paus, Zbigniew Skolicki, Elena Popovici, Joseph Harrison, 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 is 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 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, 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
- 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.
|
Download ECJ
|
Download ECJ version 17 as ecj.tar.gz or (bigger) ecj.zip.
ECJ's GUI relies on the JFreeChart and iText libraries, specifically the jfreechart.jar, jcommon.jar, and iText.jar files. You can download the latest and greatest their respective websites, or use workable copies we provide here. If you don't wish to use the GUI and thus install JFreeChart and iText, you can just get rid of the ec/display directory and don't call make gui, and ECJ will compile and run from the command line fine. Per license agreement, we provide source to these libraries here.
The online documentation of the system is also available.
Anonymous CVS Access is available via Java.net under the project name ecj.
Contrib packages: (also out on CVS in the contrib directory)
- DRM by Alberto Cuesta: drm.zip. Extensions to marry run ECJ with the DRM peer-to-peer distributed computation engine developed for the dr-ea-m distributed EC project.
- GEP by Bob Orchard: packages for ECJ 15 and ECJ 16. Extensions for Gene Expression Programming.
- Xholon by Ken Webb: Simple modifications to ECJ that allow it to be embedded within the Xholon modeling and simulation tool.
- Teambots ECJ by Liviu Panait and Sean Luke: teambots.tar.gz or teambots.zip. Extensions to ECJ to make it interoperate reasonably well with the venerable TeamBots lightweight robot simulation package. Getting up in age: we don't use it any longer.
Elsewhere:
|
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
Upgrading
ECJ 17 has continued the recent tradition of simplifications in order to make the internal system cleaner and more orthogonal; but few will affect you in upgrading. Additionally, we have made several major upgrades and changes to packages: the ES package is now simpler and has far fewer constraints; the Vector package has had major changes to its min/max gene mechanism to simplify the code greatly; SPEA2 has seen some refactoring to make it in-line with generational evolution classes; and by far the biggest change: a radical retooling of the distributed evaluator, which now sports a great many impressive improvements. There have also been a great many bug fixes to ECJ as well; but some of our upgrades may have introduced bugs (fingers crossed!).
Other Publically-Available Java-Based Evolutionary Computation Systems
- GP Systems
-
- Tree-based GP, implemented with trees
-
- Tree-based GP, implemented with arrays
-
- GP Applets
-
- Strings of Assembly Code
-
- GP using Java Bytecode
-
- Private GP Systems
-
- Whereabouts Unknown
-
- gpjpp
- gpjava, originally developed at ASyG, Vrje Universiteit Brussel.
- Other EC Stuff in Java
This is just a small sample, of course.
-
|