Rename 'production' to 'thermal production'

pull/26/head
Alinson S. Xavier 3 years ago
parent 19534a128f
commit b1c963f217
Signed by: isoron
GPG Key ID: 0DA8E4B9E1109DCA

@ -18,9 +18,9 @@ function read_egret_solution(path::String)::OrderedDict
solution = OrderedDict() solution = OrderedDict()
is_on = solution["Is on"] = OrderedDict() is_on = solution["Is on"] = OrderedDict()
production = solution["Production (MW)"] = OrderedDict() production = solution["Thermal production (MW)"] = OrderedDict()
reserve = solution["Reserve (MW)"] = OrderedDict() reserve = solution["Reserve (MW)"] = OrderedDict()
production_cost = solution["Production cost (\$)"] = OrderedDict() production_cost = solution["Thermal production cost (\$)"] = OrderedDict()
startup_cost = solution["Startup cost (\$)"] = OrderedDict() startup_cost = solution["Startup cost (\$)"] = OrderedDict()
for (gen_name, gen_dict) in egret["elements"]["generator"] for (gen_name, gen_dict) in egret["elements"]["generator"]

@ -10,8 +10,8 @@ solution. Useful for computing LMPs.
""" """
function fix!(model::JuMP.Model, solution::AbstractDict)::Nothing function fix!(model::JuMP.Model, solution::AbstractDict)::Nothing
instance, T = model[:instance], model[:instance].time instance, T = model[:instance], model[:instance].time
"Production (MW)" keys(solution) ? solution = Dict("s1" => solution) : "Thermal production (MW)" keys(solution) ?
nothing solution = Dict("s1" => solution) : nothing
is_on = model[:is_on] is_on = model[:is_on]
prod_above = model[:prod_above] prod_above = model[:prod_above]
reserve = model[:reserve] reserve = model[:reserve]
@ -20,7 +20,7 @@ function fix!(model::JuMP.Model, solution::AbstractDict)::Nothing
for t in 1:T for t in 1:T
is_on_value = round(solution[sc.name]["Is on"][g.name][t]) is_on_value = round(solution[sc.name]["Is on"][g.name][t])
prod_value = round( prod_value = round(
solution[sc.name]["Production (MW)"][g.name][t], solution[sc.name]["Thermal production (MW)"][g.name][t],
digits = 5, digits = 5,
) )
JuMP.fix(is_on[g.name, t], is_on_value, force = true) JuMP.fix(is_on[g.name, t], is_on_value, force = true)

@ -66,10 +66,10 @@ function solution(model::JuMP.Model)::OrderedDict
for sc in instance.scenarios for sc in instance.scenarios
sol[sc.name] = OrderedDict() sol[sc.name] = OrderedDict()
if !isempty(sc.thermal_units) if !isempty(sc.thermal_units)
sol[sc.name]["Production (MW)"] = OrderedDict( sol[sc.name]["Thermal production (MW)"] = OrderedDict(
g.name => production(g, sc) for g in sc.thermal_units g.name => production(g, sc) for g in sc.thermal_units
) )
sol[sc.name]["Production cost (\$)"] = OrderedDict( sol[sc.name]["Thermal production cost (\$)"] = OrderedDict(
g.name => production_cost(g, sc) for g in sc.thermal_units g.name => production_cost(g, sc) for g in sc.thermal_units
) )
sol[sc.name]["Startup cost (\$)"] = OrderedDict( sol[sc.name]["Startup cost (\$)"] = OrderedDict(

@ -28,8 +28,8 @@ function validate(
instance::UnitCommitmentInstance, instance::UnitCommitmentInstance,
solution::Union{Dict,OrderedDict}, solution::Union{Dict,OrderedDict},
)::Bool )::Bool
"Production (MW)" keys(solution) ? solution = Dict("s1" => solution) : "Thermal production (MW)" keys(solution) ?
nothing solution = Dict("s1" => solution) : nothing
err_count = 0 err_count = 0
err_count += _validate_units(instance, solution) err_count += _validate_units(instance, solution)
err_count += _validate_reserve_and_demand(instance, solution) err_count += _validate_reserve_and_demand(instance, solution)
@ -46,7 +46,7 @@ function _validate_units(instance::UnitCommitmentInstance, solution; tol = 0.01)
err_count = 0 err_count = 0
for sc in instance.scenarios for sc in instance.scenarios
for unit in sc.thermal_units for unit in sc.thermal_units
production = solution[sc.name]["Production (MW)"][unit.name] production = solution[sc.name]["Thermal production (MW)"][unit.name]
reserve = [0.0 for _ in 1:instance.time] reserve = [0.0 for _ in 1:instance.time]
spinning_reserves = spinning_reserves =
[r for r in unit.reserves if r.type == "spinning"] [r for r in unit.reserves if r.type == "spinning"]
@ -57,7 +57,7 @@ function _validate_units(instance::UnitCommitmentInstance, solution; tol = 0.01)
) )
end end
actual_production_cost = actual_production_cost =
solution[sc.name]["Production cost (\$)"][unit.name] solution[sc.name]["Thermal production cost (\$)"][unit.name]
actual_startup_cost = actual_startup_cost =
solution[sc.name]["Startup cost (\$)"][unit.name] solution[sc.name]["Startup cost (\$)"][unit.name]
is_on = bin(solution[sc.name]["Is on"][unit.name]) is_on = bin(solution[sc.name]["Is on"][unit.name])
@ -323,7 +323,7 @@ function _validate_reserve_and_demand(instance, solution, tol = 0.01)
) )
end end
production = sum( production = sum(
solution[sc.name]["Production (MW)"][g.name][t] for solution[sc.name]["Thermal production (MW)"][g.name][t] for
g in sc.thermal_units g in sc.thermal_units
) )
if "Load curtail (MW)" in keys(solution) if "Load curtail (MW)" in keys(solution)

@ -7,12 +7,13 @@ using UnitCommitment
@testset "read_egret_solution" begin @testset "read_egret_solution" begin
solution = solution =
UnitCommitment.read_egret_solution("$FIXTURES/egret_output.json.gz") UnitCommitment.read_egret_solution("$FIXTURES/egret_output.json.gz")
for attr in ["Is on", "Production (MW)", "Production cost (\$)"] for attr in
["Is on", "Thermal production (MW)", "Thermal production cost (\$)"]
@test attr in keys(solution) @test attr in keys(solution)
@test "115_STEAM_1" in keys(solution[attr]) @test "115_STEAM_1" in keys(solution[attr])
@test length(solution[attr]["115_STEAM_1"]) == 48 @test length(solution[attr]["115_STEAM_1"]) == 48
end end
@test solution["Production cost (\$)"]["315_CT_6"][15:20] == @test solution["Thermal production cost (\$)"]["315_CT_6"][15:20] ==
[0.0, 0.0, 884.44, 1470.71, 1470.71, 884.44] [0.0, 0.0, 884.44, 1470.71, 1470.71, 884.44]
@test solution["Startup cost (\$)"]["315_CT_6"][15:20] == @test solution["Startup cost (\$)"]["315_CT_6"][15:20] ==
[0.0, 0.0, 5665.23, 0.0, 0.0, 0.0] [0.0, 0.0, 5665.23, 0.0, 0.0, 0.0]

Loading…
Cancel
Save