GP Software

The following GP applications and packages are known to be maintained by their developers.

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

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.

Linear Genetic Programming (Kotlin) by Jed Simson

An implementation of Linear Genetic Programming (LGP) as outlined by M. F. Brameier and W. Banzhaf (2007). LGP is a paradigm of genetic programming that employs a representation of linearly sequenced instructions in automatically generated programs. A linear approach lends itself to programs which have two unique attributes: a graph-based functional structure and the existence of structurally non-effective instructions.

This particular implementation is written using the Kotlin programming language and provides:

  • A modern, robust, and easy-to-use API.
  • A modular system design that allows extensibility of entire system components.
  • Numerous built-in components for use in different contexts (e.g. parallelised evolutionary algorithms, fitness functions).
  • Cross-platform support due to being built on a JVM-based language.
  • Extensive API documentation and usage guide.
  • Completely open-source and still in active development.

PyshGP by Eddie Pantridge

PyshGP is a library for Push Genetic Programming in Python. PyshGP aims to bring PushGP to a wider range of users and use cases. Many popular ML/AI frameworks are written in Python, and with PyshGP it is easy to compare PushGP with other methods or build ML pipelines that contain PushGP and other model types together.

Other PushGP implementations are rapidly changing tools meant so support research and publication. PyshGP focuses on offering a slow changing set of highly curated features based on existing results.

Modular Agent Based Evolution Framework (mixed environments and platforms) by Hintzelab

MABE is a digital evolution research tool used to create and manage populations of evolving digital organisms. Mabe is a framework with modular parts which can be combined to create experiments. MABE encourages users to develop new modules if needed, and use existing modules when possible.

The purpose of MABE is threefold:

  • To support and accelerate research into topics related to digital evolution.
  • To provide insight into evolution and evolutionary processes in both digital and biological contexts.
  • To provide a platform which allows for direct comparisons.

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.

Tiny Genetic Programming (Python) by Moshe Sipper

Two minimalistic programs implementing Koza-style (tree-based) genetic programming to solve a symbolic regression problem.