From 316d0bdf5a2028a58a1ecbf37ca5bc22fa90df2a Mon Sep 17 00:00:00 2001 From: Jun He Date: Fri, 5 May 2023 14:48:42 -0400 Subject: [PATCH] added profiled units in slice --- src/transform/slice.jl | 5 +++++ test/transform/slice_test.jl | 20 ++++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/src/transform/slice.jl b/src/transform/slice.jl index 051e105..3fbbdaa 100644 --- a/src/transform/slice.jl +++ b/src/transform/slice.jl @@ -39,6 +39,11 @@ function slice( s.cost = s.cost[range] end end + for pu in sc.profiled_units + pu.max_power = pu.max_power[range] + pu.min_power = pu.min_power[range] + pu.cost = pu.cost[range] + end for b in sc.buses b.load = b.load[range] end diff --git a/test/transform/slice_test.jl b/test/transform/slice_test.jl index f4bd8f5..6519cbd 100644 --- a/test/transform/slice_test.jl +++ b/test/transform/slice_test.jl @@ -44,3 +44,23 @@ using UnitCommitment, LinearAlgebra, Cbc, JuMP, JSON, GZip variable_names = true, ) end + +@testset "slice profiled units" begin + instance = UnitCommitment.read("$FIXTURES/case14-profiled.json.gz") + modified = UnitCommitment.slice(instance, 1:2) + sc = modified.scenarios[1] + + # Should update all time-dependent fields + for pu in sc.profiled_units + @test length(pu.max_power) == 2 + @test length(pu.min_power) == 2 + end + + # Should be able to build model without errors + optimizer = optimizer_with_attributes(Cbc.Optimizer, "logLevel" => 0) + model = UnitCommitment.build_model( + instance = modified, + optimizer = optimizer, + variable_names = true, + ) +end