Minor changes to tests

pull/25/head
Alinson S. Xavier 3 years ago
parent 31e0613134
commit cb9334c0a3
Signed by: isoron
GPG Key ID: 0DA8E4B9E1109DCA

@ -6,17 +6,17 @@ using UnitCommitment, LinearAlgebra, Cbc, JuMP, JSON, GZip
@testset "read v0.2" begin
instance = UnitCommitment.read("$FIXTURES/ucjl-0.2.json.gz")
for sc in instance.scenarios
@test length(instance.scenarios) == 1
sc = instance.scenarios[1]
@test length(sc.reserves_by_name["r1"].amount) == 4
@test sc.units_by_name["g2"].reserves[1].name == "r1"
end
end
@testset "read v0.3" begin
instance = UnitCommitment.read("$FIXTURES/ucjl-0.3.json.gz")
for sc in instance.scenarios
@test length(instance.scenarios) == 1
sc = instance.scenarios[1]
@test length(sc.units) == 6
@test length(sc.buses) == 14
@test length(sc.lines) == 20
end
end

@ -6,7 +6,8 @@ using UnitCommitment, LinearAlgebra, Cbc, JuMP, JSON, GZip
@testset "read_benchmark" begin
instance = UnitCommitment.read("$FIXTURES/case14.json.gz")
for sc in instance.scenarios
@test length(instance.scenarios) == 1
sc = instance.scenarios[1]
@test length(sc.lines) == 20
@test length(sc.buses) == 14
@test length(sc.units) == 6
@ -110,7 +111,6 @@ using UnitCommitment, LinearAlgebra, Cbc, JuMP, JSON, GZip
@test load.demand == [50.0 for t in 1:4]
@test sc.price_sensitive_loads_by_name["ps1"].name == "ps1"
end
end
@testset "read_benchmark sub-hourly" begin
instance = UnitCommitment.read("$FIXTURES/case14-sub-hourly.json.gz")

@ -7,8 +7,8 @@ import UnitCommitment: _Violation, _offer, _query
@testset "_ViolationFilter" begin
instance = UnitCommitment.read("$FIXTURES/case14.json.gz")
sc = instance.scenarios[1]
filter = UnitCommitment._ViolationFilter(max_per_line = 1, max_total = 2)
for sc in instance.scenarios
_offer(
filter,
_Violation(
@ -81,4 +81,3 @@ import UnitCommitment: _Violation, _offer, _query
]
@test actual == expected
end
end

@ -7,7 +7,7 @@ import UnitCommitment: _Violation, _offer, _query
@testset "find_violations" begin
instance = UnitCommitment.read("$FIXTURES/case14.json.gz")
for sc in instance.scenarios
sc = instance.scenarios[1]
for line in sc.lines, t in 1:instance.time
line.normal_flow_limit[t] = 1.0
line.emergency_flow_limit[t] = 1.0
@ -35,4 +35,3 @@ import UnitCommitment: _Violation, _offer, _query
)
@test length(violations) == 20
end
end

