在jupyter笔记本中解决模型时,Gurobi日志默认在屏幕上打印。但是,如果将输出与日志文件的内容进行比较,则会看到Jupyter Notebook中的输出始终滞后后面的一个条目。例如,日志文件可以读取:
root simplex log ...
迭代客观原始INF。双伊米。时间
9680 -2.8670245E-06 0.000000E + 00 2.200658E + 00 5S
9687 0.00000000000E + 00 0.000000E + 00 0.000000E + 00 5S
在Jupyter笔记本中,您只看到:
root simplex log ...
迭代客观原始INF。双伊米。时间
9680 -2.8670245E-06 0.000000E + 00 2.200658E + 00 5S
这是由于Jupyter笔记本缓冲区的方式打印陈述。这可以通过在ipython中运行示例来验证这一点(即python命令行界面)。当这种方式解决模型时,屏幕上的输出和日志文件始终匹配。
要解决此问题,可以使用这堆栈溢出的代码片段,实现了无缓冲班级。但是,采用这种方法预期了非常轻微的性能下降。