Origin web site Origin Developer's Guide
Table of Contents Running Origin


Origin® is a Java-based software development platform for developing distributed evolutionary computation and genetic programming applications. It's based on ECJ, a research evolutionary computation framework developed by Dr. Sean Luke of George Mason University, and the Parabon Frontier® Grid Platform. Like ECJ, most of Origin's behavior is dynamically configured at runtime by parameter files, and most Origin classes can be easily subclassed or replaced to extend Origin's operation.

Evolutionary computation is a problem-solving method inspired by biological evolutionary processes. A random population of individuals - possible solutions to a problem - are generated and executed, and those individuals that produce better results are favored to breed additional solutions, while poorly performing individuals are eventually eliminated. Evolutionary computation is attractive for problems where the range of possible solutions (the "solution space") is too large to exhaustively test all possible solutions, and where the goal is to determine a "pretty good" solution rather than the best possible one.

If you're unfamiliar with evolutionary computation the Association for the Advancement of Artificial Intelligence (AAAI) has a good overview of evolutionary computation, while more in-depth introductions to genetic algorithms and genetic programming can be found at those links. You should also study the Origin sample applications that demonstrate how to solve some common evolutionary computation problems using Origin.

Getting Started

To get started developing with Origin you should:

Running Origin requires the following software:

If you are running on a Linux system you should verify that you are using a Sun-compatible JVM rather than gcj. Enter the following command to check the JVM version and type:
java -version
If your java version is earlier than 1.5 or the output refers to "GNU libgcj" you must install a newer Java runtime.

The Origin Directory Structure

The Origin directory structure looks like this:

Scripts and batch files to run ORIGIN.
Parameter files and other runtime configuration files.
The ECJ/ORIGIN source code for the ecj-origin.jar classes.
Origin documentation files and generated Javadocs.
ORIGIN and third-party jars used to run Origin.
A skeleton application directory with an Ant build.xml file. You can use this directory as a model for your applications.

Running the Sample Applications

Origin includes several grid-enabled EC sample applications, along with most of the ECJ sample programs and the ECJ tutorials. You can run these programs using the origin shell script or origin.bat batch file in the directory origin/bin. These files are described in more detail in Running Origin.

The main sample programs are shown below. If you use the -remote flag with a grid-enabled Origin sample program the program will use the Frontier grid for execution instead of simulating a grid on your local machine. Most of the samples write evolutionary statistics to a file named out.stat in the current directory, and output log messages to the file origin.log.

origin [-remote] -file ec/app/star/ant.origin.params
Origin master/slave Artificial Ant (Santa Fe trail, 1024 population).
origin [-remote] -file ec/app/ecsuite/ecsuite.origin.params -p eval.problem.type=rosenbrock
Origin master/slave Rosenbrock (1000 population, 100 genes).
origin -file ec/app/ecsuite/ecsuite.params -p eval.problem.type=rosenbrock
ECJ Rosenbrock (1000 population, 100 genes).
origin [-remote] -file ec/app/ecsuite/ecsuite.origin.params -p eval.problem.type=step
Origin master/slave Step (1000 population, 100 genes).
origin -file ec/app/ecsuite/ecsuite.params -p eval.problem.type=step
ECJ Step (1000 population, 100 genes).
origin [-remote] -file ec/app/parity/parity.origin.params -p eval.problem.even=true
Origin master/slave Even 4-Parity.
origin -file ec/app/parity/parity.params -p eval.problem.even=true
ECJ Even 4-Parity.
origin [-remote] -file ec/app/parity/parity.origin.params -p eval.problem.even=false
Origin master/slave Odd 4-Parity.
origin -file ec/app/parity/parity.params -p eval.problem.even=false
ECJ Odd 4-Parity.
origin [-remote] -file ec/app/parity/parity.origin.params -p eval.problem.even=false -p eval.problem.bits=10 -p gp.fs.0.size=14
Origin master/slave Odd 10-parity.
origin -file ec/app/parity/parity.params -p eval.problem.even=false -p eval.problem.bits=10 -p gp.fs.0.size=14
ECJ Odd 10-parity.
origin [-remote] -file ec/app/sum/steadysum.origin.params
Origin Opportunistic Evolution.
origin -file ec/app/sum/steadysum.params
ECJ steady-state evolution.