abstract = "Several genetic programming researchers have argued
for the utility of genetic operators that act
uniformly. By act uniformly we mean two specific
things: that the probability of an inherited program
component being modified during inheritance is
independent of the size and shape of the parent
programs beyond the component in question; and that
pairs of parents are combined in ways that allow
arbitrary combinations of components from each parent
to appear in the child. Uniform operators described in
previous work have had limited utility, however,
because of a mismatch between the relevant notions of
uniformity and the hierarchical structure and variable
sizes of many genetic programming representations. In
this chapter we describe a new genetic operator, ULTRA,
which incorporates aspects of both mutation and
crossover and acts approximately uniformly across
programs of variable sizes and structures. ULTRA treats
hierarchical programs as linear sequences and includes
a repair step to ensure that syntax constraints are
satisfied after variation. We show that on the drug
bioavailability and Pagie-1 benchmark problems ULTRA
produces significant improvements both in
problem-solving power and in program size relative to
standard operators. Experiments with factorial
regression and with the Boolean 6-multiplexer problem
demonstrate that ULTRA can manipulate programs that
make use of hierarchical structure, but also that it is
not always beneficial. The demonstrations evolve
programs in the Push programming language, which makes
repair particularly simple, but versions of the
technique should be applicable in other genetic
programming systems as well.",