能否仅使用Google OR-Tools初始解策略而禁用局部搜索?
仅使用初始解策略求解CVRP(禁用局部搜索)的可行性及实现方法
完全可行,这是对比初始解与元启发式优化解差异的常用方法。
要实现仅使用初始解策略,只需要不设置局部搜索元启发式参数,或者将其显式设置为LOCAL_SEARCH_METAHEURISTIC_UNSPECIFIED即可。
修改后的代码示例:
# 设置初始解启发式策略 search_parameters = pywrapcp.DefaultRoutingSearchParameters() search_parameters.first_solution_strategy = ( routing_enums_pb2.FirstSolutionStrategy.PATH_CHEAPEST_ARC) # 禁用局部搜索:不设置local_search_metaheuristic,或显式指定为UNSPECIFIED # search_parameters.local_search_metaheuristic = ( # routing_enums_pb2.LocalSearchMetaheuristic.LOCAL_SEARCH_METAHEURISTIC_UNSPECIFIED) search_parameters.time_limit.FromSeconds(1)
- 当
local_search_metaheuristic未被显式设置时,OR-Tools默认不会启用任何局部搜索优化,只会执行初始解策略生成一个可行解。 - 如果你想更明确地禁用局部搜索,可以取消注释上述代码中的显式设置,使用
LOCAL_SEARCH_METAHEURISTIC_UNSPECIFIED枚举值。 - 这样生成的解就是仅由PATH_CHEAPEST_ARC策略得到的初始解,和启用GUIDED_LOCAL_SEARCH后的优化解对比,就能清晰看到元启发式算法对解质量的提升效果。
内容的提问来源于stack exchange,提问作者Cakra1337
相关产品推荐
相关产品推荐

