Just came across this old problem. If you want to use parts of the output you can redirect stdout to a string:
function capture_stdout(f)
stdout_orig = stdout
(rd, wr) = redirect_stdout()
f()
close(wr)
redirect_stdout(stdout_orig)
read(rd, String)
end
s = capture_stdout() do
optimize!(model)
end
#print the summary (which starts with "Number of Iterations")
try
s[findlast("Number of Iterations", s)[1]:end] |> print
catch
print(s)
end
EDIT:
Digged a bit further and found that most solvers support some kind of loglevel setting, e.g.:
- Ipopt: “print_level”
- Cbc: “LogLevel”
- Clp: “logLevel”
These options can be set either when initialising the model, e.g.
model = Model(with_optimizer(Ipopt.Optimizer, tol = 1e-8, max_iter = 1000, print_level = 1))`
or afterwards using the MOI Api (which is currently not so nicely documented …)
MOI.set(model, MOI.RawParameter("print_level"), 1)