在前面的相关文章中,我们介绍了如何用OR-Tools的Callback方法打印求解器抛出的可行解信息《利用OR-Tools求解器的callback功能返回可行解》
前言
通过查看OR-Tools的官方手册可知,OR-Tools的Callback主要作用是接收求解器得到的可行解,每当得到一个可行解时会抛出给回调函数进行处理,在之前的文章中我们介绍了如何利用OR-Tools的Callback函数打印可行解信息,这篇文章我们介绍如何在OR-Tools的CP-SAT求解器当中,使用Callback回调函数控制搜索过程的结束。
比较特别的是,不同于Gurobi、SCIP这类的求解器,OR-Tools的CP-SAT求解器的回调函数对模型进行的修改,不再会影响到搜索算法的进程。相当于CP-SAT求解器只负责抛出搜索结果,并不会因模型变化而采用新模型。
演示案例(基于TSP问题)
为了使得读者也能够复现实验,这里我们直接生成一堆数据并固定下来进行实验。数据如下:
data = {
}
data