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
|
||||
|
||||
"""
|
||||
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
|
||||
optimizer. The scenario is modified in-place.
|
||||
optimizer. The instance is modified in-place.
|
||||
"""
|
||||
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,
|
||||
optimizer,
|
||||
)::Nothing
|
||||
|
||||
@@ -2,27 +2,32 @@
|
||||
# Copyright (C) 2020, UChicago Argonne, LLC. All rights reserved.
|
||||
# Released under the modified BSD license. See COPYING.md for more details.
|
||||
|
||||
using UnitCommitment, Cbc, JuMP
|
||||
using UnitCommitment, HiGHS, JuMP
|
||||
|
||||
function transform_initcond_test()
|
||||
@testset "generate_initial_conditions!" begin
|
||||
# Load instance
|
||||
instance = UnitCommitment.read(fixture("case118-initcond.json.gz"))
|
||||
optimizer = optimizer_with_attributes(Cbc.Optimizer, "logLevel" => 0)
|
||||
sc = instance.scenarios[1]
|
||||
optimizer =
|
||||
optimizer_with_attributes(HiGHS.Optimizer, MOI.Silent() => true)
|
||||
|
||||
# All units should have unknown initial conditions
|
||||
for g in sc.thermal_units
|
||||
@test g.initial_power === nothing
|
||||
@test g.initial_status === nothing
|
||||
for sc in instance.scenarios
|
||||
for g in sc.thermal_units
|
||||
@test g.initial_power === nothing
|
||||
@test g.initial_status === nothing
|
||||
end
|
||||
end
|
||||
|
||||
# Generate initial conditions
|
||||
UnitCommitment.generate_initial_conditions!(sc, optimizer)
|
||||
UnitCommitment.generate_initial_conditions!(instance, optimizer)
|
||||
|
||||
# All units should now have known initial conditions
|
||||
for g in sc.thermal_units
|
||||
@test g.initial_power !== nothing
|
||||
@test g.initial_status !== nothing
|
||||
for sc in instance.scenarios
|
||||
for g in sc.thermal_units
|
||||
@test g.initial_power !== nothing
|
||||
@test g.initial_status !== nothing
|
||||
end
|
||||
end
|
||||
|
||||
# TODO: Check that initial conditions are feasible
|
||||
|
||||
Reference in New Issue
Block a user