Time Reduction Settings¶
PowerGenome can reduce a full 8760-hour year to a smaller set of representative periods — groups of consecutive days that stand in for the full year. This reduces the size of your optimization problem while preserving the statistical properties of demand and variable generation.
Time domain reduction is applied jointly to load profiles and variable generation profiles (wind, solar) using k-means clustering.
Parameters¶
reduce_time_domain¶
Type: bool
Default: false
Set to true to enable time domain reduction. When false (or absent), all 8760 hours are passed to GenX as a single period with weight 8760.
Time reduction only works on data with ≤ 8760 hourly rows. If your data is already shorter (e.g., a previous reduction), the step is skipped automatically.
time_domain_periods¶
Type: int
Required when: reduce_time_domain: true
The number of representative periods (clusters) to select. Each period is a block of time_domain_days_per_period consecutive days.
Common values:
| Value | Description |
|---|---|
| 4 | Seasonal quarters (very coarse) |
| 12 | Monthly-style reduction |
| 52 | Weekly — one week per calendar week |
time_domain_days_per_period¶
Type: int
Required when: reduce_time_domain: true
The number of consecutive days in each representative period. Combined with
time_domain_periods, this defines the total number of hours in your reduced
time series:
$$\text{total hours} = \text{time_domain_periods} \times \text{time_domain_days_per_period} \times 24$$
For a model with unit-commitment constraints, using multiple days per period (e.g., 7) is recommended so that start-up and shut-down decisions span realistic multi-day sequences.
include_peak_day¶
Type: bool
Required when: reduce_time_domain: true
When true, the day with the highest system-wide demand is always included as one of the representative periods, regardless of which day k-means would select. This ensures the optimization model sees the true system peak.
demand_weight_factor¶
Type: int or float
Required when: reduce_time_domain: true
Before k-means clustering, all profiles (load and variable generation) are scaled to the range [0, 1]. Demand profiles are then multiplied by this factor. A value greater than 1 weights demand more heavily than renewable generation when selecting clusters.
1: demand and variable generation weighted equally5: demand contributes 5× more to cluster selection (recommended starting point)
tdr_n_init¶
Type: int
Default: 100
Optional
Number of k-means initializations to run. More initializations reduce the chance of converging to a local minimum, at the cost of longer run time.
Minimal example¶
reduce_time_domain: true
time_domain_periods: 12
time_domain_days_per_period: 7
include_peak_day: true
demand_weight_factor: 5
This creates 12 representative weeks, with the peak demand day guaranteed to appear in one of them.
Output format¶
When time reduction is active, the system/Demand_data.csv output (or Load_data.csv when using the legacy old_genx_format) includes additional
metadata columns that GenX uses to reconstruct the weight of each representative
period:
| Column | Description |
|---|---|
Rep_Periods |
Total number of representative periods |
Timesteps_per_Rep_Period |
Hours per period (days × 24) |
Sub_Weights |
Number of hours from the full year that each period represents |
Time_Index |
Hour index (1 to Rep_Periods × Timesteps_per_Rep_Period) |
Sub_Weights must sum to 8760 across all periods for an annual model.
Choosing parameter values¶
There is no universally correct number of representative periods. Typical guidance:
- 12–52 periods is a common range for capacity expansion. Fewer periods run faster but miss nuance in correlated wind/solar/demand patterns.
- 7-day periods are a good starting point. Shorter periods (1–2 days) can cause the optimizer to ignore multi-day operational constraints.
- Always include the peak day when your model has capacity reserve constraints.
- Check convergence: run with a larger number of periods and verify that model results are stable before reducing further.
Related documentation¶
- Demand and Load Settings: Load profile parameters
- Model Definition: Planning years that determine how many hours are in each period