为什么 ORTOOLS 引导局部搜索,从考虑约束规划的可行解决方案开始?

why is the ORTOOLS guided local search, that starts with a feasible solution considered constraint programming?

我正在使用 ORTOOLS 库来解决 VRP 问题。我给它一个初步可行的解决方案来解决我的问题,满足我的问题的所有约束但不是最优的。然后 ORTOOLS 执行 GUIDED_LOCAL_SEARCH 启发式算法,不断扰动我的部分解决方案(有时可能使其不可行),直到它有望达到比我的初始解决方案更好的解决方案。

为什么要使用 constraint programming 求解器?我的理解是,经典的约束规划从一个不可行(可能为空)的解决方案开始,传播约束以缩小我的变量的范围,直到达到稳定状态,然后做出决定。然后它再次迭代直到解决问题或如果到达死胡同则回溯(想想数独)。

在进行小扰动时,这些能力(传播、回溯)以何种方式需要?

有两个原因。

1) 初始解启发式是快速 LS 启发式搜索和标准约束规划搜索的组合。

2) 整个局部搜索实现建立在传统的约束规划求解器之上,并使用约束和传播器来验证解决方案并完成它们。

参见:https://github.com/google/or-tools/issues/920