Evolutionary Design

My thesis focused primarily on using evolutionary algorithms for design generation. We used a grammar to create simple programs that would generate coherent shapes as shown in the gifs below. The shapes were created by drawing a line and rotating it around an axis. We either connected the points deterministically or using Delaunay triangulation. It is very easy to generate shapes using meshing algorithms. Here is an example I implemented using brownian motion and Delaunay triangulation.

Once simple shapes could be created, we progressed to generating instances for a design problem. To generate designs that were always connected we used an “etch-a-sketch” approach. These bridge designs were based on a brief given to 3rd year architecture and engineering students. I am currently working on an interactive javascript mesh evolver based on these pattern generation techniques, you can see it here.


We then used this process to generate a population of bridge designs.


A single generation of bridge designs.

For evolution to work each design has to be assigned a “fitness”. We used finite element analysis to structurally analyse the designs. Loads could be simulated on multiple parts of the structure.

A pylon grammar was implemented for the RIBA pylon design competition that used the approach described above. The structures were optimised for three different loading conditions, high wind speeds, heavy ice loading, and a combination of the two.

In a continuation of this work I used a computational fluid dynamics solver (openFOAM) to compute the lift and drag of aircraft models generated using parametric software (openVSP). Vehicle sketch pad is a parametric design tool for aircraft. It allows me to quickly modify existing aircraft to create a population of designs. Each model is then placed in a virtual wind tunnel to compute the lift and drag which allows the algorithm to optimise the designs. Once a final design has been found we can 3D print it and perform validation tests in a real wind tunnel.


Another approach to design generation is to use the physics of the situation to define the model. An example of this is a catenary, a curve formed by the self weight of a chain (or cable) when only supported by its ends. Using the physics engine in blender allows use to generate 3 dimensional vaults based on where the fixed points are and the force of gravity. The roof is defined as a soft-body object and the gravity is reversed to generate the structure.

Using the physics engine can generate forms by simply interacting with other objects in the scene.

By using these methodologies, the computer is actively contributing to the design process and making informed decisions based on the loading and inherent physical properties of the components.