Skip to content

Commit

Permalink
Consistently silence output from solvers.
Browse files Browse the repository at this point in the history
We adopt the solution outlined by @odow in jump-dev/JuMP.jl#1883 (comment).
  • Loading branch information
vtjeng committed Feb 17, 2023
1 parent 5c62d00 commit 5b8eba1
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 5 deletions.
4 changes: 4 additions & 0 deletions src/MIPVerify.jl
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@ function find_adversarial_example(
tightening_algorithm::TighteningAlgorithm = DEFAULT_TIGHTENING_ALGORITHM,
tightening_options::Dict = get_default_tightening_options(optimizer),
solve_if_predicted_in_targeted = true,
silence_output = false,
)::Dict

total_time = @elapsed begin
Expand Down Expand Up @@ -150,6 +151,9 @@ function find_adversarial_example(
end
set_optimizer(m, optimizer)
set_optimizer_attributes(m, main_solve_options...)
if silence_output
set_silent(m)
end
optimize!(m)
d[:SolveStatus] = JuMP.termination_status(m)
d[:SolveTime] = JuMP.solve_time(m)
Expand Down
13 changes: 8 additions & 5 deletions test/TestHelpers.jl
Original file line number Diff line number Diff line change
Expand Up @@ -27,22 +27,24 @@ const TEST_DEFAULT_TIGHTENING_ALGORITHM = lp
if Base.find_package("Gurobi") === nothing
using Cbc
optimizer = Cbc.Optimizer
main_solve_options = Dict("logLevel" => 0)
tightening_options = Dict("logLevel" => 0, "seconds" => 20)
main_solve_options = Dict()
tightening_options = Dict("seconds" => 20)
else
using Gurobi
env = Gurobi.Env()
optimizer = () -> Gurobi.Optimizer(env)
main_solve_options = Dict("OutputFlag" => 0)
tightening_options = Dict("OutputFlag" => 0, "TimeLimit" => 20)
main_solve_options = Dict()
tightening_options = Dict("TimeLimit" => 20)
end

get_optimizer() = optimizer
get_main_solve_options()::Dict = main_solve_options
get_tightening_options()::Dict = tightening_options

function get_new_model()::Model
return Model(optimizer_with_attributes(get_optimizer(), get_main_solve_options()...))
m = Model(optimizer_with_attributes(get_optimizer(), get_main_solve_options()...))
set_silent(m)
return m
end

"""
Expand Down Expand Up @@ -75,6 +77,7 @@ function test_find_adversarial_example(
tightening_options = get_tightening_options(),
tightening_algorithm = TEST_DEFAULT_TIGHTENING_ALGORITHM,
invert_target_selection = invert_target_selection,
silence_output = true,
)
if isnan(expected_objective_value)
@test d[:SolveStatus] == MathOptInterface.INFEASIBLE ||
Expand Down

0 comments on commit 5b8eba1

Please sign in to comment.