diff --git a/src/import/egret.jl b/src/import/egret.jl index d11bdea..3acb32c 100644 --- a/src/import/egret.jl +++ b/src/import/egret.jl @@ -18,9 +18,9 @@ function read_egret_solution(path::String)::OrderedDict solution = OrderedDict() is_on = solution["Is on"] = OrderedDict() - production = solution["Production (MW)"] = OrderedDict() + production = solution["Thermal production (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() for (gen_name, gen_dict) in egret["elements"]["generator"] diff --git a/src/solution/fix.jl b/src/solution/fix.jl index 3ce6170..4193889 100644 --- a/src/solution/fix.jl +++ b/src/solution/fix.jl @@ -10,8 +10,8 @@ solution. Useful for computing LMPs. """ function fix!(model::JuMP.Model, solution::AbstractDict)::Nothing instance, T = model[:instance], model[:instance].time - "Production (MW)" ∈ keys(solution) ? solution = Dict("s1" => solution) : - nothing + "Thermal production (MW)" ∈ keys(solution) ? + solution = Dict("s1" => solution) : nothing is_on = model[:is_on] prod_above = model[:prod_above] reserve = model[:reserve] @@ -20,7 +20,7 @@ function fix!(model::JuMP.Model, solution::AbstractDict)::Nothing for t in 1:T is_on_value = round(solution[sc.name]["Is on"][g.name][t]) prod_value = round( - solution[sc.name]["Production (MW)"][g.name][t], + solution[sc.name]["Thermal production (MW)"][g.name][t], digits = 5, ) JuMP.fix(is_on[g.name, t], is_on_value, force = true) diff --git a/src/solution/solution.jl b/src/solution/solution.jl index 3ee9dbc..3cb6f41 100644 --- a/src/solution/solution.jl +++ b/src/solution/solution.jl @@ -66,10 +66,10 @@ function solution(model::JuMP.Model)::OrderedDict for sc in instance.scenarios sol[sc.name] = OrderedDict() 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 ) - 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 ) sol[sc.name]["Startup cost (\$)"] = OrderedDict( diff --git a/src/validation/validate.jl b/src/validation/validate.jl index 88ee36f..5447980 100644 --- a/src/validation/validate.jl +++ b/src/validation/validate.jl @@ -28,8 +28,8 @@ function validate( instance::UnitCommitmentInstance, solution::Union{Dict,OrderedDict}, )::Bool - "Production (MW)" ∈ keys(solution) ? solution = Dict("s1" => solution) : - nothing + "Thermal production (MW)" ∈ keys(solution) ? + solution = Dict("s1" => solution) : nothing err_count = 0 err_count += _validate_units(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 for sc in instance.scenarios 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] spinning_reserves = [r for r in unit.reserves if r.type == "spinning"] @@ -57,7 +57,7 @@ function _validate_units(instance::UnitCommitmentInstance, solution; tol = 0.01) ) end actual_production_cost = - solution[sc.name]["Production cost (\$)"][unit.name] + solution[sc.name]["Thermal production cost (\$)"][unit.name] actual_startup_cost = solution[sc.name]["Startup cost (\$)"][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 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 ) if "Load curtail (MW)" in keys(solution) diff --git a/test/import/egret_test.jl b/test/import/egret_test.jl index 0ca54ab..a0a61bf 100644 --- a/test/import/egret_test.jl +++ b/test/import/egret_test.jl @@ -7,12 +7,13 @@ using UnitCommitment @testset "read_egret_solution" begin solution = 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 "115_STEAM_1" in keys(solution[attr]) @test length(solution[attr]["115_STEAM_1"]) == 48 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] @test solution["Startup cost (\$)"]["315_CT_6"][15:20] == [0.0, 0.0, 5665.23, 0.0, 0.0, 0.0]