initcond: Apply to instance instead of scenario

pull/33/merge
Alinson S. Xavier 2 years ago
parent beaf0b785f
commit d49712f41b
Signed by: isoron
GPG Key ID: 0DA8E4B9E1109DCA

@ -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

Loading…
Cancel
Save