The mutation operator is the only source of variation in Evolutionary Programming. In the past these have been human nominated and included the Gaussian, Cauchy, and the Lévy distributions. We automatically design mutation operators (probability distributions) using Genetic Programming. This is done by using a standard Gaussian random number generator as the terminal set and and basic arithmetic operators as the function set. In other words, an arbitrary random number generator is a function of a randomly (Gaussian) generated number passed through an arbitrary function generated by Genetic Programming.
Rather than engaging in the futile attempt to develop mutation operators for arbitrary benchmark functions (which is a consequence of the No Free Lunch theorems), we consider tailoring mutation operators for particular function classes. We draw functions from a function class (a probability distribution over a set of functions). The mutation probability distribution is trained on a set of function instances drawn from a given function class. It is then tested on a separate independent test set of function instances to confirm that the evolved probability distribution has indeed generalized to the function class.
Initial results are highly encouraging: on each of the ten function classes the probability distributions generated using Genetic Programming outperform both the Gaussian and Cauchy distributions.