This library provides a Distributed Energy Resources' Hosting Capacity estimation of distribution systems considering that the Distribution Company can partially dispatch other DERs installed in the system.
The DistSystem.System
structure expected a DataFrames.jl with the follow columns:
Row │ Branch FB TB Type R_Ohm X_ohm Bus Amp_pu P_MW Q_MVAr Bshunt_MVAr
│ Int64 Int64 Int64 String Float64 Float64 Int64 Float64 Float64 Float64 Float64
────┼──────────────────────────────────────────────────────────────────────────────────────────────────
The active branches must have "Fixed" in Type
field.
You will need Julia v1.6 or greater, JuMP.jl v0.23 or greater, and a nonlinear solver compatible with JuMP.jl and the model described below.
This exemple also can be found in example.jl.
The distribution system of the example is also available in Dolatabadi et. al. (2021).
This library uses the following model:
$$ \begin{matrix} \text{Power injection}\ \text{in buses without DERs} \end{matrix} \begin{cases} p_{blks} = \mu^{HC}{s}p^{HC} - \mu^L_lP^L b\ q_{blks} = - \mu^L_lQ^L_ b\ \forall b \in \overline{\Omega}, \forall l \in L, \forall d \in D, \forall k \in K,\forall s \in S \end{cases} $$
$$ \begin{matrix} \text{Power injection}\ \text{in buses with DERs} \end{matrix} \begin{cases} p_{blks} = \mu^{DER}{dk}P^{DER}{d} + p^{DER}{dlks} - \mu^L_lP^L b\ q_{blks} = q^{DER}{dlk} - \mu^L_lQ^L b\ \forall d \in D, \forall b \in {b_d}, \forall l \in L, \forall k \in K, \forall s \in S \end{cases} $$
$$ \begin{matrix} \text{Power, voltage }\ \text{and current}\ \text{relationship} \end{matrix} \begin{cases} p_{blks} = v^{\Re}{blks}i^{\Re}{blks} + v^{\Im}{blks}i^{\Im}{blks}\ q_{blks} = v^{\Im}{blks}i^{\Re}{blks} - v^{\Re}{blks}i^{\Im}{blks}\ i^{\Re}{blks} = \sum{j \in \Omega} G_{bj}v^{\Re}{jlks} - B{bj}v^{\Im}{jlks}\ i^{\Im}{blks} = \sum_{j \in \Omega} B_{bj}v^{\Re}{jlks} + G{bj}v^{\Im}_{jlks}\ \forall b \in \Omega, \forall l \in L, \forall k \in K, \forall s \in S \end{cases} $$
$$ \text{Voltage limits} \begin{cases} (\underline{V})^2\leq(v^{\Re}{blks})^2 + (v^{\Im}{blks})^2 \leq (\overline{V})^2\ \forall b \in \Omega, \forall l \in L,\forall k \in K, \forall s \in S \end{cases} $$
$$ \text{Lines limits} \begin{cases} f_{ijlks}^{\Re} = (v^{\Re}{ilks} - v^{\Re}{jlks})G_{ij} - (v^{\Im}{ilks} - v^{\Im}{jlks})B_ {ij}\ f_{ijlks}^{\Im} = (v^{\Im}{ilks} - v^{\Im}{jlks})G_{ij} + (v^{\Re}{ilks} - v^{\Re}{jlks})B_ {ij}\ (f_{ijlks}^{\Re})^2 + (f_{ijlks}^{\Im})^2 \leq (F_{ij})^2\ -F_{ij} \leq f_{ijlks}^{\Re}, f_{ijlks}^{\Im} \leq F_{ij}\ \forall (i,j) \in \Omega^{B}, \forall l \in L,\forall k \in K, \forall s \in S \end{cases} $$
$$\begin{matrix} \text{Substation}\ \text{constraints}\ \end{matrix} \begin{cases} v^{\Im}{blks} = 0\ 0 \leq p{blks} \leq \overline{P^{SB}}\ 0 \leq q_{blks} \leq \overline{Q^{SB}}\ (i^{\Re}{blks})^2 + (i^{\Im}{blks})^2 \geq 0\ \forall b \in {b^{SB}}, \forall l \in L,\forall k \in K, \forall s \in S \end{cases} $$
$$ \text{DERs limits} \begin{cases} -\beta^{DER}dE^{DER}{d}\leq p^{DER}{dlks}T^{CUR} \leq \beta^{DER}dE^{DER}d\ \underline{P}^{DER}{d}\leq p^{DER}{dlks} \leq \overline{P}^{DER}d\ \underline{Q}^{DER}{d}\leq q^{DER}{dlks} \leq \overline{Q}^{DER}{d}\ (p^{DER}{dlks})^2 + (q^{DER}{dlks})^2 \leq (\alpha_d^{DER} S^{DER}{d})^2\ (\mu^{DER}{dk} P^{DER}{d} + p^{DER}{dlks})^2 + (q^{DER}{dlks})^2 \leq (S^{DER}_{d})^2\ \forall d \in D, \forall l \in L, \forall k \in K,\forall s \in S \end{cases} $$
$$\begin{matrix} \text{Power, voltage }\ \text{and current}\ \text{constraints} \end{matrix} \begin{cases} -M \leq p_{blks}, q_{blks}, i^{\Re}{blks}, i^{\Im}{blks}\leq M\ -\overline{V}\leq v^{\Re}{blks}, v^{\Im}{blks} \leq \overline{V}\ \forall b \in \Omega, \forall l \in L,\forall k \in K,\forall s \in S \end{cases} $$
: Nodal active and reactive power injection
: Real and imaginary part of nodal current injection
: Real and imaginary part of nodal voltage
: Set of scenarios for HC calculation
: Lower and upper voltage limits
: Active and reactive limit of the substation
: Scenario multiplier for HC calculation
: Quantity of buses without DGs and substation
-
Define the model
-
Implement the model on JuMP.jl
-
High-level interface for HC estimation
-
Initial documentation
-
Implement the minimization of costs.
-
Validate the model with Matpower.
-
Implement changes on system's topology.
-
Implement tests for power flow calculation using a simple system
-
Implement tests for power flow calculation using the 33-bus
-
Implement tests for others functions
-
Describe the relationship between the model and codebase
-
Better Documentation