This model finds the optimal control routine for heating and cooling a building based on the variable energy cost from the grid.
Control is formulated as a linear programming problem and solved using the PuLP library. The optimal routine is
continuous by default, with max wattage towards heating = 1.0, max cooling = -1.0. System max wattage is defined by
the HVAC.maximum_power
parameter.
The cost of energy can be monetary, or a quantified carbon impact as demonstrated in this paper by Zoltan DeWitt and Matthew Roeschke. Data on your grid's marginal emmissions rate can be found using the WattTime API.
The building temperature update model is based on this open source simple energy model by Tim Tröndle, using the paywalled ISO 13790 standards.
To optimize integer or binary control (only on or off), set RunSim
class int_opt_only
parameter to True, and
adjust window_size
as necessary to account for the slowdown added by integer constraints.
To add new temperature and energy cost forecasts, add CSV to data/
folder.
To run simulation with test data and output plots, run python simulation.py
Run tests with pytest