Genetic Design - Part 1: General concepts

In my second post I'd like to thank my friend and Blogging mentor David Light, who featured this space in his highly respected blog. I guess most of you got here through there, but if you landed directly here I highly recommend having a look at http://autodesk-revit.blogspot.com/, packed with tips, news and tools for the BIM enthusiast.
Enough said as introduction, let's talk about my current after-hours project.

About 2 years ago I went to a conference on Genetic Algorithm applied to Design. In a room full of engineers, I saw some examples of Genetic principles applied to Air Conditioning system planning, lighting design, and some shy approach to layout planning. The tools they used were some Java and C++ applets, lots of spreadsheets with complex scripting and occasionally some diagrams. Despite many interesting things were said, I was left with the feeling that the Architectural Design implementation was one I would have liked to chase, eventually.

If you haven't noticed yet, this is "the brief" of the challenge. The case study is an urban multi-tower development massing. But let me clarify a few principles to describe the aspiration of the research.

View of 20 options overlapping. This information has been generated out of data created at random in Excel, and will inform the following iteration of the design...

- What is Genetic Algorithm?
As you can read in Wikipedia, Genetic Algorithm is a process (generally used to optimize or serch options) that mimics the natural evolution. The goal I am chasing here is a process that will create and refine design options to achieve an "optimum" solution.

- What is the "Evolution" sequence?
The process is based on the "survival of the fittest", which implies that you have to be able to generate options, compare them, rank them and recombine them to offspring the next generation. In the Design field, this is generally done as part of an iterative process, where a few options are created, analized and then reprocessed to achieve a better design. But in times of Digital Architecture and Parametric Design, it would be interesting to leave the process to the machine, and sit back watching your "ideal solution" evolve on the screen.

Unfortunately (or fortunately for all us Designers out there) it's not as simple as that, because:
1) The "natural selection" of the fittest options is extremely difficult to script - as it's generally difficult to establish what makes an option better than the other (after all, Architecture is nor far from Sculpture... right?)
2) Multiple options could be "best" in their own right, presenting the problem of the multiple-variable optimization (or Pareto Optimality after the Economist Vilfredo Pareto who studied it).

On the Pareto Front, all the options are better than the others... which one is "the best"?

Bottom line is that instead of reaching an ideal option, we will have to choose from a set of options that will be optimal. So reduce the problem to numbers and compare them... easy, right?

Extract of the Excel formula to establish if an option is better than another and rank their survival

Back to the massing exercise, my constraint is an irregular site, a target total area and a series of setback conditions that depend on the hight of the building. Standard design approach is to sketch the massing that looks alright (say one tall tower in the centre of the composition, a couple of mid-height elements to the east and a scatter of shorter buildings to the west. It feels right, looks great in the renderings, client signs-off. Then we use our BIM tool of choice to get the areas spot-on, and wait for Scheme Design to realize that the setback condition is not fulfilled... How could we consider the setback, if it depended on the height of the building? All Revit experts out there will point at smart flexible families, like the ones Zack presented here.

I am trying to transform the design to a "genetic code", and then I am using Excel for the math calculations and "genetic manipulation" and Rhino/Grasshopper for the graphic analysis. So far (this project is not functional yet) I have dealt with the random creation of the options, exporting the data from Excel to a text file, getting it into Rhino and generating the shapes.

Create a value at random ("mutate") or search for the average between parents, with a weight for "dominant" or "recessive" genes... and a bit of randomness on top...

Steps to follow include: the intersection study in Rhino (to establish if the buildings are landing on the site or within the setback conditions), Export from Rhino into Excel, and automating the process to be able to iterate overnight (currently the Excel macros are manually triggered, and I get a "confirm you want to override file" dialogue that stops the whole process...). Find below a snapshot of the current Grasshopper definition:

Please let me know if you've heard of or worked in similar challenges, or any comment that adds to the discussion. The information will remain "Under Non Disclosure Agreement".


  1. Interesting work. William. Please take a look at www.opengenerativedesign.com we have a similar approach.

  2. Nice. It might also be worth looking at natural language to formal language mathematics (Gentzen started this last century and there have been many developments of it since).
    The Open University have a research strand on Problem Oriented Engineering looking at how 'value' (qualitative) decisions can be turned into 'process' (quantitative) functions. This might be a better (quicker) route or a more stable basis of measuring success for a generation?