Contextual Robust State Estimation in Distribution Systems with Real-Time Unobservability and Scarce Data
This repository contains the complete case-study data used in the research indicated in the title.
| Folder | System | Buses | Lines | Load factors δ |
Configuration |
|---|---|---|---|---|---|
case38si/ |
IEEE 38-bus radial distribution network | 38 | 37 | 0.5, 0.8, 1.0, 1.2 | radial, 32 load nodes, 5 zero-injection buses |
case123/ |
Modified IEEE 123-bus radial distribution network | 114 | 113 | 0.5, 0.8, 1.0, 1.2 | radial, 85 load nodes, 28 zero-injection buses |
case30/ |
IEEE 30-bus meshed active distribution network | 30 | 41 | 0.1 | meshed, 21 load nodes, 8 zero-injection buses |
Each (network, δ) pair is one time series of 1441 consecutive minute-resolution
instances, obtained by simulating the network in Pandapower
on real residential load profiles (day 100 of the Pecan Street
dataset, which already include behind-the-meter generation, predominantly rooftop PV).
The profiles are scaled to match the nominal loading of each network and then multiplied
by the load factor δ; power factors are held fixed at their nominal values.
For the two radial networks the operating points come from a power flow. For the meshed 30-bus system with distributed generation they come from an optimal power flow on the same demand series.
<network>/
├── delta_<δ>_x_true.csv true system states
├── delta_<δ>_z.csv noisy measurements
└── network/
├── branches.csv line -> (fbus, tbus) incidence, 0-indexed
├── ybus.csv bus admittance matrix, sparse (nonzeros only)
├── yf.csv from-side branch admittance matrix, sparse
└── measurements.csv role of every measurement in each SCADA configuration
voltage_statistics.csv mean and minimum nodal voltage per network and δ
benchmark_generators.md configuration of the GPR and DNN benchmark generators
One row per instance (instance is the index, 0 … 1440), all quantities in per unit
on the network's own base:
V0 … V{nb-1}— nodal voltage magnitudes, p.u.a0 … a{nb-1}— nodal voltage angles, degrees
Column order is V0 … V{nb-1}, then the non-reference angles in bus order, then the
reference-bus angle last (identically zero: a0 for the 38- and 30-bus networks,
a113 for the 123-bus one).
The same 1441 instances, containing every measurement channel; which of them an
estimator may read is a separate question, answered by network/measurements.csv.
P0 … P{nb-1},Q0 … Q{nb-1}— nodal active/reactive power injections, p.u.Pf0 … Pf{nl-1},Qf0 … Qf{nl-1}— from-side active/reactive branch flows, p.u.V0 … V{nb-1},a…— voltage magnitudes and angles, as inx_true
One row per column of z, giving its quantity, the bus or line it belongs to, and its
role under each of the three SCADA configurations:
| Role | Meaning |
|---|---|
available |
z^a, received in real time |
delayed |
z^d, smart-meter readings, revealed only retrospectively |
zero_injection |
z^0, virtual measurement at a bus with no load or generation |
unused |
present in the file, read by no estimator in that configuration |
Sparse long form (nonzero entries only), with the real and imaginary parts split into
their own columns: bus_from, bus_to, real, imag for Ybus, and line, bus, real, imag
for Yf. Together with branches.csv these are the complete electrical description —
they let you recompute h(x) without adopting our per-unit base conventions.
The three levels differ only in how many real-time channels are available; all of them keep the system unobservable in real time.
| SCADA | 38-bus | 123-bus | 30-bus |
|---|---|---|---|
| 1 | P0, Q0, V1 |
P113, Q113, V0 |
P0, Q0, V1 |
| 3 | + Pf, Qf (lines 8, 12) |
+ Pf, Qf (lines 6, 86) |
+ Pf, Qf (lines 8, 12) |
| 5 | + Pf, Qf (lines 20, 32) |
+ Pf, Qf (lines 9, 87) |
+ Pf, Qf (lines 20, 32) |
Additionally:
- The available voltage magnitude is measured one bus downstream of the substation
(
V1, orV0on the 123-bus network, whose slack is bus 113), not at the slack bus itself. The slack voltage is fixed at 1.0 p.u. by construction, so measuring it would contribute noise and no information. - On the 30-bus network the branch flows are part of the delayed set
z^d, so raising the SCADA level moves flows fromdelayedtoavailable(124 delayed channels at 1 SCADA, 116 at 5). On the two radial networks the delayed set is the nodal injections only, and is the same at every SCADA level.
Mean and minimum nodal voltage magnitude across all buses and instances, spanning
standard to heavily stressed regimes (also in voltage_statistics.csv):
δ |
38-bus mean | 38-bus min | 123-bus mean | 123-bus min | 30-bus mean | 30-bus min |
|---|---|---|---|---|---|---|
| 0.1 | — | — | — | — | 0.99 | 0.97 |
| 0.5 | 0.97 | 0.86 | 0.96 | 0.90 | — | — |
| 0.8 | 0.95 | 0.75 | 0.94 | 0.82 | — | — |
| 1.0 | 0.94 | 0.66 | 0.92 | 0.76 | — | — |
| 1.2 | 0.92 | 0.46 | 0.90 | 0.67 | — | — |
The Gaussian Process and neural-network pseudo-measurement generators that the paper
benchmarks CR-SE against are specified in full in
benchmark_generators.md — architectures, hyperparameters,
the shared weighting scheme, and the training/inference protocol.
J. G. De la Varga, J. M. Morales, S. Pineda, Contextual Robust State Estimation in Distribution Systems with Real-Time Unobservability and Scarce Data, arXiv:2507.08767
- J.G. De la Varga (josegv@uma.es) - GitHub: mrJGV
- J.M. Morales (juan.morales@uma.es) - GitHub: Juanmi82mg
- S. Pineda (spineda@uma.es) - GitHub: salvapineda
This work was supported by the following projects:
- Spanish Ministry of Science, Innovation and Universities (AEI/10.13039/501100011033) through project PID2023-148291NB-I00.
- Department of Universities, Research and Innovation of the Regional Government of Andalusia, through FEDER funds (grant PPRO-TEP967-G-2023).
- Spanish Ministry of Science, Innovation and Universities training program for PhDs with fellowship number PRE2021-098958.
If you want to cite the related paper or this repository, please use the following bib entries:
- Article:
@article{delavarga2026ContextualRobustSE,
title = {Contextual Robust State Estimation in Distribution Systems with Real-Time Unobservability and Scarce Data},
author = {J. G. De la Varga and J. M. Morales and S. Pineda},
year = {2026},
}
- Repository:
@misc{RobustContextualSE2025,
author = {J.G. De la Varga and J.M. Morales and S. Pineda},
year = {2025},
title = {Robust Contextual State Estimation in Distribution Systems with Real-Time Unobservability and Scarce Data},
howpublished = {\url{https://github.com/groupoasys/RobustContextualSE}}
}
Please, do it. Any feedback is welcome, so feel free to ask or comment anything you want via a Pull Request in this repo. If you need extra help, you can contact us.
Licensed under the GNU General Public License, Version 3 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at:
http://www.gnu.org/licenses/gpl-3.0.en.html
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the License governing permissions and limitations under the License.