I’d like to share something that I have been researching lately, namely running agent-based building simulations, which has some potentially interesting applications:
- Analyzing the effects of occupant behaviour on micro-climates (e.g., by operating windows, fans, shading elements, etc.), based on field study data
- Testing custom control mechanisms for HVAC systems
- Evaluating climate-responsive kinetic facades
- Investigating custom forms of building operation
Computing this effectively is facilitated by co-simulation, i.e. being able to stop the simulation at each time step, exchange some data with Grasshopper to compute some response (e.g. an occupant opening a window), which then affects the simulation parameters in the next EnergyPlus time step. As far as I know, this is currently not implemented in Honeybee; agent-based modelling has previously been discussed here, but doesn’t seem to have led to any specific application yet, at least not one that was shared. I’m hoping that my post might revive the subject and spark some interest.
At first, I tried implementing this using the EnergyManagementSystem, which is a function within EnergyPlus that allows you to enter custom code (e.g., through the
additionalStrings input on HB’s
runEnergySimulation component). Since this is really tricky for more complex setups, I have found another workflow that has worked better for me. Unfortunately it is a bit elaborate and currently involves using MATLAB and Ptolemy II:
Here are some tests I have run so far. Window opening behaviour based on a statistical model from field study data:
Same as above, this time showing the amount of solar radiation on the facade:
A simulation of “adaptive occupancy”. In this case of a school building, a virtual environmental sensor network determines at each lesson which are the currently most comfortable classrooms, and shifts classes accordingly. You can see how the presence of classes (the black dots) increases the room temperature; by having spatial redundancies in the building, the algorithm can shift the occupants in space in order to mitigate overheating:
I’m interested to find out if anyone else has been working on similar things. Would be great to exchange ideas! Happy to share some files if anyone is interested.