Using Generative Design in Construction Applications

Share this Article

Colleagues discussing design options

Imagine you are planning the interior for an office building. In one scenario, your first step is to define the design parameters by describing the amount of light you want for desks depending on the season, the desired views for conference rooms, and the maximum amount you want to spend for construction. After you define the criteria, your design tools generate all the best possible outcomes with a single analysis and evaluate the alternatives. This all takes place in a fraction of the time that it normally takes you to manually arrive at one or two best guess approximations.

In the other scenario, you sit down and manually calculate how your design parameters impact other aspects of the office building like energy loads and construction costs. You tediously go through the hundreds of location variables (kitchens, bathrooms, desks, or communal space placements) produced by your choices as the design develops. This entire process takes days or weeks as you review the options. How might it change the way you design if, like in the first scenario, your software could help discover the implications of the goals you define instead?

Now think about a typical construction project and shifting your approach to the actual procedure of building, and not just what you’re building, but how it is built. Cost overruns and waste are always the enemies of construction. What if you could mitigate these potential risk factors with better recommendations on materials or by scheduling and sequencing job site work? What is the right strategy for placing precast concrete panels? Or the optimum placement of a crane? A software algorithm can test numerous scenarios for potential solutions to find the best one.

These are the objectives of generative design, a technique that uses computation to augment the designer’s ability to define, explore, and choose alternatives through automation. Generative design is more than a methodology; it embodies many applications and techniques. It will continue to grow more potent and useful with technology advancements such as artificial intelligence and machine learning.

But, at its heart, generative design is about providing practitioners with the ability to quickly explore, optimize, and make informed decisions to complex design problems.

Progression from Traditional to Generative Design

The design technology in the AEC Industry is progressing towards the generative design model. The biggest difference can be seen in the mindset of a designer.


In Traditional Design a designer uses basic techniques like sketching to describe the idea that is inside the mind. For example: “Drawing of a wall with a door in it.” With AutoCAD the designer can apply Computer Aided Drafting.

In Parametric Design the user defines relationships between traditionally drawn or sculpted elements. For example: “This door depends upon this wall and will move with it.”

Contrast this with the traditional CAD environment, where each point, line, text, etc. has no relationship to any other. In the parametric design environment changes to one piece of data creates changes in other pieces of data. Generally, these systems are limited by the ability to make direct relationships, such as a window that depends on a hosted relationship to a wall. In the building industry, Revit can be used for this stage.

With Design Automation the user gets the ability to automate tasks within parametric models, by driving the parameters with automated scripts. For example: “Create a door for every x meter of a wall.”

The geometry and data are outcomes of the automatic execution of a set of rules and can use traditional modelling elements as inputs. This technique is a level of abstraction from parametric modelling where arbitrary pieces of data are related to others. Typically, this can be done with Revit and Dynamo.

In Computational Modelling, the user explicitly describes a process to create a design outcome. For example: “Create a number of doors in the wall and evaluate how many exits per unit length.”

This method is very close to design automation, except for that here we also have the possibility to evaluate the design outcomes. It is a generalized way to create data as well as relationships between data. The kinds of relationships that can be defined are versatile (if-then-else, looping, recursive) and users can create more customized reactions to changes in the system.

With Option Generation, the user explores of variations of computed rules given different starting points for the calculations. For example: “Show me all the valid places a door could be placed on this wall.”

Given a Parametric Model or Computation environment, there are an infinite number of variations you could get by changing and combining inputs. The resulting variations are not distinguished based on one being any better than another. The user is given an opportunity to sort and choose desired variation(s).

With Design Optimization, the user defines explicit goals and a computational or parametric model is automatically explored for states that fit those goals. For example: “Find the valid places where doors on this wall are closest to exits.”

Given a Parametric Model or Computation environment, display the examples of possible states of the model that have certain desirable characteristics.

Ultimately, with Machine Learning (ML), the user states outcomes and the system returns conforming results based on historical data. For example: “Lay out interior doors for a hospital egress.”

Given a desirable set of characteristics, generate a design or a set of designs that fit the description. Instead of starting from a parametric or computational model, ML-based tools use large “learning” data sets where the computer finds patterns that are inferred instead of being explicitly stated.

The products in that area, within the D&M and AEC industries, that Autodesk is providing are illustrated below:


Generative Design as an Autodesk Product Strategy

Generative design is guiding Autodesk’s strategy for creating a better world by encoding professional knowledge. Autodesk’s generative design solutions have three characteristics:

