by Nate Peters & Stanislas Chaillou

Inspired by early-stage prototypes already present in the industry (Flux.io, KPFui, NBBJ site tool, etc), we have designed a script that can, for a given parcel size, and a given program, generate a building to optimize:

  • Distance room to core
  • The surface repartition per floor
  • Its overall massing volume

…while being able to answer to some simple programmatic requirements:

  • Repartition of privacy and public spaces across the building
  • Repartition of the largest program pieces


 Program repartition strategies

Before running any optimization, we need to consider the problem of splitting the program into floor plates. Our program – an excel spreadsheet of a typical hotel program – gives us a define set of rooms and surfaces. On the other hand, the parcel gives us a defined floor plates dimension. The repartition of rooms needs to insure an even amount of surface per floor and a consistent logic of the repartition.


Dynamic packing

Once the rooms have been assigned to floors, a dynamic simulation is run for each floor plate, in which rooms are attracted towards the core, until an equilibrium is found. This aggregation insures each room to have access to the core, as well as it optimizes the layout of each floor plate.

Attraction to core


Scoring methodology

To keep track of the efficiency of the resulting design, and to be able to compare among options, we developed a scoring methodology. Through the following 3 metrics, we try to evaluate how well the successive steps of our process have been performed, in order to then compare different outputs.




Presentation board