From 11514b5de8e3998c0cd0c3273a9768cfd1f61d16 Mon Sep 17 00:00:00 2001 From: Alinson S Xavier Date: Thu, 27 May 2021 18:05:42 -0500 Subject: [PATCH] Rename fix!(instance) to repair! --- CHANGELOG.md | 7 +++++-- src/instance.jl | 6 +++--- src/validate.jl | 4 ++-- test/validate_test.jl | 14 +++++++------- 4 files changed, 17 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 97f3fff..efedb06 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,10 +4,12 @@ ### Added - Sub-hourly unit commitment +- Added function `UnitCommitment.write(filename, solution)` to simplify saving the solution to a file +- Added mathematical formulation to the documentation ### Changed - Renamed "Time (h)" parameter to "Time horizon (h)" -- `UnitCommitment.build_model` now returns a plain JuMP model. The +- The function `UnitCommitment.build_model` now returns a plain JuMP model. The struct `UnitCommitmentModel` has been completely removed. Accessing model elements can now be accomplished as follows: - `model.vars.x[idx]` becomes `model[:x][idx]` - `model.eqs.y[idx]` becomes `model[:eq_y][idx]` @@ -15,7 +17,8 @@ - `model.obj` becomes `model[:obj]` - `model.isf` becomes `model[:isf]` - `model.lodf` becomes `model[:lodf]` -- Function `UnitCommitment.get_solution` has been renamed to `UnitCommitment.solution` +- The function `UnitCommitment.get_solution` has been renamed to `UnitCommitment.solution` +- The function `UnitCommitment.fix!(instance)`, which attempts to repair an invalid instance, has been renamed to `UnitCommitment.repair!(instance)` ## [0.1.1] - 2020-11-16 diff --git a/src/instance.jl b/src/instance.jl index 5bb8dcd..facd9a3 100644 --- a/src/instance.jl +++ b/src/instance.jl @@ -127,7 +127,7 @@ function read(file::IO)::UnitCommitmentInstance return from_json(JSON.parse(file, dicttype=()->DefaultOrderedDict(nothing))) end -function from_json(json; fix=true) +function from_json(json; repair=true) units = Unit[] buses = Bus[] contingencies = Contingency[] @@ -313,8 +313,8 @@ function from_json(json; fix=true) reserves, contingencies, loads) - if fix - UnitCommitment.fix!(instance) + if repair + UnitCommitment.repair!(instance) end return instance end diff --git a/src/validate.jl b/src/validate.jl index 4f0b10c..19fdcf8 100644 --- a/src/validate.jl +++ b/src/validate.jl @@ -7,7 +7,7 @@ using Printf bin(x) = [xi > 0.5 for xi in x] """ - fix!(instance) + repair!(instance) Verifies that the given unit commitment instance is valid and automatically fixes some validation errors if possible, issuing a warning for each error found. @@ -15,7 +15,7 @@ If a validation error cannot be automatically fixed, issues an exception. Returns the number of validation errors found. """ -function fix!(instance::UnitCommitmentInstance)::Int +function repair!(instance::UnitCommitmentInstance)::Int n_errors = 0 for g in instance.units diff --git a/test/validate_test.jl b/test/validate_test.jl index b904358..3c46c24 100644 --- a/test/validate_test.jl +++ b/test/validate_test.jl @@ -8,14 +8,14 @@ parse_case14() = JSON.parse(GZip.gzopen("../instances/test/case14.json.gz"), dicttype=()->DefaultOrderedDict(nothing)) @testset "Validation" begin - @testset "fix!" begin + @testset "repair!" begin @testset "Cost curve should be convex" begin json = parse_case14() json["Generators"]["g1"]["Production cost curve (MW)"] = [100, 150, 200] json["Generators"]["g1"]["Production cost curve (\$)"] = [10, 25, 30] - instance = UnitCommitment.from_json(json, fix=false) - @test UnitCommitment.fix!(instance) == 4 + instance = UnitCommitment.from_json(json, repair=false) + @test UnitCommitment.repair!(instance) == 4 end @testset "Startup limit must be greater than Pmin" begin @@ -23,16 +23,16 @@ parse_case14() = JSON.parse(GZip.gzopen("../instances/test/case14.json.gz"), json["Generators"]["g1"]["Production cost curve (MW)"] = [100, 150] json["Generators"]["g1"]["Production cost curve (\$)"] = [100, 150] json["Generators"]["g1"]["Startup limit (MW)"] = 80 - instance = UnitCommitment.from_json(json, fix=false) - @test UnitCommitment.fix!(instance) == 1 + instance = UnitCommitment.from_json(json, repair=false) + @test UnitCommitment.repair!(instance) == 1 end @testset "Startup costs and delays must be increasing" begin json = parse_case14() json["Generators"]["g1"]["Startup costs (\$)"] = [300, 200, 100] json["Generators"]["g1"]["Startup delays (h)"] = [8, 4, 2] - instance = UnitCommitment.from_json(json, fix=false) - @test UnitCommitment.fix!(instance) == 4 + instance = UnitCommitment.from_json(json, repair=false) + @test UnitCommitment.repair!(instance) == 4 end end