Establish a set of rules that express project design intent and constraints. Display the possible outcomes of rules systems to facilitate decision making. Capture and preserve information for reuse by industry-specific applications.

The application of Autodesk generative design solutions results in higher quality work, greater speed/productivity, and lower costs. While there are a number of products using some combination of these approaches, we’ll talk in more detail about Project Refinery, a beta application that gives users the power to quickly explore and optimize design logic that is encoded in Dynamo.

Rules definition in Refinery comes primarily from Dynamo, a generalized programming environment that allows users to create designs in a step-wise fashion (like a recipe: first do this, then this, etc.) and evaluate them (how big is my result, how far is it from a target geometry, etc.). Project Refinery then executes these algorithms many times to either explore random variations on the base algorithm, systematically exercise all the possible inputs and outputs to the system, or evolve the system by intelligently changing inputs to “find” targeted performance metrics.

Project Refinery also provides another set of features specifically tailored for users to visualize and understand the outputs of the generative systems. Generative systems that have more than one “optimal” goal can product results that are confusing to understand. Refinery displays numerical, graphical, and geometric results to allow for sorting and comparison. Users can choose options that satisfy requirements or aesthetic sensibilities that might not have been defined in the algorithms themselves.

While drawing on paper or use of generalized programming languages or CAD are a perfectly reasonable part of a generative process, Refinery attempts to drive decisions into practice by being directly connected to mainstream building production applications. The more a generative design process for AEC is deeply connected to existing and emerging project delivery toolchains, the more the user can drive project deliver with optimal outcomes. Current beta workflows are part of a Revit delivery process, and the underlying architecture of the application will allow for rapid integration into additional applications in the future (such as FormIt and Civil 3D).

Goals, Generators, Evaluators: A Generative Design Mental Model

While this is not the only way to think about generative design processes, we have found that a concept of “Goals, Generators, and Evaluators” has been a helpful framework. Goals are a statement of Why we are designing something in the first place, the north start ideas we are pursuing. “A room with a connection to the outdoors”, “a storefront that is attractive to passers-by.” Evaluators determine what we will measure our design against to determine if it works. “All occupants should have visual access to the windows”, “More than 75% of pedestrians on this section of street should be able to read the building store signage.” Generators are HOW we are going to go about making possible design solutions, “Iteratively place desks around the room by random UV coordinates”, “Increase size of signage until visible from all angles.”

In the broad sense, a generative design can be simply be the creation and execution of Generators. An example of a simple Generator would be explorations or "optioneering" done with a Dynamo graph with a slider. A user could move a slider back and forth, seeing options and looking for something that feels right.

Generators become most useful when harnessed to Evaluators that are informed by Goals. In the absence of defined Evaluation logic, a designer may generate lots of options and simply sort and examine the results. If you can measure what is important, you can filter out crappy options and start making decisions quickly.

Definition of ‘Generative Design’

A goal-driven approach to design that uses automation to give designers and engineers better insight so they can make faster, more informed design decisions. Your specific design parameters are defined to generate many—even thousands—of potential solutions. You tell the software the results you want. With your guidance it arrives at the optimal design along with the data to prove which design performs best.

Learn more about how Autodesk looks at generative design in the AEC industry.

Generative Design Process


Generative design allows for a more integrated workflow between human and computer, and as a result both are required to undertake a series of steps that allow the process to take place. These steps can be categorized into the following stages: generate, analyze, rank, evolve, explore, integrate.


This is the stage when design options are created or generated by the system, using algorithms and parameters specified by the designer.


The designs generated in the previous step are now measured or analyzed on how well they achieve goals defined by the designer.


Based on the results of the analysis, design options are ordered or ranked.


The process will use the ranking of the design options to figure out in which direction designs should be further developed or evolved.


Generated designs are compared or explored by the designer, inspecting both the geometry and evaluation results.


After choosing a favorite design option, the designer uses or integrates this design into the wider project or design work.

Generative Design in AEC with 'Project Refinery'

‘Project Refinery’ is an Autodesk generative design beta for the architecture, engineering, and construction industry. It gives users the power to quickly explore, evaluate, and optimize their Dynamo designs.

Project Refinery lets you create design options, set goals, and optimize for those goals. When you choose to maximize or minimize designated outputs, Refinery will return the best options. It also allows users to use the power of the Dynamo Package Manager and run custom nodes, including Python nodes. Refinery runs locally on your computer and allows custom code to take part in design option generation.

