Pyshgp Overview

PyshGP is broken down into two sub-packages with a few shared utilities. This document will outline design and intended uses cases for each of the sub-packages.

Push Language

The push sub-package contains an implementation of the Push language. This includes an instruction set, interpreter, and random Push code generation utilities.

The following paragraph has been taken from the Push language homepage.

Push is a programming language designed for evolutionary computation, to be used as the programming language within which evolving programs are expressed. Push features a stack-based execution architecture in which there is a separate stack for each data type. In Push, “code” itself is a data type, allowing programs to manipulate their own code as they run and thereby to implement arbitrary and potentially novel control structures. This expressiveness is combined with syntactic minimality: the only syntax rule is that parentheses must be balanced. It is therefore trivial to generate and transform syntactically valid Push programs.

Genetic Programming Framework

The gp sub-package contains a genetic programming framework that produces Push programs.

The genetic program framework is heavily inspired by the Scikit-learn machine learning framework. PyshGP is designed to be usable using only the base classes, many of which are sklearn estimators. The PyshGP genetic programming framework aims to be easily embedded into Data Science/Machine Learning pipelines, over being used as a standalone tool.

Aside from the general goal of Inductive Program Synthesis, the PyshGP genetic programming framework does not have a single intended application (ie. regression, classification, etc).

PushGP in PyshGP

The easiest way to use PyshGP for the purpose of pu