CGP software

Leonard Mosescu has released a new CGPANN implementation. It  is part of the Darwin FrameworkDarwin is a software framework intended to make Neuroevolution experiments easy, quick and fun

Dennis Wilson has created a github repository of his implementation of:  CGP in Julia.

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. dCGP is 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 Java CGP library
To get started run jcgp.jar. Note, you will have to download the Java 8 JRE 
The manual gives you a good guide about how to use the package. This appears to be unavailable, however I have contacted Eduardo to see if it can be made available (29/04/2021)


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).

CGP Tools

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 from 

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 CGP in Java documentation. Java software is available at CGP in Java software. 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) ECJ.


Jordan Pollack has written a CGP program that solves symbolic regression problems in Matlab.



Lawrence Ashmore has written 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.