  Many of the most fundamental laws of nature can be formulated as partial
differential equations (PDEs). Understanding these equations is, therefore, of
exceptional importance for many branches of modern science and engineering.
However, since the general solution of many PDEs is unknown, the efficient
approximate solution of these equations is one of humanity's greatest
challenges. While multigrid represents one of the most effective methods for
solving PDEs numerically, in many cases, the design of an efficient or at least
working multigrid solver is an open problem. This thesis demonstrates that
grammar-guided genetic programming, an evolutionary program synthesis
technique, can discover multigrid methods of unprecedented structure that
achieve a high degree of efficiency and generalization. For this purpose, we
develop a novel context-free grammar that enables the automated generation of
multigrid methods in a symbolically-manipulable formal language, based on which
we can apply the same multigrid-based solver to problems of different sizes
without having to adapt its internal structure. Treating the automated design
of an efficient multigrid method as a program synthesis task allows us to find
novel sequences of multigrid operations, including the combination of different
smoothing and coarse-grid correction steps on each level of the discretization
hierarchy. To prove the feasibility of this approach, we present its
implementation in the form of the Python framework EvoStencils, which is freely
available as open-source software. This implementation comprises all steps from
representing the algorithmic sequence of a multigrid method in the form of a
directed acyclic graph of Python objects to its automatic generation and
optimization using the capabilities of the code generation framework
ExaStencils and the evolutionary computation library DEAP.
