Suppress mixed integer programming output [closed]
I am running code on a remote server in which I solve many small mixed integer programs(using the .solve()
method). I tested my code on my local machine with no issues. However, when I run it remotely it seems that the Sage installation there does not suppress output from .solve()
. I get many, many prints to the console which look like:
glp_exact: 224 rows, 196 columns, 588 non-zeros
GNU MP bignum library is being used
0: infsum = 2 (11)
47: infsum = 0 (11)
* 47: objval = 1.39285714285714 (12)
* 205: objval = 0.660714285714286 (5)
OPTIMAL SOLUTION FOUND
It would be very helpful to not have Sage constantly printing to the console; is there a way to suppress this output? Some sort of flag, maybe, when I run Sage?
EDIT: In response to David Coudert's comment, here is the kind of behavior I'm seeing, on a relevant snippet:
sage: def opt(x):
....: mip = MixedIntegerLinearProgram(maximization=False, solver="GLPK/exact")
....: mip.add_constraint(mip[0]+mip[1] <= 1)
....: mip.add_constraint(mip[0]-mip[1] <= 1)
....: mip.add_constraint(-mip[0]-mip[1] <= 1)
....: mip.add_constraint(-mip[0]+mip[1] <= 1)
....: mip.set_objective(mip[0]+x*mip[1])
....: return mip.solve()
....:
sage: [opt(n) for n in range(3)]
glp_exact: 4 rows, 2 columns, 8 non-zeros
GNU MP bignum library is being used
* 0: objval = 0 (0)
* 2: objval = -1 (0)
OPTIMAL SOLUTION FOUND
glp_exact: 4 rows, 2 columns, 8 non-zeros
GNU MP bignum library is being used
* 0: objval = 0 (0)
* 1: objval = -1 (0)
OPTIMAL SOLUTION FOUND
glp_exact: 4 rows, 2 columns, 8 non-zeros
GNU MP bignum library is being used
* 0: objval = 0 (0)
* 2: objval = -2 (0)
OPTIMAL SOLUTION FOUND
[-1.0, -1.0, -2.0]
I would only like to have the final line of output printed to the console, yet am also finding the three pieces from GLPK put there too.
EDIT 2: I realized I forgot to mention that I'm running Sage 7.4 and that I may have trouble installing CPLX or Gurobi on the server since I do not have admin privileges there. These appear to be the only solvers which allow for the "logfile"
approach.
Can you give a (minimal) example of the kind of code you use ? Also, have you tried to set the log filename
p.solver_parameter("logfile", "/path/to/some/logfile.txt")
orp.solver_parameter("logfile", "/dev/null")
? it seems that the output you get is what should be in the log file.@David Coudert, I have added a code snippet and output sample to the main post. Just to be totally certain, changing
.solver_parameter
will only do so for the GLPK output, yes? Since I am still interested in printing other content to the console.Since you use
"GLPK/exact"
, can you trymip.solver_parameter("verbosity_simplex", "GLP_MSG_OFF")
.You can find the list of parameters you can modify at https://doc.sagemath.org/html/en/refe...
I checked the interfaces we other solvers and currently we can only set the log file for
cplex
andgurobi
.I can not reproduce your issue with Sage
9.5.beta1
, i do not have any such noise. Perhaps could you just upgrade your version of Sage.@David Coudert, thank you very much! The following indeed seems to work (inserted immediately following the declaration of the
MixedIntegerLinearProgram
):@tmonteil I am not sure if I will be able to upgrade Sage on the server because I do not have admin privileges.