如何提升SCIP求解器日志详细度以显示每步LP迭代
解决SCIP每一次LP迭代输出日志的问题
要实现每一次LP迭代都输出一行日志,仅设置display/verblevel=5是不够的,你需要配合调整几个专门控制LP迭代显示的SCIP参数:
关键参数设置
你需要在代码中添加以下参数配置:
SCIP_CALL( SCIPsetIntParam(scip, "display/verblevel", 5) ); // 核心参数:设置每1次LP迭代就输出日志 SCIP_CALL( SCIPsetIntParam(scip, "lp/iterdisplay", 1) ); // 确保LP迭代信息被包含在日志输出中 SCIP_CALL( SCIPsetIntParam(scip, "display/lpiterations", 1) );
参数说明
lp/iterdisplay: 这个参数控制LP迭代的日志输出频率,设为1时,每完成一次LP迭代就会生成一行日志,正好满足你需要看到LP iter=4、5、6、7、8、9、10每一步的需求。display/lpiterations: 该参数开启后,SCIP才会在日志中展示LP迭代的相关统计数据,必须设为1(TRUE)才能让迭代信息显示出来。display/verblevel=5: 这个设置保留即可,它确保SCIP允许输出更细粒度的调试和日志信息,是上述参数生效的前提。
效果对比
你当前的日志仅记录了部分LP迭代节点:
time | node | left |LP iter|LP it/n| mem |mdpt |frac |vars |cons |cols |rows |
0.0s| 1 | 0 | 4 | - | 6k| 0 | 0 | 6 | 200 | 6 | 200 |
0.0s| 1 | 0 | 7 | - | 6k| 0 | 0 | 8 | 200 | 8 | 200 |
0.0s| 1 | 0 | 10 | - | 6k| 0 | 0 | 9 | 200 | 9 | 200 |
...
调整参数后,你将会看到从LP iter=4到10的每一步都有对应的日志行输出,完整记录每一次迭代的状态变化。
内容的提问来源于stack exchange,提问作者Morpheus
相关产品推荐
相关产品推荐

