[Push] Push2 available

Lee Spector lspector at hampshire.edu
Thu Jan 8 15:59:42 EST 2004


A major revision to the "Push" language for evolutionary computation 
("Push2") has been completed and a number of new files are now 
available for viewing/download. In particular, the following are now 
available:

- A specification document that serves both as a concise introduction 
to the language and as a language reference.

- A Push2 interpreter implemented in Common Lisp and distributed in 
source code form.

- A Push2 interpreter implemented in C++ and distributed in source code 
form.

- Versions of PushGP (a simple genetic programming system that evolves 
Push programs) for both the Lisp and the C++ Push2 implementations.

- A Push2 interpreter (based on the C++ version) built as a plug-in for 
the BREVE simulation environment.

Many of the code distributions are currently labeled as "beta" 
versions, and we make no promises of support. But this is an active 
project and we expect to fix bugs and to remove "beta" designations in 
the near future.

All of this, along with links to related publications, to Push-related 
code by others, and to a Push-specific mailing list, can be found at:

     http://hampshire.edu/lspector/push.html

I am including below a very brief description of Push; more complete 
documentation can be found at the above URL.

Enjoy,

  -Lee

---- Brief description of Push ----

Push is a programming language intended primarily for use in 
evolutionary computation systems (such as genetic programming systems), 
as the language in which evolving programs are expressed. Push has an 
unusually simple syntax, which facilitates the development (or 
evolution) of mutation and recombination operators that generate and 
manipulate programs. Despite this simple syntax, Push provides more 
expressive power than most other program representations that are used 
for program evolution. Push programs can process multiple data types 
(without the syntax restrictions that usually accompany this 
capability), and they can express and make use of arbitrary control 
structures (e.g. recursive subroutines and macros) through the explicit 
manipulation of their own code (via a "CODE" data type). This allows 
Push to support the automatic evolution of modular program 
architectures in a particularly simple way, even when it Push is 
employed in an otherwise ordinary genetic programming system (such as 
PushGP, which is a "generic" GP system except that it evolves Push 
programs rather than Lisp-style program trees). Push can also support 
entirely new evolutionary computation paradigms such as 
"autoconstructive evolution," in which genetic operators and other 
components of the evolutionary system themselves evolve (as in the 
Pushpop and SwarmEvolve2 systems).



--
Lee Spector
Dean, Cognitive Science + Associate Professor, Computer Science
Cognitive Science, Hampshire College, Amherst, MA 01002
lspector at hampshire.edu, http://hampshire.edu/lspector/
Phone: 413-559-5352, Fax: 413-559-5438





More information about the Push mailing list