Abstract
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).
Users
Please
log in to take part in the discussion (add own reviews or comments).