ECJ 20
A Java-based Evolutionary Computation Research System

By Sean Luke, Liviu Panait, Gabriel Balan, Sean Paus, Zbigniew Skolicki, Elena Popovici, Keith Sullivan, Joseph Harrison, Jeff Bassett, Robert Hubley, Alexander Chircop, Jack Compton, William Haddon, Stephen Donnelly, Beenish Jamil, Joseph Zelibor, Eric Kangas, Faisal Abidi, Houston Mooers, and James O'Beirne

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.

New Book!

Sean's got a free online text, Essentials of Metaheuristics. 222 pages of goodness. Check it out!

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
  • NSGA-II and 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
  • Grammatical Encoding
  • Eight pre-done GP application problem domains (ant, regression, multiplexer, lawnmower, parity, two-box, edge, serengeti)
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
  • Multiset-based genomes in the rule package, for evolving Pitt-approach rulesets or other set-based representations.

Download ECJ

Download ECJ version 20 as ecj.tar.gz or (bigger) ecj.zip.

Download optional support libraries for ECJ as libraries.zip. The support libraries provide two facilities:

  • ECJ's distributed evaluation and island model facilities have optional compressed socket options for more efficiency. Java's standard compression routines are broken for sockets (they don't support "partial flush") and so we rely on the JZlib library to do it.

  • ECJ's GUI relies on the JFreeChart and iText libraries, specifically the jfreechart.jar, jcommon.jar, and iText.jar files. 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.

New! The ECJ Owner's Manual is now available. 206 pages of mind-numbing tedium detailing every last feature. Enjoy!

The full online documentation of the system, including tutorials, is also available.

Repository: ECJ's repository is SVN, at Google Code, under the project name ecj.

ECJ is migrating to Google Code and away from Java.net. If for some reason you need access to the old CVS repository, it's under the project name ecj. Note that this repository will not be updated further.

Contrib packages: (also out on CVS in the contrib directory)

  • CGP by David Oranchak: contrib-cgp-18.zip. Extensions for Julian Miller's Cartesian Genetic Programming. Documentation and tutorial here.

  • 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: ecj18Gep.zip. 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:

    Previous Releases

Version 19: ecj19.tar.gz
Version 18: ecj18.tar.gz
Version 17: ecj17.tar.gz
Version 16: ecj16.tar.gz
Version 15: ecj15.tar.gz
Version 14: ecj14.tar.gz
Version 13: ecj13.ec.tar.gz
Version 12: ecj12.ec.tar.gz
Version 11: ecj11.ec.tar.gz
Version 10: ecj10.ec.tar.gz
Version 9: ecj9.ec.tar.gz
Version 8: ecj8.ec.tar.gz
Version 7: ecj7.ec.tar.gz
Version 6: ecj6.ec.tar.gz
Version 5: ecj5.ec.tar.gz
Version 4: ecj4.ec.tar.gz
Version 3: ecj3.ec.tar.gz

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 20 represents a very serious upgrade from ECJ 19 and has a large number of non-backward-compatable changes. A great many of these were prompted by writing The ECJ Owner's Manual and, during this process, going through the system with a fine-toothed comb. Among the biggest changes: heavy revision of Differential Evolution and Steady State Evolution, modifications of how GPNodes are names, changes to vectors with regard to gaussian mutation, deprecation of certain statistics elements, elimination of cloneRlacing(), on and on. Be sure to check the CHANGES file for the complete list.

Warning. There is a good chance that in the coming year ECJ will be heavily revised further in non-backward-compatible ways in order to improve it and update it.

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
Alternative GP Representations
  • PushGP, a multi-type, stack-based genetic programming system, now has a Java implementation.
  • GEVA, a Java version of Grammatical Evolution
  • jGE, another Java version of Grammatical Evolution
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.