ECJ
An Evolutionary Computation and Genetic Programming System by Sean Luke
Copyright 2000 by Sean Luke, All Rights Reserved
Version 5




ECJ is a research EC and GP system written in Java. It was designed to be highly flexible, with nearly all classes (and their settings) dynamically determined at runtime by a user-provided parameter file. Even so, the system was designed with an eye toward efficiency, and it is reasonably competitive with other GP systems in speed.

Features include:

Before you use this software, you must first carefully read the license agreement. It's pretty lenient but it has a few important items in it which differ from the standard open-source license agreement. Be certain that you agree with them. Keep in mind that the Author is a pretty reasonable guy.

License Agreement

This software is Copyright 2000 by Sean Luke
All Rights Reserved

By using the source code, binary code files, or related data included in this distribution, you agree to the following terms of usage for this software distribution. In this license the Author means Sean Luke, and the Agent means any person authorized by the Author to maintain the software at present. You can determine the Agent by referring to the software's present distribution site (which as of January 2000 is located at http://www.cs.umd.edu/users/seanl/ecj/ but is subject to change at any time without notice).

The Author hereby grants you a world-wide, royalty-free, non-exclusive license, subject to third party intellectual property claims:

  • to use, reproduce, modify, display, perform, sublicense and distribute all or any portion of the source code or binary form of this software or related data with or without modifications, or as part of a larger work; and
  • under patents now or hereafter owned or controlled by the Author, to make, have made, use and sell ("Utilize") all or any portion of the source code or binary form of this software or related data, but solely to the extent that any such patent is reasonably necessary to enable you to Utilize all or any portion of the source code or binary form of this software or related data, and not to any greater extent that may be necessary to Utilize further modifications or combinations.

In return you agree to the following conditions:

  • If you redistribute all or any portion of the source code of this software or related data, it must retain the above copyright notice and this license and disclaimer.
  • If you redistribute all or any portion of this code in binary form, you must include the above copyright notice and this license and disclaimer in the documentation and/or other materials provided with the distribution.
  • You must not use the Author's name to endorse or promote products derived from this software without the specific prior written permission of the Author.
  • If you publish research results derived through the use of all or any portion of this software or related data, you must make a reasonable effort to inform the Agent and provide the Agent with a reference to your published results. If a reasonable effort fails, but the Author or Agent later requests this reference, you must provide it. You must also acknowledge the use of this software in print in the body of your publication, unless your publication is two pages in length or less in published form.
  • If you distribute or publish publically-available modifications to all or any portion of this software or related data, or produce a product for sale or for license which includes all or any portion of this software, you must you must make a reasonable effort to inform the Agent and provide the Agent with a reference to your publically-available modifications or product. If a reasonable effort fails, but the Author or Agent later requests this reference, you must provide it. You must also acknowledge use of this software in a prominent, publically-accessible location in said modifications or product.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Documentation

This distribution comes with several pieces of documentation:

Quick Examples

Some runs which result in the ideal individual being found (in most cases). First, cd to the ec directory. Then add the parent directory of the ec directory to your CLASSPATH. Then issue javac -O *.java */*.java */*/*.java */*/*/*.java

Now you're ready. Here are some problems to try.

Symbolic Regression
java ec.Evolve -file app/regression/noerc.params
Symbolic Regression with ERCs
java ec.Evolve -file app/regression/erc.params
Artificial Ant, Santa Fe Trail
java ec.Evolve -file app/ant/params
Artificial Ant, Los Altos Hills Trail
java ec.Evolve -file app/ant/params -p eval.problem.file=app/ant/losaltos.trl
Boolean 3 Multiplexer (new fast form)
java ec.Evolve -file app/multiplexer/3.params
Boolean 6 Multiplexer (new fast form)
java ec.Evolve -file app/multiplexer/6.params
Boolean 11 Multiplexer (new fast form)
java ec.Evolve -file app/multiplexer/11.params
Boolean 3 Multiplexer (original form)
java ec.Evolve -file app/multiplexerslow/3.params
Boolean 6 Multiplexer (original form)
java ec.Evolve -file app/multiplexerslow/6.params
Boolean 11 Multiplexer (original form)
java ec.Evolve -file app/multiplexerslow/11.params
8x8 Lawnmower
java ec.Evolve -file app/lawnmower/noadf.params
8x8 Lawnmower with 2 ADFs
java ec.Evolve -file app/lawnmower/adf.params
Even 4-Parity
java ec.Evolve -file app/parity/params -p eval.problem.even=true
Odd 4-Parity
java ec.Evolve -file app/parity/params -p eval.problem.even=false
Even 3-Parity with 2 ADFs
java ec.Evolve -file app/parity/adf.params -p eval.problem.even=true
Odd 3-Parity with 2 ADFs
java ec.Evolve -file app/parity/adf.params -p eval.problem.even=false
Simple Edge Encoding for Tomita Language Problem 3
java ec.Evolve -file app/edge/3.params

After a run, various statistical information is written to the out.stat file.

Contacting the author

Sean Luke can be found at http://www.cs.umd.edu/users/seanl/