COSC668, Evolutionary Computation


Last modified: "November 20, 2001 12:53:12 by evett";

Instructor: Matthew Evett

Textbook: Genetic Programming, an Introduction, Wolfgang Banzhaf, Peter Nordin, Robert E. Keller, and Frank D. Francone, Morgan Kaufmann Publishers, 1998.

Recommended: An Introduction to Genetic Algorithms, Melanie Mitchell, MIT Press, 1996.

Recommended: Genetic Programming, John Koza, MIT Press, 1992. ANSI Common Lisp,Paul Graham, Prentice Hall, 1995.

MW, 1:00-3:50PM.
Pray-Harrold 301

The Syllabus


Assignment Due Dates

  1. Evolve evasion behavior for lion-hunted gazelles! Due ?.
  2. Evolve tracking behavior for gazelle-chasing lions! Due ?.
  3. Evolve self-defense behavior for lion-hunted gazelles! Due ?.

Evolutionary Computation (EC) is an umbrella term encompassing several techniques motivated by biological systems for autonomously evolving solutions to given problems. These techniques include genetic programming, genetic algorithms, evolutionary strategies, and evoluationary programming. To date, EC has been used to solve many real-world problems, including robotic controllers, electronic circuit design, stock market analysis, pharmaceutical design, tactical planners, computer animation, etc.

The movement of the animals in this animation (9.3M) was derived using genetic programming.

The technique used in creating this herding behavior is related to Craig Reynold's "boids" project, an interactive version of which can be seen here.

This course will examine the major EC techniques, with particular emphasis on genetic programming, and their application to various domains. There will be several small programming projects (in C++), in which students will use preexisting EC systems to derive solutions, or near solutions, to relatively simple problems.

Announcements

Sean Luke of the Univ. of Maryland has created a team of robotic soccer players via genetic programming.

Assignments

Most of the programming in this course will be in C or C++. We will learn enough about Lisp to understand seminal work in the field, which was mostly conducted using that language.

Programming and other assignments should be completed by each student on their own. It is expressly forbidden for students to collaborate on assignments without the express permission of the instructor. A few friendly pointers and a bit of advice is fine, but "borrowing" or copying another's work is grounds for punitive action.


Lecture Notes

A sample MySQL session.

Programming Environment

Java

There are two ways to obtain Java, by downloading (or purchasing) Borland's JBuilder (I recommend this option--it's free!). or by downloading Sun's JDK directly. To get JBuilder (Foundation edition), for free!, go to their website.

Java from Sun

To obtain Java directly from Sun, go to Sun's site. You want to download SDK2, v1.2.2 onto your PC. (Another name for this is JDK1.2, v1.2.2.) If you are using a Mac, you may have to download an earlier release of the JDK. Follow the installation directions! (You will have to set your DOS PATH variable.)

With Java installed, you may want to download the SDK documentation, too.

After you've got that downloaded and installed, you may want to download TextPad, a simple Windows code editor. You can get the download as shareware. Once TextPad is downloaded and installed, go ahead and run it. Go to Configure:Preferences. Select Tools from the resulting window. Then, click on the pull-down menu named "Add", to add the JDK Tool options. These should include "compiling java", "run Java Application", and "run Java Applet". You should now see those options under the Tools menu.

Java Documentation

Your download of Java should come with documentation. (This documentation is not "Javadoc", which is an actual tool.) If you want, you can see an on-line version of this documentation.

Run some code!

Okay, now let's look at some code. Download the code examples from Horstman and Cornell's book, Core Java. This is a zip file, which you should decompress. Now, cd into v1ch2/Welcome, and use TextPad to open Welcome.java. From within TextPad, use Tools:Compile Java to compile the file (forming Welcome.class), then run it using Tools:Run Java Application.

Core Java source code

Java References and Help

You might want to try this collection of FAQ's and other documentation.

Running Koza's Lisp examples

Here, you can get John Koza's Lisp implementation of his basic genetic programming system. This package also includes implementations of some of the experiments in the textbook (GP-1). Also, you might want to look at a patch to the basic system that allows a different kind of tournament selection between generations.

Of course, to use Koza's code, you'll need a Lisp interpreter. The Franz corporation provides a good commercial one, called Allegro Common Lisp. The system provides very good integration with the Emacs editor, if you're so inclined. Franz provides a free, downloadable, PC version of ACL, if you're not ready to open your wallet just yet.

GPC++

The GPC++ system (including documentation) can be obtained here. Download the file, unzip it, then untar it (unless your browser is smart enough to figure out how to do all that on its own!)

I have modified this local version of GPC++ slightly, and added a bit more documentation to the readme.gp file, which you should use to get started.


Evolutionary Computation on the Web

There is a nifty Java-based implementation of a symbolic regression GP on the Web. Also, there are a number of evolutionary agorithms on display here. Notable examples include
  1. a distributed GP Santa Fe Ant applet
  2. An interactive GA approach at learning bipedal locomotion
  3. and a GA approach to solving some symbolic regression problems.

  4. a movie showing walking motions derived through evolutionary techniques.

Documentation

Guy Steele's Common Lisp, the Language, is the premier documentation for Lisp. It is available on the Web!

For your final project/paper, you might want to look at Bill Langdon's GA/GP bibliography. There are a great many recent papers abstracted here. Should be good for finding a project area, or for finding some new papers to review.