文章目录
1. 前言
随着数学规划求解器的功能越来越丰富,以及其中运用到的数学技巧、算法等的复杂化,使得求解器在求解问题的过程中,记录的日志信息会越来越多,这种密度高且详细的日志信息使我们只能将有限的注意力放在感兴趣的信息上,而忽略了其他绝大部分的可能有价值的信息。
针对这个问题,Gurobi 团队开发了专门的日志分析器 gurobi-logtools(下载地址),研究员 Dominik Krupke1 以此为灵感,基于Python的 streamlit 库开发了用于CP-SAT的日志分析工具 CP-SAT-Log-Analyzer(下载地址),通过清晰直观的可视化界面,将 CP-SAT 的求解日志分门别类地进行展示,极大地降低了约束规划初学者在模型调整、数据探索方面的难度。
CP-SAT 日志分析工具是基于 streamlit 开发的 Web 应用,具备交互功能,可以运行部署到本地或者服务器上,通过开放出的 API 可以实现快速分享。
streamlit 库是一个用于创建数据应用程序的 Python 库。它的主要作用是帮助用户快速搭建交互式的数据科学和机器学习应用程序,而无需深入了解前后端开发技术,学习曲线也较小。
2. CP-SAT 日志上传与分析
要开始使用 CP-SAT 求解日志分析工具,需要上传日志文件,为了分析器能正常识别,还需要保证上传的日志信息正确且完整。而完整的日志信息需要在求解器求解之后才能获取。
2.1 获取求解日志
这里以《【作业车间调度JSP】通过python调用OR-Tools的区间变量建模求解》上的 JSP 案例代码进行演示。
为了能使 CP-SAT 输出求解日志,需要在调用求解之前 solver.Solve(model)
,通过参数