GP Software


Clojush (Clojure/Java) by Lee Spector, Thomas Helmuth, and additional contributors

Clojush is a version of the Push programming language for evolutionary computation, and the PushGP genetic programming system, implemented in Clojure. Push features a stack-based execution architecture in which there is a separate stack for each data type. PushGP has been used for a variety of applications, ranging from intelligent agent design to automatic quantum computer programming. It has also been used for “meta-genetic-programming” or “autoconstructive evolution” experiments, in which programs and genetic operators co-evolve or in which programs produce their own offspring while also solving problems.

Learn more about genetic programming in Clojure, using either Clojush or a minimalist implementation of tree-based genetic programming, in this YouTube video.

Data Modeler (Mathematica) by Evolved Analytics

The DataModeler package is developed within the context of industrial data analysis with a goal of rapid analysis, interpretation and exploitation of multivariate data sets. Towards this goal, we have developed a system which at its core exploits advanced and powerful nonlinear data modeling techniques.

DEAP (Python) Distributed Evolutionary Algorithms by Félix-Antoine Fortin and François-Michel De Rainville

DEAP is a novel evolutionary computation framework for rapid prototyping and testing of ideas. It seeks to make algorithms explicit and data structures transparent. It works in perfect harmony with parallelisation mechanism such as multiprocessing and SCOOP.

ECJ (Java) by Sean Luke, et al.

ECJ is a research Evolutionary Computation system written in Java. It was designed to be highly flexible, with nearly all classes (and all of their settings) dynamically determined at runtime by a user-provided parameter file. All structures in the system are arranged to be easily modifiable. Even so, the system was designed with an eye toward efficiency.

EllenGP (C++) by William La Cava

EllenGP uses a stack-based, syntax-free, linear genome for constructing candidate equations. It is built to include different evolutionary methods for system identification adapted from literature. The options include normal tournament selection, deterministic crowding, and age-pareto fitness selection. All algorithm choices are mangaged by one parameter file.

Eureqa (web) by Nutonian

Eureqa is a Machine Intelligence™ application that automates much of the heavy lifting inherent in analytics and data science. Leveraging automated evolutionary algorithms, Eureqa churns through your data to create accurate predictive models in minutes rather than months.

FCUBE (Amazon cloud) by ALFA Group, CSAIL, MIT

A platform for collaborative learning supporting and uniting developers of home-brewed classifier algorithms to solve relevant problems of public domain. FCUBE allows users to:

  • Execute classification algorithms with large training data with a preset computational budget on Amazon EC2
  • Retrieve the solutions from the cloud nodes, build a fused model, and compute the testing predictions
  • Easily upload datasets
  • Easily contribute your standalone classifier in executable format (Java, python) or as source code (must compile in Linux: C, C++ etc)

FlexGP (Java) by ALFA Group, CSAIL, MIT

FlexGP centers on scalable machine learning using genetic programming (GP). All code is on github, including examples and tutorials.
GP Learners for symbolic regression applied to supervised machine learning:

GP Learners for classification:

FlexGP System (Amazon cloud) by ALFA Group, CSAIL, MIT

A cloud based platform for generating transparent, non-linear, large scale regression problems. It is composed of a sophisticated learner, a set of launch scripts, and a Java library that provides a TCP/IP communication layer. FlexGP System run on Amazon EC2.

GenProg, Evolutionary Program Repair (?) by Westley Weimer, Stephanie Forrest, and Claire Le Goues

Software maintenance accounts for over two-thirds of that life cycle cost, and a key aspect of maintenance is fixing bugs in existing programs. Unfortunately, the number of reported bugs far outstrips available development resources. It is common for a popular project to have hundreds of new bug reports filed every day. GenProg reduces software maintenance costs by automatically producing patches (repairs) for program defects. Many bugs can be fixed with just a few changes to a program’s source code. Human repairs often involve inserting new code and deleting or moving existing code. GenProg uses those same building blocks to search for repairs automatically.

HeuristicLab (Windows) by University of Applied Sciences, Upper Austria

HeuristicLab is a framework for heuristic and evolutionary algorithms that is developed by members of the Heuristic and Evolutionary Algorithms Laboratory (HEAL) since 2002.

  • Graphical User Interface
  • Algorithm Prototyping
  • Evolutionary Algorithms
  • Genetic Programming
  • Data Analysis
  • Simulation-based Optimization
  • Experiment Design and Analysis
  • Plugin-based Architecture

GP in OpenCL (OpenCL) by Douglas A. Augusto

Genetic Programming in OpenCL is a parallel implementation of genetic programming targeted at heterogeneous devices, such as CPU and GPU. It is written in OpenCL, an open standard for portable parallel programming across many computing platforms. This project has not been maintained since 2011.

Karoo GP (Python) by Kai Staats

A Python based genetic programming application suite with support for symbolic regression and classification. Karoo GP is a scalable platform with multicore support, designed to work with realworld data. As a teaching tool, it enables instructors to share step-by-step how an evolutionary algorithm arrives to its solution. As a hands-on learning tool, Karoo GP supports rapid, repeatable experimentation with a simple interface.

  • Ready to run, no programming required.
  • Multi-core and GPU support via TensorFlow.
  • Desktop application provides a simple user interface with menu, 5 display modes, and runtime reconfiguration of parameters.
  • Server application supports preset and/or argument-based scripting.
  • Anticipates datasets as standard .csv files.
  • Auto-records the full population of each generation and runtime configuration.
  • Supports the loading of customised seed populations.
  • Relatively simple framework for preparing custom fitness functions and evaluation routines.
  • Written in Object Oriented Python with a hierarchical naming scheme for all methods.

Symbiotic Bid-Based GP (Python) by Jessica Pauli de Castro Bonson

Symbiotic Bid-Based GP (SBB) is a framework for coevolving teams of programs that learn how to autonomously decompose a decision task. Solutions therefore always consist of at least two programs. The framework assumes that decisions take the form of a discrete set of actions (as in classification and reinforcement learning with atomic actions).

Behavioural diversity measures are used to mitigate the effect of local minima. Specifically, a genotypic team diversity measure and behavioral diversity measures are available; the latter w.r.t. action and state. Other features include: training against the environment, against custom opponents, and against a hall of fame; detailed customization of the training configuration; training in up to 2 layers; and the resultant agents are stored as .json files, thus can easily be translated to actual code or executed by an application.

To date, examples of the SBB framework have been demonstrated for multi-class classification, and single and multi-agent reinforcement learning in control and computer gaming (e.g. Acrobot, Rubik’s Cube, keepaway soccer, MsPacMan, Poker). However, this implementation of SBB focus on reinforcement learning, and is not recommended for classification.