Allow v0.3 to read v0.2 instance files

This commit is contained in:
2022-07-12 11:46:27 -05:00
parent 678e6aa2f5
commit 6e30645084
24 changed files with 83 additions and 27 deletions

View File

@@ -20,6 +20,7 @@ include("model/formulations/WanHob2016/structs.jl")
include("import/egret.jl")
include("instance/read.jl")
include("instance/migrate.jl")
include("model/build.jl")
include("model/formulations/ArrCon2000/ramp.jl")
include("model/formulations/base/bus.jl")

38
src/instance/migrate.jl Normal file
View File

@@ -0,0 +1,38 @@
# 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.
using DataStructures
using JSON
function _migrate(json)
version = json["Parameters"]["Version"]
if version === nothing
error(
"The provided input file cannot be loaded because it does not " *
"specify what version of UnitCommitment.jl it was written for. " *
"Please modify the \"Parameters\" section of the file and include " *
"a \"Version\" entry. For example: {\"Parameters\":{\"Version\":\"0.3\"}}",
)
end
version = VersionNumber(version)
version >= v"0.3" || _migrate_to_v03(json)
return
end
function _migrate_to_v03(json)
# Migrate reserves
if json["Reserves"] !== nothing &&
json["Reserves"]["Spinning (MW)"] !== nothing
amount = json["Reserves"]["Spinning (MW)"]
json["Reserves"] = DefaultOrderedDict(nothing)
json["Reserves"]["r1"] = DefaultOrderedDict(nothing)
json["Reserves"]["r1"]["Type"] = "spinning"
json["Reserves"]["r1"]["Amount (MW)"] = amount
for (gen_name, gen) in json["Generators"]
if gen["Provides spinning reserves?"] == true
gen["Reserve eligibility"] = ["r1"]
end
end
end
end

View File

@@ -80,6 +80,7 @@ function _read_json(path::String)::OrderedDict
end
function _from_json(json; repair = true)
_migrate(json)
units = Unit[]
buses = Bus[]
contingencies = Contingency[]