  This work uses genetic programming to explore the design space of local
optimisation algorithms. Optimisers are expressed in the Push programming
language, a stack-based language with a wide range of typed primitive
instructions. The evolutionary framework provides the evolving optimisers with
an outer loop and information about whether a solution has improved, but
otherwise they are relatively unconstrained in how they explore optimisation
landscapes. To test the utility of this approach, optimisers were evolved on
four different types of continuous landscape, and the search behaviours of the
evolved optimisers analysed. By making use of mathematical functions such as
tangents and logarithms to explore different neighbourhoods, and also by
learning features of the landscapes, it was observed that the evolved
optimisers were often able to reach the optima using relatively short paths.
