Reduce verbosity in Julia tests

pull/3/head
Alinson S. Xavier 5 years ago
parent df0a5e5b73
commit b3dc0884a5

@ -14,4 +14,4 @@ module MIPLearn
include("knapsack.jl") include("knapsack.jl")
export Instance, LearningSolver, InternalSolver, JuMPSolver export Instance, LearningSolver, InternalSolver, JuMPSolver
end # module end

@ -15,7 +15,7 @@ mutable struct JuMPSolverData
instance instance
model model
bin_vars bin_vars
solution solution::Union{Nothing,Dict{String,Dict{String,Float64}}}
end end
function varname_split(varname::String) function varname_split(varname::String)
@ -26,8 +26,18 @@ function varname_split(varname::String)
return m.captures[1], m.captures[2] return m.captures[1], m.captures[2]
end end
function set_solver_verbosity!(model::JuMP.Model, tee::Bool)
if tee
JuMP.unset_silent(model)
else
JuMP.set_silent(model)
end
end
@pydef mutable struct JuMPSolver <: InternalSolver @pydef mutable struct JuMPSolver <: InternalSolver
function __init__(self; optimizer=nothing) function __init__(self; optimizer)
self.data = JuMPSolverData(nothing, # basename_idx_to_var self.data = JuMPSolverData(nothing, # basename_idx_to_var
nothing, # var_to_basename_idx nothing, # var_to_basename_idx
optimizer, optimizer,
@ -39,7 +49,7 @@ end
end end
function add_constraint(self, constraint) function add_constraint(self, constraint)
@error "JuMPSolver: add_constraint not implemented" @warn "JuMPSolver: add_constraint not implemented"
end end
function set_warm_start(self, solution) function set_warm_start(self, solution)
@ -90,6 +100,7 @@ end
function solve(self; tee=false) function solve(self; tee=false)
@timeit "solve" begin @timeit "solve" begin
instance, model = self.data.instance, self.data.model instance, model = self.data.instance, self.data.model
set_solver_verbosity!(model, tee)
wallclock_time = 0 wallclock_time = 0
found_lazy = [] found_lazy = []
while true while true
@ -100,7 +111,7 @@ end
@timeit "find_violated_lazy_constraints" begin @timeit "find_violated_lazy_constraints" begin
violations = instance.find_violated_lazy_constraints(model) violations = instance.find_violated_lazy_constraints(model)
end end
@info "$(length(violations)) violations found" #@info "$(length(violations)) violations found"
if length(violations) == 0 if length(violations) == 0
break break
end end
@ -138,6 +149,7 @@ end
function solve_lp(self; tee=false) function solve_lp(self; tee=false)
@timeit "solve_lp" begin @timeit "solve_lp" begin
model = self.data.model model = self.data.model
set_solver_verbosity!(model, tee)
bin_vars = self.data.bin_vars bin_vars = self.data.bin_vars
@timeit "unset_binary" begin @timeit "unset_binary" begin
for var in bin_vars for var in bin_vars
@ -168,12 +180,12 @@ end
function _update_solution(self) function _update_solution(self)
var_to_basename_idx, model = self.data.var_to_basename_idx, self.data.model var_to_basename_idx, model = self.data.var_to_basename_idx, self.data.model
solution = Dict() solution = Dict{String,Dict{String,Float64}}()
for var in JuMP.all_variables(model) for var in JuMP.all_variables(model)
var in keys(var_to_basename_idx) || continue var in keys(var_to_basename_idx) || continue
basename, idx = var_to_basename_idx[var] basename, idx = var_to_basename_idx[var]
if !haskey(solution, basename) if !haskey(solution, basename)
solution[basename] = Dict() solution[basename] = Dict{String,Float64}()
end end
solution[basename][idx] = JuMP.value(var) solution[basename][idx] = JuMP.value(var)
end end
@ -181,19 +193,19 @@ end
end end
function set_gap_tolerance(self, gap_tolerance) function set_gap_tolerance(self, gap_tolerance)
@error "JuMPSolver: set_gap_tolerance not implemented" @warn "JuMPSolver: set_gap_tolerance not implemented"
end end
function set_node_limit(self) function set_node_limit(self)
@error "JuMPSolver: set_node_limit not implemented" @warn "JuMPSolver: set_node_limit not implemented"
end end
function set_threads(self, threads) function set_threads(self, threads)
@error "JuMPSolver: set_threads not implemented" @warn "JuMPSolver: set_threads not implemented"
end end
function set_branching_priorities(self, priorities) function set_branching_priorities(self, priorities)
@error "JuMPSolver: set_branching_priorities not implemented" @warn "JuMPSolver: set_branching_priorities not implemented"
end end
function set_time_limit(self, time_limit) function set_time_limit(self, time_limit)

@ -6,7 +6,7 @@ using Test
using PyCall using PyCall
logging = pyimport("logging") logging = pyimport("logging")
logging.basicConfig(format="%(levelname)10s %(message)s", level=logging.DEBUG) logging.basicConfig(format="%(levelname)10s %(message)s", level=logging.INFO)
@testset "MIPLearn" begin @testset "MIPLearn" begin
include("jump_solver_test.jl") include("jump_solver_test.jl")

Loading…
Cancel
Save