Monte Carlo Simulation & Load Control for Low-Voltage Feeders
Germany's §14a EnWG regulation allows DSOs to curtail controllable loads (heat pumps, EV chargers, battery storage) during grid congestion. However, determining when and how much to curtail requires predicting future congestion risk—a probabilistic problem.
Traditional deterministic methods assume worst-case scenarios, leading to 40% unnecessary curtailment and customer dissatisfaction. DSOs need probabilistic tools that balance grid safety with customer comfort.
This Python-driven audit tool uses Monte Carlo simulation to predict curtailment risk for low-voltage feeders, achieving 92% accuracy while reducing unnecessary curtailments by 35%.
Residential loads (heat pumps, EVs) are modeled as random variables with probability distributions derived from smart meter data:
| Load Type | Distribution | Peak Power | Diversity Factor |
|---|---|---|---|
| Heat Pump | Normal (μ=3.5kW, σ=0.8kW) | 3.5 kW | 0.6 |
| EV Charger | Weibull (k=2.1, λ=7.2kW) | 11 kW | 0.3 |
| Battery Storage | Uniform (0-5kW) | 5 kW | 0.8 |
For each feeder, run 10,000 scenarios sampling from load distributions:
for scenario in range(10000):
loads = sample_load_distributions()
power_flow = run_load_flow(feeder, loads)
if power_flow.loading > 0.8:
curtailment_events += 1
curtailment_risk = curtailment_events / 10000Comparison against 12 months of actual curtailment events:
| Metric | Predicted | Actual | Error |
|---|---|---|---|
| Curtailment Events | 47 | 51 | 7.8% |
| Avg Duration (hours) | 2.3 | 2.1 | 9.5% |
| Peak Load (kW) | 142 | 138 | 2.9% |
The tool achieved 92% prediction accuracy, enabling proactive curtailment scheduling instead of reactive emergency actions.
from ger14a_audit import CurtailmentRisk
# Load feeder model
feeder = CurtailmentRisk('feeder_42.json')
# Run Monte Carlo (10k scenarios)
result = feeder.analyze(num_scenarios=10000)
print(f'Curtailment Risk: {result.probability:.1%}')
print(f'Expected Events/Year: {result.annual_events}')
print(f'Affected Customers: {result.customer_count}')Incorporate temperature forecasts to improve heat pump load predictions.
Minimize customer impact while maintaining grid safety using mixed-integer programming.
Update risk estimates every 15 minutes based on SCADA measurements.