【发布时间】:2019-10-07 07:49:31
【问题描述】:
我正在使用 OR-Tool 来解决 VRP 问题。我已经对文档中的示例问题进行了一些实验,并设法编写了一个正常运行的程序,但是,我不明白 SetGlobalSpanCostCoefficient 的目的以及如何正确设置它。根据this site, 它是全局跨度成本与所有路由中最大和最小维度值之差之间的系数。 那么,这个全局成本是所有路线成本的总和吗?它是根据 Dimension 的“容量”参数计算得出的,并且用作最大容量限制器。
我的代码中的问题是,除非我手动调整 AddDimension 函数中的容量(最大路线距离)和 globalSpanCostcoefficient,否则不使用某些 vihecles。 我有 1000 个节点: 距离分布(以米为单位)如下所示:
# Add Distance constraint.
distance_dimension_name = 'Distance'
routing.AddDimension(
transit_callback_index,
0, # no slack
25000, # vehicle maximum travel distance
True, # start cumul to zero
distance_dimension_name)
distance_dimension = routing.GetDimensionOrDie(distance_dimension_name)
distance_dimension.SetGlobalSpanCostCoefficient(100)
在这里,我得到的最大路线距离为 2610 米,有 5 辆车和 6 辆车,它聚集在两条路线上。 我试图添加一个计数维度,就像它在here 中所描述的那样,但即使对于 100 个节点,它也会变得太慢,并且结果与 5 辆车相同。
【问题讨论】: