Make tests completely silent; remove set_gap warnings on Cbc

This commit is contained in:
2022-04-16 10:11:33 -05:00
parent cda1e368fe
commit 16b0fec6cd
6 changed files with 20 additions and 39 deletions

View File

@@ -3,13 +3,12 @@
# Released under the modified BSD license. See COPYING.md for more details.
function optimize!(model::JuMP.Model, method::XavQiuWanThi2019.Method)::Nothing
if !occursin("Gurobi", JuMP.solver_name(model))
method.two_phase_gap = false
end
function set_gap(gap)
try
JuMP.set_optimizer_attribute(model, "MIPGap", gap)
@info @sprintf("MIP gap tolerance set to %f", gap)
catch
@warn "Could not change MIP gap tolerance"
end
JuMP.set_optimizer_attribute(model, "MIPGap", gap)
@info @sprintf("MIP gap tolerance set to %f", gap)
end
initial_time = time()
large_gap = false
@@ -17,8 +16,6 @@ function optimize!(model::JuMP.Model, method::XavQiuWanThi2019.Method)::Nothing
if has_transmission && method.two_phase_gap
set_gap(1e-2)
large_gap = true
else
set_gap(method.gap_limit)
end
while true
time_elapsed = time() - initial_time

View File

@@ -13,7 +13,7 @@ Lazy constraint solution method described in:
module XavQiuWanThi2019
import ..SolutionMethod
"""
struct Method
mutable struct Method
time_limit::Float64
gap_limit::Float64
two_phase_gap::Bool
@@ -27,7 +27,7 @@ Fields
- `time_limit`:
the time limit over the entire optimization procedure.
- `gap_limit`:
the desired relative optimality gap.
the desired relative optimality gap. Only used when `two_phase_gap=true`.
- `two_phase_gap`:
if true, solve the problem with large gap tolerance first, then reduce
the gap tolerance when no further violated constraints are found.
@@ -39,7 +39,7 @@ Fields
formulation per time period.
"""
struct Method <: SolutionMethod
mutable struct Method <: SolutionMethod
time_limit::Float64
gap_limit::Float64
two_phase_gap::Bool

View File

@@ -5,20 +5,11 @@
import Logging: min_enabled_level, shouldlog, handle_message
using Base.CoreLogging, Logging, Printf
struct TimeLogger <: AbstractLogger
Base.@kwdef struct TimeLogger <: AbstractLogger
initial_time::Float64
file::Union{Nothing,IOStream}
screen_log_level::Any
io_log_level::Any
end
function TimeLogger(;
initial_time::Float64,
file::Union{Nothing,IOStream} = nothing,
screen_log_level = CoreLogging.Info,
io_log_level = CoreLogging.Info,
)::TimeLogger
return TimeLogger(initial_time, file, screen_log_level, io_log_level)
file::Union{Nothing,IOStream} = nothing
screen_log_level::Any = CoreLogging.Info
io_log_level::Any = CoreLogging.Info
end
min_enabled_level(logger::TimeLogger) = logger.io_log_level
@@ -61,7 +52,12 @@ function handle_message(
end
end
function _setup_logger()
function _setup_logger(; level = CoreLogging.Info)
initial_time = time()
return global_logger(TimeLogger(initial_time = initial_time))
return global_logger(
TimeLogger(
initial_time = initial_time,
screen_log_level = level,
)
)
end