Network Formulations
Network formulations are used to describe how the network and buses are handled when constructing constraints. The most common constraint decided by the network formulation is the supply-demand balance constraint.
PowerSimulations.NetworkModel — Type
Establishes the NetworkModel for a given PowerModels formulation type.
Arguments
::Type{T}whereT <: PM.AbstractPowerModel: the power-system formulation type.
Accepted keyword arguments
use_slacks::Bool= false Adds slack buses to the network modeling.PTDF_matrix::Union{PNM.PowerNetworkMatrix, Nothing}= nothing PTDF/VirtualPTDF matrix produced by PowerNetworkMatrices (optional).LODF_matrix::Union{PNM.PowerNetworkMatrix, Nothing}= nothing LODF/VirtualLODF matrix produced by PowerNetworkMatrices (optional).reduce_radial_branches::Bool= false Enable radial branch reduction when building network matrices.reduce_degree_two_branches::Bool= false Enable degree-two branch reduction when building network matrices.subnetworks::Dict{Int, Set{Int}}= Dict() Optional mapping of reference bus → set of mapped buses. If not provided, subnetworks are inferred from PTDF/VirtualPTDF or discovered from the system.duals::Vector{DataType}= Vector{DataType}() Constraint types for which duals should be recorded.power_flow_evaluation::Union{PFS.PowerFlowEvaluationModel, Vector{PFS.PowerFlowEvaluationModel}}Power-flow evaluation model(s). A single model is flattened to a vector internally.
Notes
modeled_branch_typesandreduced_branch_trackerare internal fields managed by the model.subsystemcan be set after construction viaset_subsystem!(model, id).- PTDF/LODF inputs are validated against the requested reduction flags and may raise a ConflictingInputsError if they are inconsistent with
reduce_radial_branchesorreduce_degree_two_branches.
Examples
ptdf = PNM.VirtualPTDF(system) nw = NetworkModel(PTDFPowerModel; PTDFmatrix = ptdf, reduceradialbranches = true, powerflow_evaluation = PFS.PowerFlowEvaluationModel())
nw2 = NetworkModel(CopperPlatePowerModel; subnetworks = Dict(1 => Set([1,2,3])))
Available Network Models are:
| Formulation | Description |
|---|---|
CopperPlatePowerModel | Copper plate connection between all components, i.e. infinite transmission capacity |
AreaBalancePowerModel | Network model approximation to represent inter-area flow with each area represented as a single node |
PTDFPowerModel | Uses the PTDF factor matrix to compute the fraction of power transferred in the network across the branches |
AreaPTDFPowerModel | Uses the PTDF factor matrix to compute the fraction of power transferred in the network across the branches and balances power by Area instead of system-wide |
PowerModels.jl available formulations:
- Exact non-convex models:
ACPPowerModel,ACRPowerModel,ACTPowerModel. - Linear approximations:
DCPPowerModel,NFAPowerModel. - Quadratic approximations:
DCPLLPowerModel,LPACCPowerModel - Quadratic relaxations:
SOCWRPowerModel,SOCWRConicPowerModel,SOCBFPowerModel,SOCBFConicPowerModel,QCRMPowerModel,QCLSPowerModel. - SDP relaxations:
SDPWRMPowerModel.
All of these formulations are described in the PowerModels.jl documentation and will not be described here.
CopperPlatePowerModel
PowerSimulations.CopperPlatePowerModel — Type
Infinite capacity approximation of network flow to represent entire system with a single node.
Variables:
If Slack variables are enabled:
- Bounds: [0.0, ]
- Default initial value: 0.0
- Default proportional cost: 1e6
- Symbol: $p^\text{sl,up}$
- Bounds: [0.0, ]
- Default initial value: 0.0
- Default proportional cost: 1e6
- Symbol: $p^\text{sl,dn}$
Objective:
Add a large proportional cost to the objective function if slack variables are used $+ (p^\text{sl,up} + p^\text{sl,dn}) \cdot 10^6$
Expressions:
Adds $p^\text{sl,up}$ and $p^\text{sl,dn}$ terms to the respective active power balance expressions ActivePowerBalance created by this CopperPlatePowerModel network formulation.
Constraints:
Adds the CopperPlateBalanceConstraint to balance the active power of all components available in the system
\[\begin{align} & \sum_{c \in \text{components}} p_t^c = 0, \quad \forall t \in \{1, \dots, T\} \end{align}\]
AreaBalancePowerModel
PowerSimulations.AreaBalancePowerModel — Type
Approximation to represent inter-area flow with each area represented as a single node.
Variables: If Slack variables are enabled:
SystemBalanceSlackUpby area:- Bounds: [0.0, ]
- Default initial value: 0.0
- Default proportional cost: 1e6
- Symbol: $p^\text{sl,up}$
SystemBalanceSlackDownby area:- Bounds: [0.0, ]
- Default initial value: 0.0
- Default proportional cost: 1e6
- Symbol: $p^\text{sl,dn}$
Objective:
Adds $p^\text{sl,up}$ and $p^\text{sl,dn}$ terms to the respective active power balance expressions ActivePowerBalance per area.
Expressions:
Creates ActivePowerBalance expressions for each area that then are used to balance active power for all buses within a single area.
Constraints:
Adds the CopperPlateBalanceConstraint to balance the active power of all components available in an area.
\[\begin{align} & \sum_{c \in \text{components}_a} p_t^c = 0, \quad \forall a\in \{1,\dots, A\}, t \in \{1, \dots, T\} \end{align}\]
PTDFPowerModel
PowerSimulations.PTDFPowerModel — Type
Linear active power approximation using the power transfer distribution factor PTDF matrix.
Variables:
If Slack variables are enabled:
- Bounds: [0.0, ]
- Default initial value: 0.0
- Default proportional cost: 1e6
- Symbol: $p^\text{sl,up}$
- Bounds: [0.0, ]
- Default initial value: 0.0
- Default proportional cost: 1e6
- Symbol: $p^\text{sl,dn}$
Objective:
Add a large proportional cost to the objective function if slack variables are used $+ (p^\text{sl,up} + p^\text{sl,dn}) \cdot 10^6$
Expressions:
Adds $p^\text{sl,up}$ and $p^\text{sl,dn}$ terms to the respective system-wide active power balance expressions ActivePowerBalance created by this CopperPlatePowerModel network formulation. In addition, it creates ActivePowerBalance expressions for each bus to be used in the calculation of branch flows.
Constraints:
Adds the CopperPlateBalanceConstraint to balance the active power of all components available in the system
\[\begin{align} & \sum_{c \in \text{components}} p_t^c = 0, \quad \forall t \in \{1, \dots, T\} \end{align}\]
In addition creates NodalBalanceActiveConstraint for HVDC buses balance, if DC components are connected to an HVDC network.
AreaPTDFPowerModel
PowerSimulations.AreaPTDFPowerModel — Type
Linear active power approximation using the power transfer distribution factor PTDF matrix. Balancing areas as well as synchrounous regions.
Variables
Slack variables are not supported.
Objective Function
No changes to the objective function.
Expressions
Creates the area-wide and nodal-wide active power balance expressions ActivePowerBalance to balance power based on each area independently. The flows across areas are computed based on the PTDF factors of lines connecting areas.
Constraints:
Adds the ActivePowerBalance constraint to balance the active power of all components available for each area.
\[\begin{align} & \sum_{c \in \text{components}_a} p_t^c = 0, \quad \forall a\in \{1,\dots, A\}, t \in \{1, \dots, T\} \end{align}\]
This includes the flows of lines based on the PTDF factors.
SecurityConstrainedPTDFPowerModel
PowerSimulations.SecurityConstrainedPTDFPowerModel — Type
Linear active power approximation using the power transfer distribution factor PTDF matrix and line outage distribution factors LODF for branches outages. If exists, the rating b is considered as the branch power limit for post-contingency flows, otherwise the standard rating is considered.
TODO
SecurityConstrainedAreaPTDFPowerModel
PowerSimulations.SecurityConstrainedAreaPTDFPowerModel — Type
Linear active power approximation using the power transfer distribution factor PTDF matrix and LODF for branches outages. Balancing areas as well as synchrounous regions.
TODO