occupancy — Occupancy & Electricity Profiles

Source:

buem/occupancy/

Purpose

Generate stochastic annual occupancy schedules and realistic hourly electricity-consumption profiles for residential buildings.

OccupancyProfile

File:

occupancy_profile.py

Produces an 8760-row DataFrame with per-hour:

  • n_home — number of persons at home

  • n_active — number awake and active

  • activity — categorical state (not_home / at_home_inactive / at_home_active)

Behaviour:

  • Weekday vs weekend probability tables (e.g. 10 % home at 3 AM weekday, 20 % weekend)

  • Per-person binomial draw: \(\text{persons\_home} \sim \text{Binomial}(n,\, p_{\text{home}}(\text{hour}, \text{day type}))\)

  • Reproducible via a NumPy RNG seed

ElectricityConsumptionProfile

File:

electricity_consumption.py

Implements the Richardson et al. (2010) behavioural appliance model.

For each hour:

  1. Evaluate occupancy-dependent activation probabilities per appliance (cooking, TV, laundry, cleaning, ironing, fridge, background loads).

  2. Modulate by a weekday/weekend × hour-of-day behaviour table.

  3. Stochastically switch appliances on/off.

  4. Weight by rated power (e.g. cooking 3–4 kW, fridge 0.1 kW).

  5. Sum → total electricity load (kWh/h).

Typical output for a four-person dwelling: 0.5–1.5 kW.

Integration

When the API payload does not supply an elecLoad series, cfg_attribute.py auto-generates one via the pipeline:

OccupancyProfileElectricityConsumptionProfileelecLoad series