read and repair scenario

pull/25/head
oyurdakul 3 years ago
parent 481f5a904c
commit ad4a754d63

@ -58,17 +58,19 @@ instance = UnitCommitment.read("/path/to/input.json.gz")
function _repair_scenario_name_and_probability( function _repair_scenario_name_and_probability(
scenarios::Vector{UnitCommitmentScenario}, scenarios::Vector{UnitCommitmentScenario},
path::Vector{String} path::Vector{String},
)::Vector{UnitCommitmentScenario} )::Vector{UnitCommitmentScenario}
number_of_scenarios = length(scenarios) number_of_scenarios = length(scenarios)
probs = [sc.probability for sc in scenarios] probs = [sc.probability for sc in scenarios]
total_weight = number_of_scenarios total_weight = number_of_scenarios
if Float64 in typeof.(probs) if Float64 in typeof.(probs)
try try
total_weight = sum(probs) total_weight = sum(probs)
catch e catch e
if isa(e, MethodError) if isa(e, MethodError)
error("If any of the scenarios is assigned a weight, then all scenarios must be assigned weights.") error(
"If any of the scenarios is assigned a weight, then all scenarios must be assigned weights.",
)
end end
end end
else else
@ -76,7 +78,8 @@ function _repair_scenario_name_and_probability(
end end
for (sc_path, sc) in zip(path, scenarios) for (sc_path, sc) in zip(path, scenarios)
sc.name !== "" || (sc.name = first(split(last(split(sc_path, "/")), "."))) sc.name !== "" ||
(sc.name = first(split(last(split(sc_path, "/")), ".")))
sc.probability = (sc.probability / total_weight) sc.probability = (sc.probability / total_weight)
end end
return scenarios return scenarios
@ -86,7 +89,7 @@ function read(path::String)::UnitCommitmentInstance
scenarios = Vector{UnitCommitmentScenario}() scenarios = Vector{UnitCommitmentScenario}()
scenario = _read_scenario(path) scenario = _read_scenario(path)
scenario.name = "s1" scenario.name = "s1"
scenario.probability = 1.0 scenario.probability = 1.0
scenarios = [scenario] scenarios = [scenario]
instance = instance =
UnitCommitmentInstance(time = scenario.time, scenarios = scenarios) UnitCommitmentInstance(time = scenario.time, scenarios = scenarios)

@ -30,9 +30,9 @@ end
mutable struct Unit mutable struct Unit
name::String name::String
bus::Bus bus::Bus
max_power::Vector{Float64} max_power::Vector{Float64}
min_power::Vector{Float64} min_power::Vector{Float64}
must_run::Vector{Bool} must_run::Vector{Bool}
min_power_cost::Vector{Float64} min_power_cost::Vector{Float64}
cost_segments::Vector{CostSegment} cost_segments::Vector{CostSegment}

@ -30,9 +30,7 @@ test_approx(x, y) = @test isapprox(x, y, atol = 1e-3)
randomize!( randomize!(
sc, sc,
XavQiuAhm2021.Randomization( XavQiuAhm2021.Randomization(randomize_load_profile = false),
randomize_load_profile = false,
),
rng = MersenneTwister(42), rng = MersenneTwister(42),
) )

Loading…
Cancel
Save