I think therefore I CGP
Dario Izzo, Francesco Biscani, and Alessio Mereta of the Advanced Concepts Team, European Space Agency have created a differentiable form of CGP(dCGP). This allows one to obtain high-order Taylor representation of program outputs. The new technique means that back-propagation (as in neural networks) can be used.
dCGPis open source and available from
this link. dCGP is able to find the exact form of the symbolic expression as well as the constants values. The authors
demonstrate the use of dCGP to solve a large class of differential equations and to find prime integrals of dynamical systems.
Andrew Turner has written a cross platform
Cartesian Genetic Programming library
The CGP library has been designed to be extremely simple to use whilst also being highly extensible.
The library is written in C (with binding to python and Java possibly coming soon) and is compatible with Linux, Windows and Mac OS.
Eduardo Pedroni has written a implementation of CGP in Java complete with GUI
Julian Miller has written a collection of CGP programs (in the C programming laguage) that can be compiled into programs that can handle three kinds of data with CGP, namely Boolean, integer and floating-point. Configuration files are included that will allow the user to run experiments on evolving Boolean circuits, mathematical expressions (Koza symbolic regression problems) and predicting prime numbers. Documentation is included about how to run the experiments and set parameters, etc. The C programs are well documented with instructions about how to adapt the programs for your particular application.
Julian Miller has released a C implementation of smcgp. It can deal with Boolean and floating point problems. You can download it from the link below. It contains a readme.txt file with instructions and explanantions. It can produce files (.dot) that can generate pictures of evolved program graphs, using a software package called graphviz (see link below)
Graphviz is available below:
Zdenek Vasicek and Lukas Sekanina have developed a set of tools for Cartesian Genetic Programming (CGP) containing an input data reading module, CGP implementation and a CGP chromosome viewer (cgpviewer). Cgpviewer enables to display the CGP chromosome, simulate it and convert it to various output file formats (VHDL, bmp).
Zdenek Vasicek has implemented a method of accelerating the fitness evaluations in CGP.
The accelerated version of CGP implementation accompanied with performance analysis is available for free download
Brian Goldman has implemented CGP in Python.
The code is intended for use by anyone trying to recreate the results shown in Goldman and Punch's IEEE Transactions paper.
However, it will probably be useful to those wishing to get started in programming CGP in Python.
David Oranchak has implemented CGP in Java. Documentation is available at
Java software is available at
He has implemented CGP using two representations. One is integer-based (classic CGP), and the other is a real-numbered representation proposed by Janet Clegg. His program can be run on the following example problems. Symbolic regression, two classification problems (iris data and breast cancer data) and various parity problems.
His code is included in the GP library (Koza style)
Jordan Pollack has written a CGP program that solves symbolic regression problems in Matlab.
Lawrence Ashmore has writen a nice Java program for evolving (and animating) art using CGP.
If you have coded CGP in another language and you are pretty sure it is reliable, then contact Julian Miller to get it posted on this page.
DEC 2016: Dario Izzo, Francesco Biscani, and Alessio Mereta have released DIFFERENTIABLE CGP (see right panel)