升级or-tools至9.6后路由搜索参数构建报错,如何解决?
解决OR-Tools 9.6中路由搜索参数的BOOL_UNSPECIFIED错误
升级OR-Tools至9.6后,部分本地搜索邻域算子的参数不再允许默认的未指定状态,必须显式设置为BOOL_TRUE或BOOL_FALSE,你遇到的错误就是因为local_search_neighborhood_operator.use_shortest_path_swap_active参数未被正确赋值。
解决方法如下:
代码中显式设置参数
找到代码里配置RoutingSearchParameters的逻辑,添加对该参数的显式赋值:
// 获取默认搜索参数 RoutingSearchParameters params = DefaultRoutingSearchParameters(); // 根据业务需求设置为BOOL_TRUE或BOOL_FALSE params.local_search_neighborhood_operator.use_shortest_path_swap_active = operations_research::BoolProto::BOOL_TRUE; // 若不需要该特性,可设置为 // params.local_search_neighborhood_operator.use_shortest_path_swap_active = operations_research::BoolProto::BOOL_FALSE; // 将参数传入求解器 solver.SolveWithParameters(params);
通过命令行flags设置参数
如果你的程序是通过命令行flags加载配置,启动时添加对应参数:
--local_search_neighborhood_operator.use_shortest_path_swap_active=true
或者如果使用flag配置文件,在文件中添加一行:
local_search_neighborhood_operator.use_shortest_path_swap_active: true
若不确定该参数的最优值,可先设置为BOOL_TRUE测试,这是OR-Tools新版本中该参数的常见默认推荐配置,若不影响业务逻辑也可设为BOOL_FALSE。
内容的提问来源于stack exchange,提问作者Anis Limaiem
相关产品推荐
相关产品推荐