Refinery will run in Dynamo for Revit or Dynamo Sandbox and includes a node to cache Revit data for use in option generation. Refinery is still a beta project. There are rough edges, but if you would like to try it out and work with us to advance generative design for AEC we would be thrilled.

Refinery uses the NSGA-II optimization algorithm (a type of genetic algorithm), which is a meta-heuristic optimization algorithm for multi-objective optimization. Genetic algorithms are commonly used to generate high-quality solutions to optimization and search problems by relying on bio-inspired operators such as mutation, crossover and selection. A genetic algorithm is a population-based optimization. Population-based approaches maintain and improve multiple candidate solutions, often using population characteristics to guide the search. Each round of the optimization processed in the genetic algorithm is called a generation. So, when you set the generation value to 40, the process of selection, cross over, and mutation happens 40 times for each population of 40 designs. You can read more here. The seed simply says where the algorithm should start. If you keep the seed at "64" and then do another run with the same inputs, you should get the same answer.


More information and beta access:

Types of Studies with Refinery


With this study type you can obtain random input configurations.


If you want to survey the whole design space, you can choose for the “cross-product” option.


With the “Optimize” option you can optimize set of output parameters of a parametric model to improve the performance of your design


“Like this” is meant to apply slight variations to your current input configuration


Optimize in Refinery

1. Within Dynamo for Revit, go to the menu Refinery > Export for Refinery

2. Follow the steps in the dialogue

3. Open Refinery > Launch Refinery

4. Choose “New Study” and pick the title of your script

5. Choose the proper study and parameters

Project Refinery: Interesting Information

Getting Started

The Refinery Primer aims to introduce AEC practitioners of all experience levels to an exciting new approach to design using generative design workflows.

Live Design Clash Verification

This example has been showcased in detail at Autodesk University 2016.


For more information, watch the recording of the class Construction Dynam(o)ite—Explode Productivity with Dynamo.

Tower Crane Positioning


It is important for a contractor to identify the optimal number and location of tower cranes. This helps avoiding conflicts between several cranes. Possible hoisting problems can be detected before the construction gets built. And finally, the contractor saves time and cost by not having an overload of cranes on site.

This script allows you to evaluate construction elements in Revit, based on their weight and distance to a multiple tower crane and delivery truck setup.



The packages that need to be installed before running the script:

Project Refinery

Install from


This package contains the node for the conceptual light analysis.



The analysis of the range and capacity of a tower crane can be analysed in many ways. In this case the analysis is based on a simplified method described in the flowchart below. This method calculates the Lift Status of each element depending on its location relative to the tower crane and truck and its weight.


Dynamo Script Overview

The main inputs of the script are:

  • Building Components: A selected set of Revit elements (floors, walls, structural framing, parts ...), which need to be lifted on the construction site.

  • Lift Capacity Table: A list of values representing the loading capacity of a tower crane depending on the hoisting range.

  • Truck: This is also called the Supply zone. In this example the supply zone is represented by a truck in the Revit model.


The Building Components geometry and properties are stored in a Dynamo Dictionary. During the analysis of the elements, this dictionary is updated. This makes it easier to filter the elements according their Lift Status.

lift status

Site Geometry with DynaMaps

In order to quickly have a 3D geometry of the actual site, you can user the DynaMaps package for Dynamo. That geometry can then be used as an input for the crane positioning script.


All information and step-by-step tutorials to build site geometry from scratch using DynaMaps and importing that geometry as Revit elements can be found here:

Download the class handout to continue.

Working as a Technical Sales Specialist AEC for the Northern European region at Autodesk, Dieter Vermeulen is specialized in the products of the Computational Design and Engineering portfolio. Within that domain he helps their customers to learn more about new and innovative workflows and solution strategies. He is an evangelist and big influencer of the power of generative and computational design in the AEC industry. He has been given numerous presentations about these topics at conferences worldwide.  

Mostafa El Ayoubi is a passionate architect and engineer interested in everything new in the AEC industry. Mostafa is a true believer in data-driven construction and he works on developing/implementing tools and workflows to facilitate design, collaboration, and documenting. He is an active member of the Dynamo community and is the creator and maintainer of the Data Shapes package, which is the top-rated Dynamo package. He started the Data Shapes blog and co-founded the Data Shapes company which provides cutting-edge BIM support, training, tools, and workflows to AEC firms.