PowerFactorProfile#

class popo.scenarios.PowerFactorProfile(day_mean=0.96, day_swing=0.035, house_sd=0.015, noise_sd=0.008, minimum=0.88, maximum=0.995, peak_hour=19.0)#

Bases: object

Diurnal domestic power-factor variation, breaking the P/Q collinearity.

With every load at a fixed power factor, reactive power is active power times a constant, so a joint P/Q/V target carries only one real degree of freedom. Domestic aggregate power factor instead moves through the day with the appliance mix: motor-dominated overnight (refrigeration, circulation pumps, standby) and more resistive through the evening peak (cooking, lighting, showers).

Variables:
  • day_mean – Daily mean aggregate power factor.

  • day_swing – Peak-to-peak diurnal variation.

  • house_sd – Between-customer spread, drawn once per household.

  • noise_sd – Interval-to-interval variation.

  • minimum – Lower clip.

  • maximum – Upper clip.

  • peak_hour – Hour of day, in [0, 24), at which power factor peaks.

draw(horizon, rng, interval_hours=0.5)#

Power factor for every interval of one household’s profile.

Parameters:
  • horizon (int) – Number of intervals to generate.

  • rng (Generator) – Seeded generator; the per-household offset and interval noise are both drawn from it.

  • interval_hours (float) – Interval length in hours, for the hour-of-day calculation.

Return type:

ndarray

Returns:

Power factor, one value per interval, clipped to [minimum, maximum].