FairDERs is the companion code for a research paper on the fair allocation of operating envelopes for distributed energy resources (DERs). It computes and compares operating-envelope allocations under several fairness models (utilitarian, minimax, lexicographic, and α-fairness) on a 56-bus distribution feeder, and reproduces the tables and figures presented in the paper.
Three studies are included, each applying a different DER scenario to the 56-bus case. Run each from the repository root:
julia studies/tcl_study/run_tcl_study.jl— thermostatically controlled loadsjulia studies/pv_study/run_pv_study.jl— rooftop solar PVjulia studies/mixed_study/run_mixed_study.jl— mixed DERs
Each study reads its case file from data/case56_<study>.m, calls the shared
helper functions in src/fairders.jl, and writes its outputs into the fig/
and table/ subfolders of that study's own folder:
fig/— a dodged barplot of the maximum operating envelopes across fairness models, and a value-distribution heatmaptable/— a per-metric summary table and a capacity table
| Study | Barplot | Heatmap | Summary table | Capacity table |
|---|---|---|---|---|
tcl |
tcl_oe_min_barplot.pdf |
tcl_dist_value.pdf |
tcl_summary_table.tex |
tcl_capacity_table.tex |
pv |
pv_oe_max_barplot.pdf |
pv_dist_value.pdf |
pv_summary_table.tex |
pv_capacity_table.tex |
mixed |
mixed_oe_min_max_barplot.pdf |
mixed_dist_value.pdf |
mixed_summary_table.tex |
mixed_capacity_table.tex |
Two additional scripts produce standalone figures. Run them from the
repository root; both write their outputs to diagrams/fig/:
julia diagrams/network_plot.jl— feeder network diagrams and a voltage-magnitude plot (pv_scenario.pdf,tcl_scenario.pdf,v_mag.pdf)julia diagrams/diagram_plots.jl— the fairness-surplus illustration (surplus diagram.pdf)
All shared logic lives in a single sectioned file, src/fairders.jl, which is
include-d by each study script. It is organized into four sections:
- Solver setup & running — builds the Ipopt and multi-objective (lexicographic) optimizers and solves each fairness model.
- Operating-envelope extraction — pulls the per-DER operating envelopes and power limits from the solved results.
- Metric aggregation — assembles the per-metric summary used by the tables.
- Output — writes the LaTeX tables and the figures.
The LaTeX table templates and the 56-bus case files are in data/.
The optimization models are provided by the OperatingEnvelopes package, which
is in this repository under deps/OperatingEnvelopes/
From the repository root, instantiate the project environment:
julia --project=. -e 'using Pkg; Pkg.instantiate()'
This will build all dependencies.
This software is provided under a BSD-3-Clause License as part of the Multi-Infrastructure Control and Optimization Toolkit (MICOT) project, C15024. See the LICENSE file
for details.