Cplex Python如何避免打印输出

时间:2013-12-04 02:37:30

标签: python logging mathematical-optimization linear-programming cplex

设置目标函数和约束后,我使用

prob.solve()
print prob.solution.get_objective_value()

实际上,我只想打印目标值,但是,它显示了很多cplex的信息,

Tried aggregator 1 time.
LP Presolve eliminated 5 rows and 1 columns.
All rows and columns eliminated.
Presolve time = -0.00 sec. (0.00 ticks)
0.5

我只想显示最后一行0.5,如何避免Cplex打印其他信息?先感谢您。

3 个答案:

答案 0 :(得分:8)

cplex指定3个输出流:日志,错误,警告和结果。您可以使用命令禁用输出。 set_xxx_stream(无)。在您的示例中,

prob.set_log_stream(None)
prob.set_error_stream(None)
prob.set_warning_stream(None)
prob.set_results_stream(None)

将禁用所有输出。您也可以指定输出文件,而不是None。您还可以设置几个parameters来控制cplex输出的详细程度,但这是防止cplex打印任何内容的最佳方法。

答案 1 :(得分:1)

您可以使用mip.display参数调整详细程度:

# where c is a Cplex object
c.parameters.mip.display.set(0)

有关详细信息,请参阅here

答案 2 :(得分:-1)

试试这个:

 ans = prob.solution.get_objective_value()
 print ans.split('\n')[-1]

由于Cplex是商业广告,我无法测试我的解决方案是否有效。 但是你明白了:拆分字符串,只得到你想要的东西。