;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; README ;; a README file for the pushgp genetic programming system ;; c) 2000-2001, Lee Spector (lspector@hampshire.edu) ;; ;; distribution location: http://hampshire.edu/lspector/push.html INTRODUCTION ------------ Push is a programming language designed for evolutionary computation. PushGP is a genetic programming system that evolves programs in the Push programming language. Features include: - Multiple data types without constraints on code generation or manipulation. - Arbitrary modularity without constraints on code generation or manipulation. - Evolved module architecture with no extra machinery. - Support for explicit, arbitrary recursion. - Support for ontogenetic development, evolved adaptivity, and (with the Pushpop system) diversifying self-replication. Pushpop is an "autoconstructive evolution" system that also evolves Push programs. In an autoconstructive evolution system the evolving programs construct their own children (and thereby their children's reproductive mechanisms and the evolutionary process itself). This contrasts with standard genetic programming systems (like PushGP) in which hand-written mutation and crossover operators are used. More information on Push, PushGP, and Pushpop can be found at: http://hampshire.edu/lspector/push.html THIS DISTRIBUTION ----------------- This distribution includes Push and PushGP but not Pushpop. Distribution of Pushpop is anticipated at some future date. This implementation was produced for research purposes. It includes only those features of the language/system that were needed for testing. Suitability of the code for any other purpose is in the eye of the beholder. This code is being made available for non-commercial educational and research uses only. QUICK START ----------- PushGP requires a Common Lisp programming environment. If you need one then you might start by looking at: http://www.lisp.org/table/systems.htm Run PushGP by launching Lisp and compiling/loading the following files in order: random.cl push.lisp pushgp.lisp This will run the system on a symbolic regression problem defined in pushgp.lisp. In most Lisps you can do all of the compiling/loading by loading the file called "load" that is included in the distribution. You can usually do this by typing the following to the Lisp prompt: (load "load") In some Lisps you can also do this with a "Load file" menu command. Macintosh Common Lisp: Use the menu command to load the three files individually (this will avoid issues with the Mac's notion of "current directory"). Compilation happens automatically unless you've disabled it. CMU Common Lisp under *nix: If your executable is called "lisp" then the following shell command should do everything: lisp -load load You'll want to quit Lisp after your run. If it's not obvious how to do this then try typing (quit) or (exit) to the Lisp prompt. To change parameters of the run (including the problem, fitness function, etc.) read the comment at the top of pushgp.lisp. Additional documentation is in the comment at the top of push.lisp. ;; end README