Reserves

Constant Reserve

PowerSystems.ConstantReserveType
mutable struct ConstantReserve{T <: ReserveDirection} <: Reserve{T}
    name::String
    available::Bool
    time_frame::Float64
    requirement::Float64
    sustained_time::Float64
    max_output_fraction::Float64
    max_participation_factor::Float64
    deployed_fraction::Float64
    ext::Dict{String, Any}
    internal::InfrastructureSystemsInternal
end

A reserve product with a constant procurement requirement, such as 3% of the system base power at all times.

This reserve product includes online generators that can respond right away after an unexpected contingency, such as a transmission line or generator outage. When defining the reserve, the ReserveDirection must be specified to define this as a ReserveUp, ReserveDown, or ReserveSymmetric

Arguments

  • name::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name
  • available::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations
  • time_frame::Float64: the saturation time_frame in minutes to provide reserve contribution, validation range: (0, nothing)
  • requirement::Float64: the value of required reserves in p.u. (SYSTEM_BASE), validation range: (0, nothing)
  • sustained_time::Float64: (default: 3600.0) the time in seconds reserve contribution must sustained at a specified level, validation range: (0, nothing)
  • max_output_fraction::Float64: (default: 1.0) the maximum fraction of each device's output that can be assigned to the service, validation range: (0, 1)
  • max_participation_factor::Float64: (default: 1.0) the maximum portion [0, 1.0] of the reserve that can be contributed per device, validation range: (0, 1)
  • deployed_fraction::Float64: (default: 0.0) Fraction of service procurement that is assumed to be actually deployed. Most commonly, this is assumed to be either 0.0 or 1.0, validation range: (0, 1)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source

Constant Reserve Group

PowerSystems.ConstantReserveGroupType
mutable struct ConstantReserveGroup{T <: ReserveDirection} <: Service
    name::String
    available::Bool
    requirement::Float64
    ext::Dict{String, Any}
    contributing_services::Vector{Service}
    internal::InfrastructureSystemsInternal
end

A reserve product met by a group of individual reserves.

The group reserve requirement is added in addition to any individual reserve requirements, and devices that contribute to individual reserves within the group can also contribute to the overarching group reserve requirement. Example: A group of spinning and non-spinning reserves, where online generators providing spinning reserves can also contribute to the non-spinning reserve requirement.

This model has a constant procurement requirement, such as 3% of the system base power at all times. When defining the reserve, the ReserveDirection must be specified to define this as a ReserveUp, ReserveDown, or ReserveSymmetric

Arguments

  • name::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name
  • available::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations
  • requirement::Float64: the value of required reserves in p.u. (SYSTEM_BASE), validation range: (0, nothing)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • contributing_services::Vector{Service}: (default: Vector{Service}()) Services that contribute to this group requirement. Services must be added for this constraint to have an effect when conducting simulations in PowerSimulations.jl
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source

Variable Reserve

PowerSystems.VariableReserveType
mutable struct VariableReserve{T <: ReserveDirection} <: Reserve{T}
    name::String
    available::Bool
    time_frame::Float64
    requirement::Float64
    sustained_time::Float64
    max_output_fraction::Float64
    max_participation_factor::Float64
    deployed_fraction::Float64
    ext::Dict{String, Any}
    internal::InfrastructureSystemsInternal
end

A reserve product with a time-varying procurement requirement, such as a higher requirement during hours with an expected high load or high ramp.

This reserve product includes online generators that can respond right away after an unexpected contingency, such as a transmission line or generator outage. When defining the reserve, the ReserveDirection must be specified to define this as a ReserveUp, ReserveDown, or ReserveSymmetric. To model the time varying requirement, a "requirement" time series should be added to this reserve

Arguments

  • name::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name
  • available::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations
  • time_frame::Float64: the saturation time_frame in minutes to provide reserve contribution, validation range: (0, nothing)
  • requirement::Float64: the required quantity of the product should be scaled by a TimeSeriesData
  • sustained_time::Float64: (default: 3600.0) the time in seconds reserve contribution must sustained at a specified level, validation range: (0, nothing)
  • max_output_fraction::Float64: (default: 1.0) the maximum fraction of each device's output that can be assigned to the service, validation range: (0, 1)
  • max_participation_factor::Float64: (default: 1.0) the maximum portion [0, 1.0] of the reserve that can be contributed per device, validation range: (0, 1)
  • deployed_fraction::Float64: (default: 0.0) Fraction of service procurement that is assumed to be actually deployed. Most commonly, this is assumed to be either 0.0 or 1.0, validation range: (0, 1)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source

Reserve Demand Curve

PowerSystems.ReserveDemandCurveType
mutable struct ReserveDemandCurve{T <: ReserveDirection} <: Reserve{T}
    variable::Union{Nothing, TimeSeriesKey, CostCurve{PiecewiseIncrementalCurve}}
    name::String
    available::Bool
    time_frame::Float64
    sustained_time::Float64
    max_participation_factor::Float64
    deployed_fraction::Float64
    ext::Dict{String, Any}
    internal::InfrastructureSystemsInternal
end

A reserve product with an Operating Reserve Demand Curve (ORDC) for operational simulations.

The ORDC is modeled as a discretized set of (Reserve capacity (MW), Price ($/MWh)) steps, which can vary with time. Use set_variable_cost! to define the ORDCs.

When defining the reserve, the ReserveDirection must be specified to define this as a ReserveUp, ReserveDown, or ReserveSymmetric

Arguments

  • variable::Union{Nothing, TimeSeriesKey, CostCurve{PiecewiseIncrementalCurve}}: Create this object with variable = nothing, then add assign a cost curve or time-series of variable_cost using the set_variable_cost! function, which will automatically update this parameter
  • name::String: Name of the component. Components of the same type (e.g., PowerLoad) must have unique names, but components of different types (e.g., PowerLoad and ACBus) can have the same name
  • available::Bool: Indicator of whether the component is connected and online (true) or disconnected, offline, or down (false). Unavailable components are excluded during simulations
  • time_frame::Float64: the saturation time_frame in minutes to provide reserve contribution, validation range: (0, nothing)
  • sustained_time::Float64: (default: 3600.0) the time in seconds that the reserve contribution must sustained at a specified level, validation range: (0, nothing)
  • max_participation_factor::Float64: (default: 1.0) the maximum portion [0, 1.0] of the reserve that can be contributed per device, validation range: (0, 1)
  • deployed_fraction::Float64: (default: 0.0) Fraction of service procurement that is assumed to be actually deployed. Most commonly, this is assumed to be either 0.0 or 1.0, validation range: (0, 1)
  • ext::Dict{String, Any}: (default: Dict{String, Any}()) An extra dictionary for users to add metadata that are not used in simulation, such as latitude and longitude.
  • internal::InfrastructureSystemsInternal: (Do not modify.) PowerSystems.jl internal reference
source