Let's Face it. Connecting nodes sucks.
I remember back in college I foolishly decided to dive into a generative design studio. I set out to use Grasshopper for the first time. It was magical. I created a point with three inputs, a second point with three more inputs, and then I connected the two points with a line node. The total effort? 15 nodes, 1 line, 30 minutes, three online tutorials, and one tall coffee.
Given this introduction to visual scripting, I had in the back of my mind that mass adoption would take decades because the barrier to entry was so high. Drawing a line on paper is easy. Drawing a line in CAD requires you to type "line." Drawing a line in Grasshopper requires a 30-minute tutorial.
Introduction to Algorithms
Hello. My name is Clifton Harness. I am a CEO. I have a B.Arch from The University of Texas (Hook 'Em) and I worked in Real Estate Development for two years. I made the conscious decision to quit my job — a fiscally irresponsible one — to do a software startup. TestFit was founded to help architects and developers get to the highest-and-best use for real estate (nearly) instantaneously. In this post I will describe four algorithms that we built, and how they stack up against Design Script (Dynamo).
What is an algorithm? Easy. It's a list of steps to follow. You do them all the time, every day. Here's the algorithm for not waking up:
- Realize sleepy time is now over
- Open Eyes
- Heavy sigh
- Roll over
- Close Eyes
- Fall back asleep /* Stay in this loop */
An Algorithm for the Placing of Fire Walls
This one was extremely difficult for me to put into words, but my partner came up with an amazing solution. We wrote some C code to do this instantaneously. Some basic rules:
- Buildings should have an adjustable maximum size
- Minimize the number of buildings
- Don't place firewalls in corners
With this code, I will never draw another polyline. Ever.
An Algorithm for Placing Staircases
All we need is some rules to follow.
- Stairs should be placed within 50 feet of a dead end corridor
- Stairs should be placed at least every 250 feet from one another
- Place at least one stair per building area
- Place a stair in the corners of the garage
An Algorithm for the Placing of Units
This one was much harder. The basic premise is to course units perfectly given the shape of the building and the size of building mass you are attempting to fill. Units have criteria on widths, depths, size, and glazing requirements.
An Algorithm of Many Algorithms
When we take these three algorithms and have them work together, we have a useful test-fit solution for multifamily buildings. I skipped a lot of detail — that is our intellectual property — but gave enough for you to get a sense of what is actually going on under the hood.
The Future of Generative Design
Point solutions for specific typologies and morphologies written in custom code will knock Generative Design out of the park. We did 120 iterations on a site and came back with a fat stack of data to analyze. Trace paper cannot compare. The problem is that most generative platforms don't constrain the geometry enough for the result to be worth anything. With TestFit, we get to the point where the geometry is constrained enough for generative design to make sense:
- Adding additional fire stairs when buildings get too big
- Adding additional elevators when buildings get too tall
- Growing parking when units become too numerous
- Regulatory constraints (max FAR, max lot coverage, max height)
Without a proper constraint engine that encompasses almost everything, the goals to achieve are useless. We are building that constraint engine, right now, and for us it starts with TestFit.
Side note: we started our journey branded as Residential Engine, and are in the process of changing names to TestFit.