Problem and Objective
High PV penetration on the IEEE 13-bus feeder caused sustained midday overvoltage beyond ANSI limits. The objective was to bring voltages back into bounds while minimizing renewable energy curtailment.
An OpenDSS quasi-static time-series simulation of a high-PV IEEE 13-bus feeder. I implemented four control strategies—baseline, heuristic Volt-VAR, coordinated optimization, and battery storage—and measured their impact on voltage compliance and curtailment waste.
Python wrapper around OpenDSS driving a quasi-static time-series power flow. Each 5-minute timestep scales load and PV profiles, solves the power flow, applies control setpoints, and re-solves—288 steps per 24-hour day on the IEEE 13-bus test feeder.
IEEE 13-bus test feeder with synthetic high-PV penetration that causes reverse power flow and midday overvoltage. DER placements are CSV-driven; the same code runs the larger 123-bus production feeder by changing a single config flag.
Baseline: unity power factor, no DERMS.
Heuristic: rule-based Volt-VAR — absorb Q when V > 1.03 p.u., curtail P when V > 1.05.
Optimization: CVXPY convex dispatch minimising curtailment subject to voltage bounds.
Battery: energy shifting to reduce peak-hour curtailment.
High PV penetration on the IEEE 13-bus feeder caused sustained midday overvoltage beyond ANSI limits. The objective was to bring voltages back into bounds while minimizing renewable energy curtailment.
This keeps the comparison fair and isolates the effect of each control strategy.
IEEE13Nodeckt.dss) from the IEEE PES Test Feeder Repository or the OpenDSS package.load_24h.csv, pv_clear_sky_24h.csv) plus DER placement CSV (ders_ieee13.csv).OpenDSSDirect.py), with optimization dispatch solved in cvxpy using ECOS.python -m src.sim.run_qsts --config config/study_optimization.yaml --pv-scale 4.0
python -m src.analysis.run_phase5_analysis --baseline-config config/study_mvp.yaml --heuristic-config config/study_heuristic.yaml --optimization-config config/study_optimization.yaml --battery-config config/study_battery.yaml --output results/phase5
| Strategy | Violation Minutes | Max Voltage (p.u.) | Curtailment (kWh) | Avg Q Dispatch (kvar) |
|---|---|---|---|---|
| Baseline | 355 | 1.0747 | 0 | 0 |
| Heuristic | 205 | 1.0570 | 970 | 168 |
| Optimization | 0 | 1.0499 | 1.2 | 4.4 |
| Battery | — | — | — | — |