@ -6,7 +6,7 @@ using UnitCommitment, Test, LinearAlgebra
@testset "_susceptance_matrix" begin
instance = UnitCommitment.read("$FIXTURES/case14.json.gz")
for sc in instance.scenarios
sc = instance.scenarios[1]
actual = UnitCommitment._susceptance_matrix(sc.lines)
@test size(actual) == (20, 20)
expected = Diagonal([
@ -33,11 +33,10 @@ using UnitCommitment, Test, LinearAlgebra
])
@test round.(actual, digits = 2) == expected
end
end
@testset "_reduced_incidence_matrix" begin
instance = UnitCommitment.read("$FIXTURES/case14.json.gz")
for sc in instance.scenarios
sc = instance.scenarios[1]
actual = UnitCommitment._reduced_incidence_matrix(
lines = sc.lines,
buses = sc.buses,
@ -82,11 +81,10 @@ end
@test actual[17, 13] == -1.0
@test actual[20, 13] == -1.0
end
end
@testset "_injection_shift_factors" begin
instance = UnitCommitment.read("$FIXTURES/case14.json.gz")
for sc in instance.scenarios
sc = instance.scenarios[1]
actual = UnitCommitment._injection_shift_factors(
lines = sc.lines,
buses = sc.buses,
@ -115,11 +113,10 @@ end
-0.0 -0.01 -0.01 0.01 0.14 -0.08 -0.08 -0.12 -0.07 0.03 0.2 0.24 -0.4
]
end
end
@testset "_line_outage_factors" begin
instance = UnitCommitment.read("$FIXTURES/case14.json.gz")
for sc in instance.scenarios
sc = instance.scenarios[1]
isf_before = UnitCommitment._injection_shift_factors(
lines = sc.lines,
buses = sc.buses,
@ -148,4 +145,3 @@ end
end
end
end
end

@ -8,7 +8,7 @@ using UnitCommitment, Cbc, JuMP
# Load instance
instance = UnitCommitment.read("$FIXTURES/case118-initcond.json.gz")
optimizer = optimizer_with_attributes(Cbc.Optimizer, "logLevel" => 0)
for sc in instance.scenarios
sc = instance.scenarios[1]
# All units should have unknown initial conditions
for g in sc.units
@test g.initial_power === nothing
@ -23,7 +23,6 @@ using UnitCommitment, Cbc, JuMP
@test g.initial_power !== nothing
@test g.initial_status !== nothing
end
end
# TODO: Check that initial conditions are feasible
end

@ -9,14 +9,17 @@ using Distributions
using Random
using UnitCommitment, Cbc, JuMP
get_instance() = UnitCommitment.read_benchmark("matpower/case118/2017-02-01")
function get_scenario()
return UnitCommitment.read_benchmark(
"matpower/case118/2017-02-01",
).scenarios[1]
end
system_load(sc) = sum(b.load for b in sc.buses)
test_approx(x, y) = @test isapprox(x, y, atol = 1e-3)
@testset "XavQiuAhm2021" begin
@testset "cost and load share" begin
instance = get_instance()
for sc in instance.scenarios
sc = get_scenario()
# Check original costs
unit = sc.units[10]
test_approx(unit.min_power_cost[1], 825.023)
@ -46,40 +49,17 @@ test_approx(x, y) = @test isapprox(x, y, atol = 1e-3)
# System load should not change
@test prev_system_load curr_system_load
end
end
@testset "load profile" begin
instance = get_instance()
for sc in instance.scenarios
sc = get_scenario()
# Check original load profile
@test round.(system_load(sc), digits = 1)[1:8] [
3059.5,
2983.2,
2937.5,
2953.9,
3073.1,
3356.4,
4068.5,
4018.8,
]
@test round.(system_load(sc), digits = 1)[1:8]
[3059.5, 2983.2, 2937.5, 2953.9, 3073.1, 3356.4, 4068.5, 4018.8]
randomize!(
sc,
XavQiuAhm2021.Randomization();
rng = MersenneTwister(42),
)
randomize!(sc, XavQiuAhm2021.Randomization(); rng = MersenneTwister(42))
# Check randomized load profile
@test round.(system_load(sc), digits = 1)[1:8] [
4854.7,
4849.2,
4732.7,
4848.2,
4948.4,
5231.1,
5874.8,
5934.8,
]
end
@test round.(system_load(sc), digits = 1)[1:8]
[4854.7, 4849.2, 4732.7, 4848.2, 4948.4, 5231.1, 5874.8, 5934.8]
end
end

@ -7,10 +7,10 @@ using UnitCommitment, LinearAlgebra, Cbc, JuMP, JSON, GZip
@testset "slice" begin
instance = UnitCommitment.read("$FIXTURES/case14.json.gz")
modified = UnitCommitment.slice(instance, 1:2)
sc = modified.scenarios[1]
# Should update all time-dependent fields
@test modified.time == 2
for sc in modified.scenarios
@test length(sc.power_balance_penalty) == 2
@test length(sc.reserves_by_name["r1"].amount) == 2
for u in sc.units
@ -35,7 +35,7 @@ using UnitCommitment, LinearAlgebra, Cbc, JuMP, JSON, GZip
@test length(ps.demand) == 2
@test length(ps.revenue) == 2
end
end
# Should be able to build model without errors
optimizer = optimizer_with_attributes(Cbc.Optimizer, "logLevel" => 0)
model = UnitCommitment.build_model(

@ -7,9 +7,7 @@ using UnitCommitment, LinearAlgebra, Cbc, JuMP, JSON
@testset "usage" begin
instance = UnitCommitment.read("$FIXTURES/case14.json.gz")
for sc in instance.scenarios
sc.power_balance_penalty = [100000 for _ in 1:instance.time]
end
for sc in instance.scenarios
sc.power_balance_penalty = [100_000 for _ in 1:instance.time]
for line in sc.lines, t in 1:4
line.normal_flow_limit[t] = 10.0
end

@ -17,8 +17,6 @@ end
json["Generators"]["g1"]["Production cost curve (MW)"] = [100, 150, 200]
json["Generators"]["g1"]["Production cost curve (\$)"] = [10, 25, 30]
sc = UnitCommitment._from_json(json, repair = false)
sc.name = "s1"
sc.probability = 1.0
@test UnitCommitment.repair!(sc) == 4
end

Loading…
Cancel
Save