optimize: Return stats with violations

m2m
Alinson S. Xavier 1 year ago
parent d34378c660
commit bb880575ef

@ -2,7 +2,9 @@
# Copyright (C) 2020, UChicago Argonne, LLC. All rights reserved. # Copyright (C) 2020, UChicago Argonne, LLC. All rights reserved.
# Released under the modified BSD license. See COPYING.md for more details. # Released under the modified BSD license. See COPYING.md for more details.
function optimize!(model::JuMP.Model, method::XavQiuWanThi2019.Method)::Nothing using DataStructures
function optimize!(model::JuMP.Model, method::XavQiuWanThi2019.Method)::Dict
if !occursin("Gurobi", JuMP.solver_name(model)) if !occursin("Gurobi", JuMP.solver_name(model))
method.two_phase_gap = false method.two_phase_gap = false
end end
@ -22,6 +24,9 @@ function optimize!(model::JuMP.Model, method::XavQiuWanThi2019.Method)::Nothing
large_gap = true large_gap = true
end end
end end
stats = Dict(
"violations" => []
)
while true while true
time_elapsed = time() - initial_time time_elapsed = time() - initial_time
time_remaining = method.time_limit - time_elapsed time_remaining = method.time_limit - time_elapsed
@ -68,6 +73,7 @@ function optimize!(model::JuMP.Model, method::XavQiuWanThi2019.Method)::Nothing
if violations_found if violations_found
for (i, v) in enumerate(violations) for (i, v) in enumerate(violations)
append!(stats["violations"], v)
_enforce_transmission(model, v, model[:instance].scenarios[i]) _enforce_transmission(model, v, model[:instance].scenarios[i])
end end
else else
@ -80,5 +86,5 @@ function optimize!(model::JuMP.Model, method::XavQiuWanThi2019.Method)::Nothing
end end
end end
end end
return return stats
end end

@ -3,12 +3,12 @@
# Released under the modified BSD license. See COPYING.md for more details. # Released under the modified BSD license. See COPYING.md for more details.
""" """
optimize!(model::JuMP.Model)::Nothing optimize!(model::JuMP.Model)::Dict
Solve the given unit commitment model. Unlike `JuMP.optimize!`, this uses more Solve the given unit commitment model. Unlike `JuMP.optimize!`, this uses more
advanced methods to accelerate the solution process and to enforce transmission advanced methods to accelerate the solution process and to enforce transmission
and N-1 security constraints. and N-1 security constraints.
""" """
function optimize!(model::JuMP.Model)::Nothing function optimize!(model::JuMP.Model)::Dict
return UnitCommitment.optimize!(model, XavQiuWanThi2019.Method()) return UnitCommitment.optimize!(model, XavQiuWanThi2019.Method())
end end

Loading…
Cancel
Save