Generative design, machine learning, algorithm, neural network—these terms flood social media and technical forums. But don't worry—there is no need to hold a degree in computer science or to work on the most innovative projects in order to optimize your workflows using Dynamo software and Generative Design in Revit software. This article will show you how to take your automations to the next level, where you set the rules and select the end solution among the fittest results. We will review the key concepts that you need to understand to successfully include generative design in your daily workflows. We will show applications ready to use or adapt to your needs.
Why do we call this a guide for non-geeks? First, we haven’t used any Python script in our samples, nor third party packages, so you can run the studies with the Dynamo nodes out of the box. We use some code blocks with DesignScript, but simply because we are somewhat lazy, not because you can’t do it with Dynamo nodes. Finally, we provide an easy-to-follow template so you will quickly understand the graphs provided.
An algorithm is a set of mathematical instructions or rules that, especially if given to a computer, will help to calculate an answer to a problem. Algorithms are the base building block of any computer program.
Generative design is a process that uses iteration to refine the potential solutions to a problem against certain metrics and constraints. Generative design is a collaborative design methodology where designers and computers work together to find optimal solutions.
Machine learning comprises computer algorithms that improve automatically through experience. With machine learning algorithms, the programmer doesn’t set the rules and criteria. Based on past data and experience the algorithm can identify trends and predict results.
The generative design workflow starts with gathering the data about the problem to solve. The result is like the problem DNA: it contains the essential traits used to define a surrogate model to explore the design space. In the generate phase, the "recipe" to create a potential solution to the problem is defined—in other words, an algorithm that transforms inputs and variables into a candidate solution. At the beginning, a number of candidates are generated randomly.
Each candidate solution is then evaluated against a set of criteria or objectives so that can be scored and ranked against the others. The generative design enters in a cycle in which the genetic algorithm guides the exploration of the design space. At each cycle, it collects information about the performance of the candidates and over time it will refine the quality of the proposed solutions.
At the end of the study, it is possible to navigate the results to gather a better insight into the problem, uncovering the correlation between inputs and outputs to select the combinations that produced the more interesting results.
The surrogate model can then be used as a starting point to further the detailing of the selected solution.
The surrogate model is an important part of the generative design workflow. In fact, after a careful analysis you might even change your point of view with regard to what kind of objects you need to deal with. This happens quite often in real-world applications of generative design. The surrogate model is an abstract representation of a real problem, a simplification if you will, and as such it helps focusing on the key features.
This allows you to turn down the “volume” of the other characteristics of the problem at hand, it helps in clarifying the relationships between the parts, and it highlights inner hierarchies that otherwise might not be immediately visible.
This is also a great support for visualization and effective communication of the results of a generative design study.
At the end of this process, the other characteristics of the problem are still there, and it is possible to take them into account using critical thinking as a separate exercise when it is time to select the solutions, or integrate them one by one and refine the computational strategies to create more comprehensive studies.
Generative Design in Revit
To use Generative Design in Revit software, we need to first create the logic in a Dynamo graph and then export it with its dependencies for generative design. If there are any problems, the tool will report the corrective actions to take. During the export it is possible to add a description and a thumbnail to clearly identify the study and provide some high-level documentation.
From the Revit user interface, under Manage, it is possible to launch generative design and create a new study. A list of the available studies will appear, and selecting one of them will open the setup window from which it is possible to launch the study.
From Revit it is also possible to directly explore the outcomes of previously run studies. From there it is possible to navigate the results and select the most appropriate to further the detail sending the results back to Revit.
Preparing Dynamo Graphs for Generative Design
The logic to generate options in generative design for Revit needs to be defined in a Dynamo graph. There are some requirements for prepping up a graph for generative design.
The inputs and variables can only be assigned to a number or integer slider, Boolean or Revit selection nodes.
Also, these nodes need to have the 'is input' property checked. The input nodes must have a unique name.
On the other hand, only watch nodes with a number variable can be assigned to outputs and it is required to check the property 'is output.' Similarly, to the inputs, the nodes must be renamed. It is recommended to indicate in the new name if the value should be maximized or minimized in the optimization.
The generation of options is executed only with Dynamo code, so no Revit commands would execute. So that, to work with information from the Revit model, we need to serialize the data, meaning store, using the Data.Remember node.
The creation or modification of Revit elements once an option is selected must also be built in the same Dynamo graph. When clicking 'Create in Revit,' the node Data.Gate will change to Open and the downstream nodes will execute.
To display geometry in the generative design dialog, it needs to be created with the Dynamo graph. It is recommended to color code the resulting geometry, so it is visually easier to compare the options.
In the following section we introduced a list of common scenarios for which it is possible to apply a generative design workflow to find optimal solutions.
To create abstract schemas of the processes, we adopted the Business Process Modeling Notation (BPMN 2.0) with the free online platform Cawemo.com.
As a convention, we adopted the following syntax to capture the key components of the process:
Inputs—Parameters that the designer can change but that are fixed for the duration of the study:
Variables—What parameters are considered as part of the design space to explore with generative design, specifying the ranges and the step and how they are affecting the elements in the model:
Generate—A high-level description of what constitutes a surrogate model, used to validate an option with the necessary steps to create a candidate solution.
Evaluate—A collection of objectives used to measure as proxies for the fitness/quality of the candidate options, specifying for each one if they should be minimized (minus sign) or maximized (plus sign):
Application One: Choose an Apartment
In this example, we bring a real-life multi-objective optimization to cover the basic principle of the workflow and introduce the generative design technology.
The goal is to find the option (apartment) from a list that has the most favorable combination of price, area, number of rooms, management costs, energy costs, most recent year of construction, on an intermediate level, with a lift and possibly with furniture.
To finalize the selection there is, of course, the need to examine the pictures, visit the apartment, evaluate the surroundings, etc. These qualitative aspects of the selection are not part of the surrogate model, but they have a significant importance during the selection phase.
Ideally, one would have access to the whole data set of a real estate agency website but, for this example, the search has been limited to only 50 apartments, the characteristics of which have been stored in a JSON file catalog. Each apartment in the catalog has the same kind of information and the goal is to search for the best option based on the objectives such as:
Number of rooms [+]
Year of construction [+]
Intermediate level between floors 2 and 6 [+]
The only variable is the index of the apartment in the catalog. The following diagram represents the logic used (link).
It is possible to use a similar approach to the one presented here when the design space requires to select options from a catalog or from a finite list of items such as:
Application Two: How to Park Your Car
This application is trying to solve a container-containment problem. The goal it to optimize the position of the car inside a parking bay so the driver ́s door can open, the vehicle is inside the designated area, and there are no clashes.
To generate options, the inputs are the car dimensions, the parking bay shape and size taken from the model, and the environment constraints: obstacles (walls, columns, etc.) and neighboring parking bays, if any. Also, there is an input to introduce a buffer distance from the obstacles to the object, a car in this example, as it is unrealistic and a bad practice to park the car exactly touching the obstacles.
The generation will vary the opening angle of the door from a minimum of 30 degrees to a maximum of 90 degrees. The placement of the car geometry will depend on an origin point that will vary from a grid of points created inside the parking bay. This grid will vary in density for the different options. The last variable is the rotation of the car with regards to the main directions of the parking bay.
All the options will be evaluated against three metrics:
Intersection with neighbors, to be minimized
Clashes with obstacles, to be minimized
Area inside parking bay, to be maximized
The process diagram below (link) outlines all the tasks in the optimization:
With the inputs for the car size and shape, a surface is created in Dynamo. After retrieving the park car lines, obstacles and neighboring bays lines from Revit, surfaces are created for all those elements taking into account the offset introduced. All the data extracted from Revit is stored in a Data.Remember node.
The generation of options starts by creating a grid of points in the main directions of the parking bay surface with a variable density. Then, the car geometry is transformed using a Coordinates System with origin in one of the points of the grid (also a variable) and rotated a certain angle from the main directions of the bay.
The options are evaluated against the three objectives and colored following this convention: green, for the car surface inside the parking bay; red, for the car area clashing with obstacles; and, orange, for the area on top of the neighboring parking bays.
The problem in this example can be summarized as fitting an element inside a space with certain constraints and setbacks. Similar applications are:
Building outline in plot
Tree planting in urban environments
Application Three: Shapes Arrangement
This application is an exercise to try and understand what creativity really is and to underline once more that generative design is not replacing the human in the driver's seat; quite the contrary actually: it is a valuable assistant that enhances the search process following our instructions and preferences.
Investigate the use of generative design to find an arrangement of any number of shapes with any number of sides so that there are no overlaps (or at least to minimize when this happens), filter the most compact candidates and let the human select the combinations that are more aesthetically pleasing.
The assumption is to start from some Revit floor tile families and store their geometries in the Dynamo graph. To generate a candidate solution, each shape is processed in sequence, the order of which should vary to explore the possibilities of the design space.
For each shape, a variable index and parameter determine which side and point are used to orient the shape and, a second, independent, parameter determines where to anchor the following shape in the sequence.
To evaluate if a candidate is a good option it is possible to minimize the overlaps (it has to be expected to have a lot of overlapping shapes at the beginning of the study, but the candidate solutions should improve over time).
To have a compact pattern, it is possible to minimize the size of the encompassing bounding box, the perimeter and the ratio between the perimeter and the footprint area of the configuration.
The selection process can be supported by the usage of the data in the outputs, but it is obvious that the human has the final saying with regards to which candidate is most pleasing to the eye based on personal taste.
The diagram (link) is capturing the high-level logic defined above. There is a selection of Revit elements and they get stored in the Dynamo graph. For the generate section the upper bound of some of the variable depends on the number of inputs and the number of sides, this will require some degree of finesse in the implementation to make sure it is applicable to any number of inputs and shapes. To rotate the shapes, it is enough to transform their geometries using coordinate systems.
To measure the performance in the objectives it seems a good idea to join all the transformed shapes into a single solid and extract all the properties to evaluate the fitness of the candidate solution.
Finally, the visualization of these components during the study is critical to determine the subjective feedback of the user.
The same approach that arranges rigid shapes close to each other can be applied at different scales of design for creating:
Application Four: Floor Tile Pattern
Reducing waste on site is one of the priorities to achieve a greener construction industry. By optimizing paving pattern and location, less time and material will be required.
Taking into account optimization of material in early design stages, will increase the accuracy of the bills of materials and estimations.
The inputs for this optimization are the paving unit dimensions and the constraints for the pattern: distance between tiles or joint size, the overlap between consequent rows and the minimum cut size allowed. Also, it is required to set up the shape and dimensions of the floor to be paved.
The generation of options will vary the angle of the tiles in relation to the main directions of the floor surface and the origin of the first tile. This origin refers to the point along the edge that will be at the corner of the floor.
All the options will be evaluated against three objectives:
Total number of tiles used, to be minimized
Percentage of completed tiles from the total, to be maximized
Percentage of tiles cut a length smaller than the minimum cut allowed
The process diagram below (link) shows all the steps taken in the optimization.
Given the size and shape of the tile, a surface is created in Dynamo. From Revit, the room is selected, and its faces are extracted in Dynamo in order to find the floor surface. All data from Revit is stored in a Data.Remember node.
Want more? Download the full class handout to read on.
Raquel studied for her master’s degree in Architecture at the Technical University of Madrid. She then worked as an architect in a small practice in Madrid, mostly focusing on residential and conservation architecture. In 2011 she won a runner-up award in the Europan 11 competition for young European architects. Her interest in sustainable urban design, accessibility, and public realm design led her to a master’s degree in Landscape Architecture and Gardening. She improved her planting design skills working with the curator of the Royal Botanic Garden in Madrid. In 2013 Raquel moved to London and worked on several sports, public realm, resort, and masterplanning projects including the Al Wakrah Stadium in Qatar, Four Seasons Montenegro, and North West Cambridge development. Raquel’s interest lies in the relationship between Architecture, Urbanism, and Landscape, and how the three disciplines must work together to design better and more livable green cities.
Paolo Emilio Serra is a construction engineer by trade, and he worked as BIM manager in an architectural firm for five years in Milan, Italy. Since 2014 he has worked as BIM implementation consultant for Autodesk. With Autodesk he has been delivering customer success services to engineering companies, supporting BIM workflows and digital transformation in their business processes. Paolo’s main areas of focus are automation, generative design, and integration between the AEC and ENI industries. Paolo is an architecture enthusiast and a Revit user since 2006. He owns the blog Punto Revit.
Generative design, machine learning, algorithm, neural network—these terms flood social media and technical forums. But are you familiar with these concepts? If the answer is no, welcome to the first generative-design class for non-geeks! There is no need to hold a degree in computer science or to work on the most-innovative projects; everybody can optimize their workflows using Dynamo software and Generative Design in Revit software. In this class you will learn how to take your automations to...