dcgp: Differentiable Cartesian Genetic Programming made easy.
Dario Izzo, Francesco Biscani · The Journal of Open Source Software · 2020
Genetic Programming (GP), is a computational technique based on the idea of representing a computer program in some dedicated data-structure (e.g. a tree) to then evolve it using genetic algorithms as to improve its ability at solving a predefined task.How good a certain program is at solving the task is typically encapsulated in its fitness: a vector of floating point values defining various aspects of the program.In a typical example, the fitness would be the program output error with respect to a predefined behaviour over a number of inputs.Generation after generation, the genetic algorithm would then improve such a fitness in the attempt to have the program behave correctly.The idea flourished in the late 80s mainly thanks to the work of John Koza (Koza, 2010), and (using the words of Koza) has always had a "hidden skeleton in the closet": the difficulty to find and evolve real valued parameters in the expressed program.A recent development called differentiable genetic programming (Izzo, Biscani, & Mereta, 2017), was introduced to address exactly this issue by allowing to learn constants in computer programs using the differential information of the program outputs as obtained using automated differentiation techniques.