Spaces:
Running
Running
File size: 5,414 Bytes
93ed35a | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 | <!--
HF-spec model card (https://huggingface.co/docs/hub/model-cards).
Populated by /write-modelcard from PROJECT_STATE.md + W&B run + eval results.
The YAML block at the top is what HF Spaces / Hub renders as searchable
metadata. Keep it accurate.
-->
---
language: [en]
license: mit
library_name: pytorch
tags:
- diffusion
- scenario-generation
- power-systems
- renewable-energy
- physics-constrained
datasets:
- aeso-2016-2025
- era5-alberta
metrics:
- scenario-feasibility
- wasserstein-1
model-index:
- name: pc-ddpm-alberta
results:
- task:
type: scenario-generation
name: 24-hour wind/solar/load joint scenario generation
dataset:
name: AESO + ERA5 Alberta
type: tabular-time-series
metrics:
- type: scenario-feasibility-operational
value: TBD (filled by /write-modelcard)
- type: scenario-feasibility-strict-ansi
value: TBD
- type: wasserstein-1-load
value: TBD
---
# Model Card for pc-ddpm-alberta
PC-DDPM is a physics-constrained denoising diffusion probabilistic model that generates 24-hour joint scenarios of wind generation, solar generation, and load for the Alberta electricity grid. A frozen GraphSAGE surrogate provides differentiable AC power flow voltage gradients during training; a ReLU voltage-violation penalty on a three-phase λ_phys annealing schedule drives generated scenarios toward AC-feasible operating points. Trained on 9 years of real AESO observations and evaluated on the IEEE 118-bus proxy network scaled to Alberta loads.
## Model Details
- **Developed by**: jbobym (single-author portfolio project)
- **Model type**: Generative — diffusion (DDPM)
- **Architecture**: 1D temporal U-Net for noise prediction; frozen GraphSAGE AC power flow surrogate (3-layer mean aggregator) provides physics gradients during training only
- **Language(s)**: N/A (tabular time series)
- **License**: MIT (code); AESO Open Data + ERA5 CC-BY-4.0 (data)
- **Trained from**: scratch
- **W&B run backing this card**: TBD (filled by /write-modelcard)
## Uses
### Direct use
Operational planning for grid operators and system planners — reserve sizing, contingency analysis, and stress-testing the transmission network against renewable variability. Generates ensembles of plausible 24-hour wind/solar/load joint trajectories that respect AC power flow on the IEEE 118-bus proxy network scaled to Alberta loads.
### Downstream use
[If applicable: how this model could feed into a larger system or be
fine-tuned for related tasks.]
### Out-of-scope use
- **Do NOT use this for**: real-time control loops, dispatch decisions, or any sub-hourly intervals — the model generates hourly trajectories only.
- **Do NOT use this for**: balancing authorities outside Alberta without retraining — the model is conditioned on AESO-specific generation and load patterns.
- **Do NOT use this for**: production deployment on the actual AESO network — we evaluate on the IEEE 118-bus proxy because real AESO topology is non-public; results may not transfer.
- **Do NOT use this for**: thermal-feasibility claims — we evaluate voltage bounds only; line thermal limits are not exercised at Alberta loadings on this proxy network.
## Bias, Risks, and Limitations
[Two to four paragraphs of honest limitations. The kinds of failures
matter more than the rates. If your model underperforms on a specific
demographic, regime, or slice, name it.]
### Recommendations
[How a careful user should handle the limitations. Monitoring, fallback
strategies, retraining cadence.]
## How to Get Started
```python
from your_project.modeling.predict import load_model, predict
model = load_model()
y = predict(model, x)
```
Full reproducibility instructions: [README.md](README.md).
## Training Details
### Training Data
[What data, how much, splits, license, preprocessing. Cross-link to
`eda/data_profile.md` for the full schema and gotchas.]
### Training Procedure
- **Compute**: [HARDWARE]
- **Optimizer**: [OPTIMIZER + hyperparams]
- **Batch size**: [BS]
- **Epochs**: [N]
- **Wall time**: [TRAIN TIME]
- **Seed**: 42 (in `src/pc_ddpm_alberta/config.py`)
## Evaluation
### Testing Data, Factors & Metrics
[How was evaluation set selected? What slices were measured?]
### Results
[Headline metrics table — same as README's, but with full precision and
extra slices. Cross-link to `/eval-report` output if you have a deeper
analysis doc.]
| Metric | Value | 95% CI | Notes |
|---|---|---|---|
| [METRIC] | — | — | — |
### Per-slice performance
[Table of metrics by slice (season, user segment, etc.). The point
isn't averages — it's where the model behaves differently.]
## Environmental Impact
- **Hardware type**: [GPU MODEL]
- **Hours used**: [TRAIN HOURS]
- **Cloud provider** (if applicable): [PROVIDER]
- **Carbon emitted** (kgCO2eq): [ESTIMATE — use ml-co2-impact.com or similar]
## Technical Specifications
### Model architecture and objective
[More detail than the summary. Equations welcome here.]
### Compute Infrastructure
#### Hardware
[Hardware spec.]
#### Software
[Framework versions, CUDA version, any relevant libs.]
## Citation
```
[CITATION BLOCK — populated by /init-project]
```
## Model Card Authors
[YOUR NAME]
## Model Card Contact
[CONTACT — email, LinkedIn, or repo issues]
|