Operations ProblemTemplates

Templates are used to specify the modeling properties of the devices and network that are going to he used to specify a problem. A ProblemTemplate is just a collection of DeviceModels that allows the user to specify the formulations of each set of devices (by device type) independently so that the modeler can adjust the level of detail according to the question of interest and the available data. For more information about valid DeviceModels and their mathematical representations, check out the Formulation Library.

Building a ProblemTemplate

You can build a ProblemTemplate by adding a NetworkModel, DeviceModels, and ServiceModels.

template = ProblemTemplate()
set_network_model!(template, NetworkModel(CopperPlatePowerModel))
set_device_model!(template, PowerLoad, StaticPowerLoad)
set_device_model!(template, ThermalStandard, ThermalBasicUnitCommitment)
set_service_model!(template, VariableReserve{ReserveUp}, RangeReserve)

Default Templates

PowerSimulations.jl provides default templates for common operation problems. You can retrieve a default template and modify it according to your requirements. Currently supported default templates are:

PowerSimulations.template_economic_dispatchFunction
template_economic_dispatch(; kwargs...) -> ProblemTemplate
template_economic_dispatch(; kwargs...)

Creates a ProblemTemplate with default DeviceModels for an Economic Dispatch problem.

Example

template = templateeconomicdispatch()


# Accepted Key Words
- `network::Type{<:PM.AbstractPowerModel}` : override default network model settings
- `devices::Vector{DeviceModel}` : override default `DeviceModel` settings
- `services::Vector{ServiceModel}` : override default `ServiceModel` settings
source
template_economic_dispatch()
Network Model
Network Model CopperPlatePowerModel
Slacks false
PTDF false
Duals None
Device Models
Device Type Formulation Slacks
RenewableNonDispatch FixedOutput false
ThermalStandard ThermalBasicDispatch false
PowerLoad StaticPowerLoad false
InterruptiblePowerLoad PowerLoadInterruption false
RenewableDispatch RenewableFullDispatch false
Branch Models
Branch Type Formulation Slacks
Line StaticBranch false
TapTransformer StaticBranch false
Transformer2W StaticBranch false
TwoTerminalHVDCLine HVDCTwoTerminalDispatch false
Service Models
Service Type Formulation Slacks Aggregated Model
VariableReserve{ReserveUp} RangeReserve false true
VariableReserve{ReserveDown} RangeReserve false true
PowerSimulations.template_unit_commitmentFunction
template_unit_commitment(; kwargs...) -> ProblemTemplate
template_unit_commitment(; kwargs...)

Creates a ProblemTemplate with default DeviceModels for a Unit Commitment problem.

Example

template = templateunitcommitment()


# Accepted Key Words
- `network::Type{<:PM.AbstractPowerModel}` : override default network model settings
- `devices::Vector{DeviceModel}` : override default `DeviceModel` settings
- `services::Vector{ServiceModel}` : override default `ServiceModel` settings
source
template_unit_commitment()
Network Model
Network Model CopperPlatePowerModel
Slacks false
PTDF false
Duals None
Device Models
Device Type Formulation Slacks
RenewableNonDispatch FixedOutput false
ThermalStandard ThermalBasicUnitCommitment false
PowerLoad StaticPowerLoad false
InterruptiblePowerLoad PowerLoadInterruption false
RenewableDispatch RenewableFullDispatch false
Branch Models
Branch Type Formulation Slacks
Line StaticBranch false
TapTransformer StaticBranch false
Transformer2W StaticBranch false
TwoTerminalHVDCLine HVDCTwoTerminalDispatch false
Service Models
Service Type Formulation Slacks Aggregated Model
VariableReserve{ReserveUp} RangeReserve false true
VariableReserve{ReserveDown} RangeReserve false true