Kozax: Flexible and Scalable Genetic Programming in JAX
Sigur de Vries, Sander W. Keemink, Marcel A. J. van Gerven
TL;DR
This work addresses the need for a general, scalable genetic programming framework capable of evolving symbolic expressions across diverse scientific tasks. It introduces Kozax, a JAX-based GP library that vectorizes population evaluation, runs on CPU or GPU, and supports custom fitness functions, operators, and multi-tree evolution. A matrix-based tree representation enables parallel execution of GP operations and scalable constant optimization, showing competitive performance with PySR on symbolic regression and advantages over DEAP in flexibility and speed, especially with GPU acceleration. The results across law discovery, dynamical systems, control policies, and objective-function learning demonstrate Kozax's potential for scalable, interpretable white-box modeling in scientific computing, with room for further enhancements such as simplification during evolution and higher-dimensional or multi-output trees.
Abstract
Genetic programming is an optimization algorithm inspired by evolution which automatically evolves the structure of interpretable computer programs. The fitness evaluation in genetic programming suffers from high computational requirements, limiting the performance on difficult problems. Consequently, there is no efficient genetic programming framework that is usable for a wide range of tasks. To this end, we developed Kozax, a genetic programming framework that evolves symbolic expressions for arbitrary problems. We implemented Kozax using JAX, a framework for high-performance and scalable machine learning, which allows the fitness evaluation to scale efficiently to large populations or datasets on GPU. Furthermore, Kozax offers constant optimization, custom operator definition and simultaneous evolution of multiple trees. We demonstrate successful applications of Kozax to discover equations of natural laws, recover equations of hidden dynamic variables, evolve a control policy and optimize an objective function. Overall, Kozax provides a general, fast, and scalable library to optimize white-box solutions in the realm of scientific computing.
