如何使cplex不输出到终端?

11

我正在使用IBM cplex优化器解决一个优化问题,但我不想要优化器输出的所有终端打印信息。在IloCplex或IloModel类中是否有一个成员可以关闭这个功能?这些打印信息涉及剪枝和迭代。终端打印会影响性能,而我的问题最终将涉及数百万个变量,因此我不想浪费时间处理这些多余的输出。谢谢。


2
在使用CPLEX求解具有数百万个变量的MIP模型时,这并不容易,但也并不罕见,并且默认的日志记录不会对解决方案的时间产生重大影响。一般来说,问题实例越大,每条日志消息执行的计算量就越多。(打印10个割平面的行与打印1000个割平面的行需要相同的时间,但计算1000个割平面所需的时间要长得多)。实际上,对于较大的问题,我通常会增加日志记录。 - David Nehme
1个回答

17

使用cplex / concert,您可以通过以下方式完全关闭cplex对控制台的记录:

cpx.setOut(env.getNullStream())

cpx是一个IloCplex对象。您还可以使用setOut函数将日志重定向到文件。

有几个cplex参数可以控制记录的内容,例如MIPInterval将设置在行之间搜索的MIP节点数量。将MIPDisplay设置为0将关闭除发现新解决方案外的割线显示,而MIPDisplay为5将显示有关每个lp子问题的详细信息。

与记录相关的参数包括MIPInterval、MIPDisplay、SimDisplay、BarDisplay和NetDisplay。

您可以使用setParam函数设置参数。

cpx.setParam(IloCplex::MIPInterval, 1000)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接