We use a genetic algorithm to construct Hadamard Matrices. The initial population of random matrices is generated to have a balanced number of +1 and −1 entries in each column except the first column with all +1. Several fitness functions are implemented in order to find the most effective one. The crossover process creates offspring matrix population by exchanging columns of the parent matrix population. The mutation process flips +1 and −1 entry pairs in random columns. The use of CuPylibrary in Python on graphics processing units enables us to handle populations of thousands of matrices and matrix operations in parallel.
Balogh, Andras, and Raven Ruiz. "A GPU accelerated Genetic Algorithm for the Construction of Hadamard Matrices." arXiv preprint arXiv:2208.14961 (2022).