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).

Expreimentation

Pin It on Pinterest