Floor plan generating


Categories: PN3+DC3 | Tutorials

Tagged with: | |

1, Concept

The concept of this work was to research and possibly create some form of automatic generator of most suitible floor plans.
Volume generating, floor plan generating and other AI based generating is highly discussed topic nowadays, not only in architecture (AI picture filters, ChatGPT etc.), and is a subject of research from all parts of the globe. Creating a working generating script thats based on multiple criteria would be too complicated for a seminar work of an architecture student, so apart from the research part i leaned towards using plug-ins.

2, Research

First topic of my research was fundamental information about machine learning process and its main two parts – artificial neural network and data sets. For anyone interested, i have mainly took information from here:
ANN – 3Blue1Brown YT video
DS – Serokell blog

Second topic of my research were kinds of possible floor plan generating. I separated those approches into 3 categories mainly based on my understanding of their functioning.

a, Database only
– From a given criteria (usually room/house boundary; number of bedrooms etc.) browses through database and suggests most fitting floor plans to the user.
Example: Planfinder.xyz

b, Neuro evolution of augmenting topologies – NEAT
– Automated rating and evolution of its own algorithm = evolutionary solving. Works on principle of random adding/removal/change of neurons inside the neural network and evaluating each version on based criteria. Here is sick example on AI playing a snake. This is also category i worked on more deeply with 2 different plug-ins for grasshopper. I will go over them after wrapping last approach.
Examples: Finch3D; Graph2Plan; WallPlan; plug-ins Magnetizing floor plan generator & Marmot

c, Generative adversarial networks – GANs
– Based on picture-to-picture transition, system pix2pix.
Example: ArchiGAN

3, Scripts

I have tried two free-to-download plug-ins for Grasshopper: Magnetizing floor plan generator & Marmot. Both have some negatives and positives and neither is done to the point of giving top notch plan for any given boundary. Both are limited to rectangular boundary and the results are questionable. Still, in my opinion it is a good way to see hundreds of different space layouts in study phase.
I will not go over every single step, since there are short video tutorials that will spread the informations way better.

a, Magnetizing floor plan generator
Plugin download
Research book

Preview of the code

There are 2 physical data needed to run this script – boundary of the area and its entrance as a point. Other things, like rooms, their connection and minimal area, setting of halls and iterations is set up via the code.
Preview of the room instances – rooms are treated as a blobs with visible connection representing their adjecency. You can set up an entrance room, treat it as a hall and minimal room areas. When you set up too many rooms, random ones may not fit into the boundary. Some of the iteration may fit, but there is no way to mark rooms as more important etc.

In the first part of the script you can set up a basic settings – an iteration, max adjecency distance and type of corridors.

Based on this setting the script tries its best to fill those rooms in the given boundary.

Last part of the script is just to show text, lines etc.

b, Marmot
Plugin download

Preview of the code

This script mainly consists of text panels, in which are names of rooms, their connections etc. As the input to the maker you write your desired rooms, connections between those rooms and minimal area of each room.

Then you set up boundary of the floor plan and you can also set up placement of some desired rooms.

In advanced settings you can give weight to different aspects of the parameters like proportions, location and area.

All of that goes into the maker itself. After that its just added visuals to show room names and floor areas.

Thanks to the teachers for help with the work, all the sites with resources and plugin authors for making these. Its a long way to be completely usable in real world, but we are getting in there and i am excited for it.