You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
33 lines
1.0 KiB
33 lines
1.0 KiB
# UnitCommitment.jl: Optimization Package for Security-Constrained Unit Commitment
|
|
# Copyright (C) 2020, UChicago Argonne, LLC. All rights reserved.
|
|
# Released under the modified BSD license. See COPYING.md for more details.
|
|
|
|
"""
|
|
_add_bus!(model::JuMP.Model, b::Bus)::Nothing
|
|
|
|
Creates `expr_net_injection` and adds `curtail` variable to `model`.
|
|
"""
|
|
function _add_bus!(model::JuMP.Model, b::Bus)::Nothing
|
|
net_injection = _init(model, :expr_net_injection)
|
|
curtail = _init(model, :curtail)
|
|
for t in 1:model[:instance].time
|
|
# Fixed load
|
|
net_injection[b.name, t] = AffExpr(-b.load[t])
|
|
|
|
# Reserves
|
|
reserve[b.name, t] = AffExpr()
|
|
|
|
# Load curtailment
|
|
curtail[b.name, t] =
|
|
@variable(model, lower_bound = 0, upper_bound = b.load[t])
|
|
|
|
add_to_expression!(net_injection[b.name, t], curtail[b.name, t], 1.0)
|
|
add_to_expression!(
|
|
model[:obj],
|
|
curtail[b.name, t],
|
|
model[:instance].power_balance_penalty[t],
|
|
)
|
|
end
|
|
return
|
|
end
|