Designing the Shape of a Building Using an Evolutionary Problem Solver
While the computer plays a large role in the workflow of many architecture firms, there are still aspects of it waiting to be developed and utilized. Evolutionary problem solvers are one of these such opportunities, and with this article I hope to better document how they can be used to add a certain level of objectivity to the design process (specifically form-making).
I’ll start with a fairly simple script I used to optimize a building form based on annual solar radiation.
This project will be located in Hamburg Germany, and based off of design guidelines from Climate Consultant we can safely say that heating the building is going to make up a significant portion of its energy usage; the hypothesis is that by rotating the floor plates of the building we will be able to make a dent in the heating costs. We’ll use the Ladybug and Honeybee plugins for Grasshopper to calculate solar radiation and Galapagos to optimize the orientation of the floor plates.
For those that would like to follow along, the grasshopper script and the rhino file can be found here and here. This file relies heavily on the Ladybug and Honeybee plugins, and when you go to open it you’ll need to have a weather file (.epw) for it to be able to run (you can find one here).
The seven boundary representation elements in the script (the components with an image of a tube on them) are each set to a single floor plate, and the sliders allow the plates to rotate 15 degrees each direction from zero, but to begin with we’ll set them all to 0. This gives us a typical stacked floor plate configuration that we can use as a baseline for total solar radiation. I chose to allow Galapagos control over the orientation of the floor plates because rotating would not affect the total square footage, but you could easily switch to any other transformation like moving or scaling. You can see the floor plates we’ll be rotating in green above; everything else in red is fed into the solar radiation component as context. The shape of these floor plates were designed by hand to be able to accommodate the square footage required by each of the functions found in our building. It should be possible with a bit of clever scripting to allow Galapagos to actually shape the floor plates based on the required light levels or temperature characteristics of the programs on their respective floors; but that’s an exercise for a different article.
After running the analysis we get a total radiation of 2.2212 x 10⁶ kWh/m²/year. Using this number as a baseline, we will be able to evaluate just how much of an improvement the evolutionary problem solver makes.
Now that the code is set up and there is a baseline to compare against, we can start up Galapagos. Double-clicking on the component in Grasshopper opens up the window seen above, allowing you to adjust different aspects of the solvers.
David Rutten (the guy who made Grasshopper and Galapagos) does a better job explaining the settings than I could, so if you’re interested I would highly recommend checking out his blog here. For this exercise we can leave the evolutionary solver settings at their defaults and just make sure that the fitness is set to maximize, because we want to maximize the solar radiation on the floor plates. After that all that is left is to click on the solvers tab and hit start.
During the first generation the solver essentially plugs random values into the sliders it has control of, notes the resulting value we told it to maximize, and then repeats this process many more times. At the end of this generation, the result is a collection of fitness values that can be compared to one another to see which combination of slider values are giving the highest total solar radiation value. From here the solver starts again with new slider values, but now it has a basis for selecting the values assigned to the sliders. A more in depth explanation of what exactly is going on can be found here.
By looking at the genomes (the bottom middle and right charts, found above) we can see the solver has come to a single type of solution, since they all look similar. Because the top chart has leveled off, it is unlikely that letting Galapagos continue to run will get us a significantly better solution.
Now by reinstating the optimal solution (the genome at the top of the list) the amount of solar radiation on the floor plates comes to 2.5987 x 10⁶ kWh/m²/year; a 14.53% increase over the baseline.
Now, by looking at this model we can hypothesize what led to this being the optimal orientation. It seems that larger ceiling heights, which allow for the sun to shine further into the space are what caused this to be the optimal solution. However, this begs the question why this orientation and not its opposite? That is easy enough to analyze, and if we get a similar result then we can be fairly certain that the depth light is allowed to penetrate is the aspect in our design we want to maximize.
With the floor plate orientations reversed, the solar radiation per year is now 2.5781 x 10⁶ kWh/m²/year, only a 0.793% decrease from the optimal configuration.
By using Galapagos in conjunction with Ladybug and Honeybee, we have arrived at the closest thing possible to an objectively correct form, based off of the parameters that were chosen at the start. To turn this into a full-fledged building you would still need to adjust certain aspects of the floor plates to accommodate circulation and mechanical elements, but looking forward those aspects could be translated into script and weighted against other parameters as well, pushing the creative aspect of the architect’s job into the selection and weighting of parameters, and allowing the computer to go through iterations, objectively arriving at the best possible solution for a building.