mirror of
https://github.com/ANL-CEEESA/UnitCommitment.jl.git
synced 2025-12-07 08:48:51 -06:00
Reformat source code
This commit is contained in:
@@ -30,7 +30,9 @@ function _add_ramp_eqs!(
|
||||
end
|
||||
for r in g.reserves
|
||||
if r.type !== "flexiramp"
|
||||
error("This formulation only supports flexiramp reserves, not $(r.type)")
|
||||
error(
|
||||
"This formulation only supports flexiramp reserves, not $(r.type)",
|
||||
)
|
||||
end
|
||||
rn = r.name
|
||||
for t in 1:model[:instance].time
|
||||
@@ -110,7 +112,8 @@ function _add_ramp_eqs!(
|
||||
) # Eq. (24) in Wang & Hobbs (2016)
|
||||
@constraint(
|
||||
model,
|
||||
-RD * is_on[gn, t+1] - SD * (is_on[gn, t] - is_on[gn, t+1]) -
|
||||
-RD * is_on[gn, t+1] -
|
||||
SD * (is_on[gn, t] - is_on[gn, t+1]) -
|
||||
maxp[t] * (1 - is_on[gn, t]) <= upflexiramp[rn, gn, t]
|
||||
) # first inequality of Eq. (26) in Wang & Hobbs (2016)
|
||||
@constraint(
|
||||
@@ -137,8 +140,14 @@ function _add_ramp_eqs!(
|
||||
-maxp[t] * is_on[gn, t] + minp[t] * is_on[gn, t+1] <=
|
||||
upflexiramp[rn, gn, t]
|
||||
) # first inequality of Eq. (28) in Wang & Hobbs (2016)
|
||||
@constraint(model, upflexiramp[rn, gn, t] <= maxp[t] * is_on[gn, t+1]) # second inequality of Eq. (28) in Wang & Hobbs (2016)
|
||||
@constraint(model, -maxp[t] * is_on[gn, t+1] <= dwflexiramp[rn, gn, t]) # first inequality of Eq. (29) in Wang & Hobbs (2016)
|
||||
@constraint(
|
||||
model,
|
||||
upflexiramp[rn, gn, t] <= maxp[t] * is_on[gn, t+1]
|
||||
) # second inequality of Eq. (28) in Wang & Hobbs (2016)
|
||||
@constraint(
|
||||
model,
|
||||
-maxp[t] * is_on[gn, t+1] <= dwflexiramp[rn, gn, t]
|
||||
) # first inequality of Eq. (29) in Wang & Hobbs (2016)
|
||||
@constraint(
|
||||
model,
|
||||
dwflexiramp[rn, gn, t] <=
|
||||
|
||||
@@ -72,14 +72,12 @@ function _add_flexiramp_reserve_eqs!(model::JuMP.Model)::Nothing
|
||||
# Eq. (17) in Wang & Hobbs (2016)
|
||||
eq_min_upflexiramp[r.name, t] = @constraint(
|
||||
model,
|
||||
sum(model[:upflexiramp][r.name, g.name, t] for g in r.units) +
|
||||
model[:upflexiramp_shortfall][r.name, t] >= r.amount[t]
|
||||
sum(model[:upflexiramp][r.name, g.name, t] for g in r.units) + model[:upflexiramp_shortfall][r.name, t] >= r.amount[t]
|
||||
)
|
||||
# Eq. (18) in Wang & Hobbs (2016)
|
||||
eq_min_dwflexiramp[r.name, t] = @constraint(
|
||||
model,
|
||||
sum(model[:dwflexiramp][r.name, g.name, t] for g in r.units) +
|
||||
model[:dwflexiramp_shortfall][r.name, t] >= r.amount[t]
|
||||
sum(model[:dwflexiramp][r.name, g.name, t] for g in r.units) + model[:dwflexiramp_shortfall][r.name, t] >= r.amount[t]
|
||||
)
|
||||
|
||||
# Account for flexiramp shortfall contribution to objective
|
||||
|
||||
@@ -75,8 +75,10 @@ function _add_flexiramp_reserve_vars!(model::JuMP.Model, g::Unit)::Nothing
|
||||
upflexiramp[r.name, g.name, t] = @variable(model) # up-flexiramp, ur_{it} in Wang & Hobbs (2016)
|
||||
dwflexiramp[r.name, g.name, t] = @variable(model) # down-flexiramp, dr_{it} in Wang & Hobbs (2016)
|
||||
if (r.name, t) ∉ keys(upflexiramp_shortfall)
|
||||
upflexiramp_shortfall[r.name, t] = @variable(model, lower_bound = 0)
|
||||
dwflexiramp_shortfall[r.name, t] = @variable(model, lower_bound = 0)
|
||||
upflexiramp_shortfall[r.name, t] =
|
||||
@variable(model, lower_bound = 0)
|
||||
dwflexiramp_shortfall[r.name, t] =
|
||||
@variable(model, lower_bound = 0)
|
||||
if r.shortfall_penalty < 0
|
||||
set_upper_bound(upflexiramp_shortfall[r.name, t], 0.0)
|
||||
set_upper_bound(dwflexiramp_shortfall[r.name, t], 0.0)
|
||||
@@ -204,14 +206,16 @@ function _add_min_uptime_downtime_eqs!(model::JuMP.Model, g::Unit)::Nothing
|
||||
eq_min_uptime[g.name, 0] = @constraint(
|
||||
model,
|
||||
sum(
|
||||
switch_off[g.name, i] for i in 1:(g.min_uptime-g.initial_status) if i <= T
|
||||
switch_off[g.name, i] for
|
||||
i in 1:(g.min_uptime-g.initial_status) if i <= T
|
||||
) == 0
|
||||
)
|
||||
else
|
||||
eq_min_downtime[g.name, 0] = @constraint(
|
||||
model,
|
||||
sum(
|
||||
switch_on[g.name, i] for i in 1:(g.min_downtime+g.initial_status) if i <= T
|
||||
switch_on[g.name, i] for
|
||||
i in 1:(g.min_downtime+g.initial_status) if i <= T
|
||||
) == 0
|
||||
)
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user