Cartesian genetic programming is a form of genetic programming that uses a graph representation to encode computer programs. It grew from a method of evolving digital circuits developed by Julian F. Miller and Peter Thomson in 1997.[1] The term ‘Cartesian genetic programming’ first appeared in 1999[2] and was proposed as a general form of genetic programming in 2000.[3] It is called ‘Cartesian’ because it represents a program using a two-dimensional grid of nodes.[4]
Miller's keynote[5] explains how CGP works. He edited a book entitled Cartesian Genetic Programming,[6] published in 2011 by Springer.
The open source project dCGP[7] implements a differentiable version of CGP developed at the European Space Agency by Dario Izzo, Francesco Biscani and Alessio Mereta [8] able to approach symbolic regression tasks, to find solution to differential equations, find prime integrals of dynamical systems, represent variable topology artificial neural networks and more.
^Miller, J.F., Thomson, P., Fogarty, T.C.: Designing Electronic Circuits Using Evolutionary Algorithms: Arithmetic Circuits: A Case Study. In: D. Quagliarella, J. Periaux, C. Poloni, G. Winter (eds.) Genetic Algorithms and Evolution Strategies in Engineering and Computer Science: Recent Advancements and Industrial Applications, pp. 105–131. Wiley (1998)
^Miller, J.F.: An Empirical Study of the Efficiency of Learning Boolean Functions using a Cartesian Genetic Programming Approach. In: Proc. Genetic and Evolutionary Computation Conference, pp. 1135–1142. Morgan Kaufmann (1999)
^Miller, J.F., Thomson, P.: Cartesian Genetic Programming. In: Proc. European Conference on Genetic Programming, LNCS, vol. 1802, pp. 121–132. Springer (2000)
^Izzo, D. and Biscani, F. and Mereta, A.: Differentiable Genetic Programming. In: Proc. European Conference on Genetic Programming, LNCS, vol. 10196, pp. 35–51. Springer (2017)