mirror of
https://github.com/ANL-CEEESA/UnitCommitment.jl.git
synced 2025-12-06 08:18:51 -06:00
initcond: Apply to instance instead of scenario
This commit is contained in:
@@ -5,13 +5,31 @@
|
|||||||
using JuMP
|
using JuMP
|
||||||
|
|
||||||
"""
|
"""
|
||||||
generate_initial_conditions!(sc, optimizer)
|
generate_initial_conditions!(instance, optimizer)
|
||||||
|
|
||||||
Generates feasible initial conditions for the given scenario, by constructing
|
Generates feasible initial conditions for the given instance, by constructing
|
||||||
and solving a single-period mixed-integer optimization problem, using the given
|
and solving a single-period mixed-integer optimization problem, using the given
|
||||||
optimizer. The scenario is modified in-place.
|
optimizer. The instance is modified in-place.
|
||||||
"""
|
"""
|
||||||
function generate_initial_conditions!(
|
function generate_initial_conditions!(
|
||||||
|
instance::UnitCommitmentInstance,
|
||||||
|
optimizer,
|
||||||
|
)::Nothing
|
||||||
|
# Process first scenario
|
||||||
|
_generate_initial_conditions!(instance.scenarios[1], optimizer)
|
||||||
|
|
||||||
|
# Copy initial conditions to remaining scenarios
|
||||||
|
for (si, sc) in enumerate(instance.scenarios)
|
||||||
|
si > 1 || continue
|
||||||
|
for (gi, g) in sc.thermal_units
|
||||||
|
g_ref = instance.scenarios[1].thermal_units[gi]
|
||||||
|
g.initial_power = g_ref.initial_power
|
||||||
|
g.initial_status = g_ref.initial_status
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function _generate_initial_conditions!(
|
||||||
sc::UnitCommitmentScenario,
|
sc::UnitCommitmentScenario,
|
||||||
optimizer,
|
optimizer,
|
||||||
)::Nothing
|
)::Nothing
|
||||||
|
|||||||
@@ -2,28 +2,33 @@
|
|||||||
# Copyright (C) 2020, UChicago Argonne, LLC. All rights reserved.
|
# Copyright (C) 2020, UChicago Argonne, LLC. All rights reserved.
|
||||||
# Released under the modified BSD license. See COPYING.md for more details.
|
# Released under the modified BSD license. See COPYING.md for more details.
|
||||||
|
|
||||||
using UnitCommitment, Cbc, JuMP
|
using UnitCommitment, HiGHS, JuMP
|
||||||
|
|
||||||
function transform_initcond_test()
|
function transform_initcond_test()
|
||||||
@testset "generate_initial_conditions!" begin
|
@testset "generate_initial_conditions!" begin
|
||||||
# Load instance
|
# Load instance
|
||||||
instance = UnitCommitment.read(fixture("case118-initcond.json.gz"))
|
instance = UnitCommitment.read(fixture("case118-initcond.json.gz"))
|
||||||
optimizer = optimizer_with_attributes(Cbc.Optimizer, "logLevel" => 0)
|
optimizer =
|
||||||
sc = instance.scenarios[1]
|
optimizer_with_attributes(HiGHS.Optimizer, MOI.Silent() => true)
|
||||||
|
|
||||||
# All units should have unknown initial conditions
|
# All units should have unknown initial conditions
|
||||||
|
for sc in instance.scenarios
|
||||||
for g in sc.thermal_units
|
for g in sc.thermal_units
|
||||||
@test g.initial_power === nothing
|
@test g.initial_power === nothing
|
||||||
@test g.initial_status === nothing
|
@test g.initial_status === nothing
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
# Generate initial conditions
|
# Generate initial conditions
|
||||||
UnitCommitment.generate_initial_conditions!(sc, optimizer)
|
UnitCommitment.generate_initial_conditions!(instance, optimizer)
|
||||||
|
|
||||||
# All units should now have known initial conditions
|
# All units should now have known initial conditions
|
||||||
|
for sc in instance.scenarios
|
||||||
for g in sc.thermal_units
|
for g in sc.thermal_units
|
||||||
@test g.initial_power !== nothing
|
@test g.initial_power !== nothing
|
||||||
@test g.initial_status !== nothing
|
@test g.initial_status !== nothing
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
# TODO: Check that initial conditions are feasible
|
# TODO: Check that initial conditions are feasible
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user