|
|
@ -4,6 +4,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
using UnitCommitment
|
|
|
|
using UnitCommitment
|
|
|
|
using JuMP
|
|
|
|
using JuMP
|
|
|
|
|
|
|
|
using Cbc
|
|
|
|
import UnitCommitment:
|
|
|
|
import UnitCommitment:
|
|
|
|
ArrCon2000,
|
|
|
|
ArrCon2000,
|
|
|
|
CarArr2006,
|
|
|
|
CarArr2006,
|
|
|
@ -13,23 +14,35 @@ import UnitCommitment:
|
|
|
|
KnuOstWat2018,
|
|
|
|
KnuOstWat2018,
|
|
|
|
MorLatRam2013,
|
|
|
|
MorLatRam2013,
|
|
|
|
PanGua2016,
|
|
|
|
PanGua2016,
|
|
|
|
XavQiuWanThi2019
|
|
|
|
XavQiuWanThi2019,
|
|
|
|
|
|
|
|
WanHob2016
|
|
|
|
|
|
|
|
|
|
|
|
if ENABLE_LARGE_TESTS
|
|
|
|
if ENABLE_LARGE_TESTS
|
|
|
|
using Gurobi
|
|
|
|
using Gurobi
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
function _small_test(formulation::Formulation)::Nothing
|
|
|
|
function _small_test(
|
|
|
|
instances = ["matpower/case118/2017-02-01", "test/case14"]
|
|
|
|
formulation::Formulation;
|
|
|
|
for instance in instances
|
|
|
|
instances::Array{String} = ["test/case14"],
|
|
|
|
# Should not crash
|
|
|
|
optimizer = optimizer_with_attributes(
|
|
|
|
@show "$(instance)"
|
|
|
|
Cbc.Optimizer,
|
|
|
|
UnitCommitment.build_model(
|
|
|
|
"logLevel" => 0,
|
|
|
|
instance = UnitCommitment.read_benchmark(instance),
|
|
|
|
)
|
|
|
|
|
|
|
|
)::Nothing
|
|
|
|
|
|
|
|
for instance_name in instances
|
|
|
|
|
|
|
|
instance = UnitCommitment.read_benchmark(instance_name)
|
|
|
|
|
|
|
|
model = UnitCommitment.build_model(
|
|
|
|
|
|
|
|
instance = instance,
|
|
|
|
formulation = formulation,
|
|
|
|
formulation = formulation,
|
|
|
|
|
|
|
|
optimizer = optimizer,
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
UnitCommitment.optimize!(
|
|
|
|
|
|
|
|
model,
|
|
|
|
|
|
|
|
XavQiuWanThi2019.Method(two_phase_gap = false, gap_limit = 0.1),
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
solution = UnitCommitment.solution(model)
|
|
|
|
|
|
|
|
@test UnitCommitment.validate(instance, solution)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
return
|
|
|
|
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
function _large_test(formulation::Formulation)::Nothing
|
|
|
|
function _large_test(formulation::Formulation)::Nothing
|
|
|
@ -80,5 +93,8 @@ end
|
|
|
|
_test(Formulation(pwl_costs = CarArr2006.PwlCosts()))
|
|
|
|
_test(Formulation(pwl_costs = CarArr2006.PwlCosts()))
|
|
|
|
@show "KnuOstWat2018 PwlCosts"
|
|
|
|
@show "KnuOstWat2018 PwlCosts"
|
|
|
|
_test(Formulation(pwl_costs = KnuOstWat2018.PwlCosts()))
|
|
|
|
_test(Formulation(pwl_costs = KnuOstWat2018.PwlCosts()))
|
|
|
|
@show "formulations completed"
|
|
|
|
_small_test(
|
|
|
|
|
|
|
|
Formulation(ramping = WanHob2016.Ramping()),
|
|
|
|
|
|
|
|
instances=["test/case14-flex"],
|
|
|
|
|
|
|
|
)
|
|
|
|
end
|
|
|
|
end
|
|
|
|