|
|
|
@ -9,6 +9,27 @@ abstract type StartupCostsFormulation end
|
|
|
|
|
abstract type StatusVarsFormulation end
|
|
|
|
|
abstract type ProductionVarsFormulation end
|
|
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
struct Formulation
|
|
|
|
|
prod_vars::ProductionVarsFormulation
|
|
|
|
|
pwl_costs::PiecewiseLinearCostsFormulation
|
|
|
|
|
ramping::RampingFormulation
|
|
|
|
|
startup_costs::StartupCostsFormulation
|
|
|
|
|
status_vars::StatusVarsFormulation
|
|
|
|
|
transmission::TransmissionFormulation
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
Struct provided to `build_model` that holds various formulation components.
|
|
|
|
|
|
|
|
|
|
# Fields
|
|
|
|
|
|
|
|
|
|
- `prod_vars`: Formulation for the production decision variables
|
|
|
|
|
- `pwl_costs`: Formulation for the piecewise linear costs
|
|
|
|
|
- `ramping`: Formulation for ramping constraints
|
|
|
|
|
- `startup_costs`: Formulation for time-dependent start-up costs
|
|
|
|
|
- `status_vars`: Formulation for the status variables (e.g. `is_on`, `is_off`)
|
|
|
|
|
- `transmission`: Formulation for transmission and N-1 security constraints
|
|
|
|
|
"""
|
|
|
|
|
struct Formulation
|
|
|
|
|
prod_vars::ProductionVarsFormulation
|
|
|
|
|
pwl_costs::PiecewiseLinearCostsFormulation
|
|
|
|
@ -38,10 +59,10 @@ end
|
|
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
struct ShiftFactorsFormulation <: TransmissionFormulation
|
|
|
|
|
isf_cutoff::Float64
|
|
|
|
|
lodf_cutoff::Float64
|
|
|
|
|
precomputed_isf::Union{Nothing,Matrix{Float64}}
|
|
|
|
|
precomputed_lodf::Union{Nothing,Matrix{Float64}}
|
|
|
|
|
isf_cutoff::Float64 = 0.005
|
|
|
|
|
lodf_cutoff::Float64 = 0.001
|
|
|
|
|
precomputed_isf=nothing
|
|
|
|
|
precomputed_lodf=nothing
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
Transmission formulation based on Injection Shift Factors (ISF) and Line
|
|
|
|
@ -49,15 +70,15 @@ Outage Distribution Factors (LODF). Constraints are enforced in a lazy way.
|
|
|
|
|
|
|
|
|
|
Arguments
|
|
|
|
|
---------
|
|
|
|
|
- `precomputed_isf::Union{Matrix{Float64},Nothing} = nothing`:
|
|
|
|
|
- `precomputed_isf`:
|
|
|
|
|
the injection shift factors matrix. If not provided, it will be computed.
|
|
|
|
|
- `precomputed_lodf::Union{Matrix{Float64},Nothing} = nothing`:
|
|
|
|
|
- `precomputed_lodf`:
|
|
|
|
|
the line outage distribution factors matrix. If not provided, it will be
|
|
|
|
|
computed.
|
|
|
|
|
- `isf_cutoff::Float64 = 0.005`:
|
|
|
|
|
- `isf_cutoff`:
|
|
|
|
|
the cutoff that should be applied to the ISF matrix. Entries with magnitude
|
|
|
|
|
smaller than this value will be set to zero.
|
|
|
|
|
- `lodf_cutoff::Float64 = 0.001`:
|
|
|
|
|
- `lodf_cutoff`:
|
|
|
|
|
the cutoff that should be applied to the LODF matrix. Entries with magnitude
|
|
|
|
|
smaller than this value will be set to zero.
|
|
|
|
|
"""
|
|
|
|
|