honeybee_energy.load.people module

Complete definition of people in a simulation, including schedule and load.

class honeybee_energy.load.people.People(identifier, people_per_area, occupancy_schedule, activity_schedule=None, radiant_fraction=0.3, latent_fraction=Autocalculate)[source]

Bases: _LoadBase

A complete definition of people, including schedules and load.

Parameters
  • identifier – Text string for a unique People ID. Must be < 100 characters and not contain any EnergyPlus special characters. This will be used to identify the object across a model and in the exported IDF.

  • people_per_area – A numerical value for the number of people per square meter of floor area.

  • occupancy_schedule – A ScheduleRuleset or ScheduleFixedInterval for the occupancy over the course of the year. The type of this schedule should be Fractional and the fractional values will get multiplied by the people_per_area to yield a complete occupancy profile.

  • activity_schedule – A ScheduleRuleset or ScheduleFixedInterval for the activity of the occupants over the course of the year. The type of this schedule should be ActivityLevel and the values of the schedule equal to the number of Watts given off by an individual person in the room. If None, a default constant schedule with 120 Watts per person will be used, which is typical of awake, adult humans who are seated.

  • radiant_fraction – A number between 0 and 1 for the fraction of the sensible heat given off by people that is radiant (as opposed to convective). (Default: 0.3).

  • latent_fraction – A number between 0 and 1 for the fraction of the heat given off by people that is latent (as opposed to sensible). This input can also be an Autocalculate object, which will automatically estimate the latent fraction based on the occupant’s activity level. (Default: autocalculate).

Properties:
  • identifier

  • display_name

  • people_per_area

  • area_per_person

  • occupancy_schedule

  • activity_schedule

  • radiant_fraction

  • latent_fraction

  • user_data

ToString()

Overwrite .NET ToString.

static average(identifier, peoples, weights=None, timestep_resolution=1)[source]

Get a People object that’s a weighted average between other People objects.

Parameters
  • identifier – Text string for a unique ID for the new averaged People. Must be < 100 characters and not contain any EnergyPlus special characters. This will be used to identify the object across a model and in the exported IDF.

  • peoples – A list of People objects that will be averaged together to make a new People.

  • weights – An optional list of fractional numbers with the same length as the input peoples. These will be used to weight each of the People objects in the resulting average. Note that these weights can sum to less than 1 in which case the average people_per_area will assume 0 for the unaccounted fraction of the weights. If None, the objects will be weighted equally. Default: None.

  • timestep_resolution – An optional integer for the timestep resolution at which the schedules will be averaged. Any schedule details smaller than this timestep will be lost in the averaging process. Default: 1.

diversify(count, occupancy_stdev=20, schedule_offset=1, timestep=1, schedule_indices=None)[source]

Get an array of diversified People derived from this “average” one.

Approximately 2/3 of the schedules in the output objects will be offset from the mean by the input schedule_offset (1/3 ahead and another 1/3 behind).

Parameters
  • count – An positive integer for the number of diversified objects to generate from this mean object.

  • occupancy_stdev – A number between 0 and 100 for the percent of the occupancy people_per_area representing one standard deviation of diversification from the mean. (Default 20 percent).

  • schedule_offset – A positive integer for the number of timesteps at which the occupancy schedule of the resulting objects will be shifted - roughly 1/3 of the objects ahead and another 1/3 behind. (Default: 1).

  • timestep – An integer for the number of timesteps per hour at which the shifting is occurring. This must be a value between 1 and 60, which is evenly divisible by 60. 1 indicates that each step is an hour while 60 indicates that each step is a minute. (Default: 1).

  • schedule_indices – An optional list of integers from 0 to 2 with a length equal to the input count, which will be used to set whether a given schedule is behind (0), ahead (2), or the same (1). This can be used to coordinate schedules across diversified programs. If None a random list of integers will be generated. (Default: None).

duplicate()

Get a copy of this object.

classmethod from_dict(data)[source]

Create a People object from a dictionary.

Note that the dictionary must be a non-abridged version for this classmethod to work.

Parameters

data – A People dictionary in following the format below.

{
"type": 'People',
"identifier": 'Open_Office_People_005_03_02',
"display_name": 'Office People',
"people_per_area": 0.05, # number of people per square meter of floor area
"occupancy_schedule": {}, # ScheduleRuleset/ScheduleFixedInterval dictionary
"activity_schedule": {}, # ScheduleRuleset/ScheduleFixedInterval dictionary
"radiant_fraction": 0.3, # fraction of sensible heat that is radiant
"latent_fraction": 0.2 # fraction of total heat that is latent
}
classmethod from_dict_abridged(data, schedule_dict)[source]

Create a People object from an abridged dictionary.

Parameters
  • data – A PeopleAbridged dictionary in following the format below.

  • schedule_dict – A dictionary with schedule identifiers as keys and honeybee schedule objects as values (either ScheduleRuleset or ScheduleFixedInterval). These will be used to assign the schedules to the People object.

{
"type": "PeopleAbridged",
"identifier": 'Open_Office_People_005_03_02',
"display_name": 'Office People',
"people_per_area": 0.05, # number of people per square meter of floor area
"occupancy_schedule": "Office Occupancy", # Schedule identifier
"activity_schedule": "Office Activity", # Schedule identifier
"radiant_fraction": 0.3, # fraction of sensible heat that is radiant
"latent_fraction": 0.2 # fraction of total heat that is latent
}
classmethod from_idf(idf_string, schedule_dict)[source]

Create an People object from an EnergyPlus IDF text string.

Note that the People idf_string must use the ‘people per zone floor area’ method in order to be successfully imported.

Parameters
  • idf_string – A text string fully describing an EnergyPlus people definition.

  • schedule_dict – A dictionary with schedule identifiers as keys and honeybee schedule objects as values (either ScheduleRuleset or ScheduleFixedInterval). These will be used to assign the schedules to the People object.

Returns

A tuple with four elements

  • people: A People object loaded from the idf_string.

  • zone_identifier: The identifier of the zone to which the People object should be assigned.

lock()
to_dict(abridged=False)[source]

People dictionary representation.

Parameters

abridged – Boolean to note whether the full dictionary describing the object should be returned (False) or just an abridged version (True), which only specifies the identifiers of schedules. Default: False.

to_idf(zone_identifier)[source]

IDF string representation of People object.

Note that this method only outputs a single string for the People object and, to write everything needed to describe the object into an IDF, this object’s occupancy_schedule and activity_schedule must also be written. This is done to give more control over the export process since you typically want to check whether these schedules are used by multiple People objects and write the schedule into the IDF only once.

Parameters

zone_identifier – Text for the zone identifier that the People object is assigned to.

unlock()
property activity_schedule

Get or set a ScheduleRuleset or ScheduleFixedInterval for the occupancy.

property area_per_person

Get or set the number of square meters of floor area per person.

property display_name

Get or set a string for the object name without any character restrictions.

If not set, this will be equal to the identifier.

property identifier

Get or set the text string for object identifier.

property latent_fraction

Get or set the fraction of the heat given off by people that is latent.

property occupancy_schedule

Get or set a ScheduleRuleset or ScheduleFixedInterval for the occupancy.

property people_per_area

Get or set the number of people per square meter of floor area.

property properties

Get properties for extensions.

property radiant_fraction

Get or set the radiant fraction of sensible heat given off by people.

property user_data

Get or set an optional dictionary for additional meta data for this object.

This will be None until it has been set. All keys and values of this dictionary should be of a standard Python type to ensure correct serialization of the object to/from JSON (eg. str, float, int, list, dict)