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 [DeviceModel`](@ref)s 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 ModelCopperPlatePowerModel
Slacksfalse
PTDFfalse
DualsNone
HVDC Network ModelNone
Device Models
Device TypeFormulationSlacks
RenewableNonDispatchFixedOutputfalse
ThermalStandardThermalBasicDispatchfalse
PowerLoadStaticPowerLoadfalse
InterruptiblePowerLoadPowerLoadInterruptionfalse
RenewableDispatchRenewableFullDispatchfalse
Branch Models
Branch TypeFormulationSlacks
LineStaticBranchfalse
TapTransformerStaticBranchfalse
Transformer2WStaticBranchfalse
TwoTerminalGenericHVDCLineHVDCTwoTerminalDispatchfalse
Service Models
Service TypeFormulationSlacksAggregated Model
VariableReserve{ReserveUp}RangeReservefalsetrue
VariableReserve{ReserveDown}RangeReservefalsetrue
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 ModelCopperPlatePowerModel
Slacksfalse
PTDFfalse
DualsNone
HVDC Network ModelNone
Device Models
Device TypeFormulationSlacks
RenewableNonDispatchFixedOutputfalse
ThermalStandardThermalBasicUnitCommitmentfalse
PowerLoadStaticPowerLoadfalse
InterruptiblePowerLoadPowerLoadInterruptionfalse
RenewableDispatchRenewableFullDispatchfalse
Branch Models
Branch TypeFormulationSlacks
LineStaticBranchfalse
TapTransformerStaticBranchfalse
Transformer2WStaticBranchfalse
TwoTerminalGenericHVDCLineHVDCTwoTerminalDispatchfalse
Service Models
Service TypeFormulationSlacksAggregated Model
VariableReserve{ReserveUp}RangeReservefalsetrue
VariableReserve{ReserveDown}RangeReservefalsetrue