Presented project can be considered as an exploration of various ways of generating floor plans for public buildings, which was followed by creating a new algorithm for solving that task. Public buildings were chosen as a main target of conducted research because of their complex and non-standardized structure. The aim was to try different previously described approaches, invent completely new techniques and methods, choose the best of them and incorporate them into my own algorithm.
IMPORTANT: After connecting rooms to HouseInstance component sometimes it is needed to press F5 to refresh the component state, since for some reason it is not happening automatically.
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).
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).
Sources for the project can be found here: https://github.com/hellguz/Magnetizing_FloorPlanGenerator