An Evolutionary Computation and Genetic Programming System by Sean Luke
Copyright 2002 by Sean Luke, All Rights Reserved
License Agreement
Important Note: Before you use this software, you must first carefully read the license agreement. It's pretty lenient but it has a few importnant 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.
Documentation
This distribution comes with several pieces of documentation:
Tutorials
Here are some tutorials to get you up to speed. As I have time, I'll produce tutorials on the other various odd features of the system.
- Tutorial 1: Build a Genetic Algorithm for the MaxOnes Problem. Introduces the basics of building a simple ECJ problem, high-level ECJ constructs, the concepts behind the parameter files, and how to make an evaluation function.
- Tutorial 2: Build a Genetic Algorithm for an Integer Problem. Shows how to use a new representation (integer vectors), parent parameter files, multiple threads, custom breeding pipelines and breeding operators, and other good stuff.
- Tutorial 3: Build a Floating-Point Evolution Strategies Problem. Shows how to build a generational ES, to perform and recover from checkpointing, to use the setup() method, to make custom selection and statistics classes, and to read and write populations to files.
- Tutorial 4: Build a Genetic Programming Symbolic Regression Problem. Shows how to use the genetic programming package, how to manipulate the GP statistics classes, and how to add elitism.
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 Alternatively you can run the makefile.
Now you're ready. Here are some problems to try.
- (GA) Vector Sum (pop=100, 10 genes)
- java ec.Evolve -file app/sum/sum.params
- (GA) Rastrigin (pop=1000, 100 genes)
- java ec.Evolve -file app/ecsuite/ecsuite.params
- (GA) Rosenbrock (pop=1000, 100 genes)
- java ec.Evolve -file app/ecsuite/ecsuite.params -p eval.problem.type=rosenbrock
- (GA) Sphere (pop=1000, 100 genes)
- java ec.Evolve -file app/ecsuite/ecsuite.params -p eval.problem.type=sphere
- (GA) Step (pop=1000, 100 genes)
- java ec.Evolve -file app/ecsuite/ecsuite.params -p eval.problem.type=step
- (GA) Noisy-Quartic (pop=1000, 100 genes)
- java ec.Evolve -file app/ecsuite/ecsuite.params -p eval.problem.type=noisy-quartic
- (GP) Symbolic Regression, no ercs
- java ec.Evolve -file app/regression/noerc.params
- (GP) Symbolic Regression with ercs
- java ec.Evolve -file app/regression/erc.params
- (GP) Artificial Ant, Santa Fe Trail
- java ec.Evolve -file app/ant.params
- (GP) Artificial Ant, Los Altos Hills Trail
- java ec.Evolve -file app/ant.params -p eval.problem.file=app/ant/losaltos.trl
- (GP) Boolean 3 Multiplexer (new fast form)
- java ec.Evolve -file app/multiplexer/3.params
- (GP) Boolean 6 Multiplexer (new fast form)
- java ec.Evolve -file app/multiplexer/6.params
- (GP) Boolean 11 Multiplexer (new fast form)
- java ec.Evolve -file app/multiplexer/11.params
- (GP) Boolean 3 Multiplexer (original form)
- java ec.Evolve -file app/multiplexerslow/3.params
- (GP) Boolean 6 Multiplexer (original form)
- java ec.Evolve -file app/multiplexerslow/6.params
- (GP) Boolean 11 Multiplexer (original form)
- java ec.Evolve -file app/multiplexerslow/11.params
- (GP) 8x8 Lawnmower
- java ec.Evolve -file app/lawnmower/noadf.params
- (GP) 8x8 Lawnmower with 2 ADFs
- java ec.Evolve -file app/lawnmower/adf.params
- (GP) Even 4-Parity
- java ec.Evolve -file app/parity/parity.params -p eval.problem.even=true
- (GP) Odd 4-Parity
- java ec.Evolve -file app/parity/parity.params -p eval.problem.even=false
- (GP) Odd 10-Parity
- java ec.Evolve -file app/parity/parity.params -p eval.problem.even=false -p eval.problem.bits=10 -p gp.fs.0.size=14
- (GP) Even 3-Parity with 2 ADFs
- java ec.Evolve -file app/parity/adf.params -p eval.problem.even=true
- (GP) Odd 3-Parity with 2 ADFs
- java ec.Evolve -file app/parity/adf.params -p eval.problem.even=false
- (GP) 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. All the GP examples use a population size of 1000, and tournament selection. All other parameters are Koza-I/II standard.
Contacting the author
Sean Luke can be found at http://www.cs.umd.edu/users/seanl/