mirror of
https://github.com/ANL-CEEESA/UnitCommitment.jl.git
synced 2025-12-06 00:08:52 -06:00
read and repair scenario
This commit is contained in:
@@ -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),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user