设置目标函数和约束后,我使用
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打印其他信息?先感谢您。
答案 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是商业广告,我无法测试我的解决方案是否有效。 但是你明白了:拆分字符串,只得到你想要的东西。