设置目标函数和约束后,我使用
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打印其他信息?先感谢您。
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)
将禁用所有输出。 您还可以指定输出文件,而不是“无”。 您还可以设置几个参数来控制 cplex 输出的详细程度,但这是防止 cplex 打印任何内容的最佳方法。
您可以使用
mip.display
参数调整详细级别:
# where c is a Cplex object
c.parameters.mip.display.set(0)
请参阅此处了解更多信息。
在 2024 年寻找一种抑制 docplex 日志记录的方法让我想到了这个问题,但是,接受的答案不适用于 docplex.mp 2.25...
唯一真正有帮助的是使用这个:
logging.getLogger("docplex.util.environment.logger").setLevel(logging. WARNING)
当然你也可以设置
logging.ERROR
试试这个:
ans = prob.solution.get_objective_value()
print ans.split('\n')[-1]
由于 CPLEX 是商业产品,我无法测试我的解决方案是否有效。 但你明白了:分割字符串,只得到你想要的。