Google 用于 CVRP 的 OR-Tools,同时最小化全局跨度
Posted
技术标签:
【中文标题】Google 用于 CVRP 的 OR-Tools,同时最小化全局跨度【英文标题】:Google's OR-Tools for CVRP while minimizing global span 【发布时间】:2020-09-12 07:17:53 【问题描述】:我想知道如何在 CVRP 上下文中最小化全局跨度(makespan)。我参考如下:
distance_dimension.SetGlobalSpanCostCoefficient(100)
作为一个非常简化的例子,我尝试用上面的 SetGlobalSpanCostCoefficient(100) 解决 CVRP 例子 (https://developers.google.com/optimization/routing/cvrp)。
但是,无论有没有SetGlobalSpanCostCoefficient(100),结果都没有不同。
我增加了车辆数量以显示差异,但增加的车辆仍然处于闲置状态。这不足以最小化全局跨度。我还尝试将较大的数字(如 100)增加到更大的数字,但解决方案仍然没有改变。
如何在最小化全局跨度的同时解决 CVRP?
谢谢。
【问题讨论】:
您确定这不是最佳解决方案吗? 【参考方案1】:通过为全局跨度设置一个非空系数(默认),您将把它添加到求解器最小化的目标成本函数中,因此如果它成为主导因素,则它“已经”最小化(比较弧成本的总和)
注意示例 cvrp 不使用本地搜索...
search_parameters = pywrapcp.DefaultRoutingSearchParameters()
search_parameters.first_solution_strategy = (
routing_enums_pb2.FirstSolutionStrategy.PATH_CHEAPEST_ARC)
所以你应该先尝试启用它。
例如
search_parameters = pywrapcp.DefaultRoutingSearchParameters()
search_parameters.first_solution_strategy = (
routing_enums_pb2.FirstSolutionStrategy.PATH_CHEAPEST_ARC)
search_parameters.local_search_metaheuristic = (
routing_enums_pb2.LocalSearchMetaheuristic.GUIDED_LOCAL_SEARCH)
search_parameters.time_limit.FromSeconds(30)
search_parameters.log_search = True
【讨论】:
以上是关于Google 用于 CVRP 的 OR-Tools,同时最小化全局跨度的主要内容,如果未能解决你的问题,请参考以下文章
Google OR Tools CVRP - 车辆满足的需求超出了它的处理能力
Google OR-Tools(使用 SCIP 求解器) - 如何访问求解器找到的中间解决方案?