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
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.
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.
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.
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.
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.
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
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.