问题描述
我想知道如何在CVRP上下文中最小化全局范围(makespan)。我在下面引用:
distance_dimension.SetGlobalSpanCostCoefficient(100)
作为一个非常简化的示例,我尝试使用上述 SetGlobalSpanCostCoefficient(100)解决CVRP示例(https://developers.google.com/optimization/routing/cvrp)。
但是,无论是否设置 SetGlobalSpanCostCoefficient(100),结果都不会不同。
我增加了车辆数量以显示差异,但增加的车辆仍处于闲置状态。这对于最小化全局范围是不够的。我还尝试将较大的数字(例如100)增加到更大的数字,但是解决方案仍然没有改变。
如何在最小化全局跨度的同时解决CVRP?
谢谢。
解决方法
通过为全局范围设置一个非空系数(默认值),可以将其添加到目标成本函数中,该函数由求解器最小化,因此,如果它成为主导因素,则“已经”最小化(与电弧成本的总和)
请注意示例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