Cplex Python 如何避免打印输出

问题描述 投票:0回答:4

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

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打印其他信息?先感谢您。

python logging mathematical-optimization linear-programming cplex
4个回答
11
投票

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 打印任何内容的最佳方法。


3
投票

您可以使用

mip.display
参数调整详细级别:

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

请参阅此处了解更多信息。


0
投票

在 2024 年寻找一种抑制 docplex 日志记录的方法让我想到了这个问题,但是,接受的答案不适用于 docplex.mp 2.25...

唯一真正有帮助的是使用这个:

logging.getLogger("docplex.util.environment.logger").setLevel(logging. WARNING)

当然你也可以设置

logging.ERROR


-1
投票

试试这个:

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

由于 CPLEX 是商业产品,我无法测试我的解决方案是否有效。 但你明白了:分割字符串,只得到你想要的。

© www.soinside.com 2019 - 2024. All rights reserved.