Presented project can be considered as an exploration of various ways of generating floor plans for public
buildings. Public buildings were chosen because of their complex and non-standardized structure. The aim was to
try different approaches, choose the best methods and incorporate them into my own algorithm.
Project Team:
Egor Gavrilov (Author), Reinhard König (Supervisor), Sven Schneider (Supervisor), Martin Dennemark (Supervisor)
Introduction
For architects as well as developers and urban planners working on the floor plans or estimating the shape and dimensions of large buildings is always a challenge. This task requires some knowledge and what is more important – even with understanding of the process it is a very time-consuming task. One should take into consideration the arrangement of all rooms as well as adjacencies and connections of main spaces. Generally, for every different shape or position of the building’s footprint the whole new room structure should be created.
The statement was put on as a starting point: Each of the rooms in a building is somehow accessible from any other room. It means that the whole communication structure is interlinked and thus forms the core. It could be said that the first step of the generation would be developing an evacuation plan, which can later be converted into more intelligible communication network.
Every room is extended by a corridor, which goes along one, two or four of its sides. Rooms are placed one-by-one in such a way, that every placed room should be attached to the main corridor structure with its own corridor. Additionally, every room should be adjacent with all required rooms. This process continues until there is no suitable space left for the next room. After that the new iteration starts and a new variant is generated. Simultaneously previously computed solutions are developed with the help of quasi-evolutionary algorithm. Eventually, the generator produces a huge number of solutions and then the best one is chosen, according to the evaluation function (generally number of the rooms placed or the total area of the rooms placed provide the most comprehensible evaluation results).
Generation Algorithm
// PREPARE INPUT
- rotate boundary
- sort rooms by their connectivity
- find first room
// ITERATION 1
- Place 1st room
- Find the room that is connected with 1st room -> place it
- Find the room that is most interconnected with currently placed rooms -> place it
- If the room can’t be placed -> stop iteration and start over
- Generate couple of solutions in this way -> choose 5 best of them and remove others
// ITERATION N
New iteration: improve previous solutions and generate new ones:
- If (iteration % 3 == 0) -> Take all previous solutions, remove last 1-5 rooms and try to place them differently again.
- If possible to place more rooms than originally, then replace old solution with this one.
- If (iteration % 3 != 0) -> develop new solution
// END OF ITERATIONS
- Generate couple of solutions in this way -> choose 5 best of them and remove others
- Choose the best solution and generate output from it
- If needed, remove dead ends and convert halls to corridors
User interface
Ease of use was considered as a crucial feature since the beginning of a project. Therefore, a simple solution for managing a room program of a house was created for the grasshopper environment. It enables user to set basic parameters, such as room name, area, room connections, entrance location, type of space (room/hall).
Tutorial Videos please!
At the top of this post, there is a video and some .gh files. Have you looked at them?
Yes I did! By the way, there is one problem in this program, when I tried generating the example file. The texts doesn’t appear at all. What do you think is the problem?
Thank you !!!! You’re a genius
Hello
i use magnetizing but it dosnt work. Magnetizigroom-ES get an error. it says:( index was out of range. must be non-negative and less than the size of the collection.) but what`s the meaning it. Iteration or maxadjdistance
hie
trying to work on Magnetizing Floor Plan Generator, please provide tutorial videos. not been able to understand its components.
Hi ,
Could anybody help me in opening the example file? I am trying to open “Rhino MDG example file” provided by the author. I receive an error regarding not having these plugins: Heteroptera 0.4.9.3 , Human 1.1.0 and EleFront 0.1.0.0
These versions of the plugins do not exist. Anyway I installed the latest versions and still get the same error….Any idea?
Hi Shahrzad!
Sorry that it took me so long to answer you. If you still have the problem you could write me on my e-mail hellguz@gmail.com. Moreover, you could try new version which is available on Food4Rhino (https://www.food4rhino.com/app/magnetizing-floor-plan-generator). There in comments I also posted a super-alpha-beta new version, where I tried to fix some of the known bugs. Unfortunately I have not so much time now to fix everything, but I’m always open for your feedback and can help you with your particular troubles!
PS. The listed plugins are used only for display purposes, so you could easily use MagnetizingFPG without these plugings, you’ll just need to manage how the output-structure is displayed on your own, though it’s not so hard to do.
Hi Egor, I am trying to download Magnetizing_FPG_2 but the .gha file downloaded from dropbox, copied into Grasshopper’ Component folder doesn’t work (noone component appear on grasshopper menu).
I am matching the same probem with DecodingSpaces, which isn’t more on Food4Rhino.
Could Magnetizing work without decoding space?
Can you help me finding out a solution?
Thanks in advance,
David