OR-Tools - 最小化每条路线覆盖的区域
Posted
技术标签:
【中文标题】OR-Tools - 最小化每条路线覆盖的区域【英文标题】:OR-Tools - Minimize area covered by every route 【发布时间】:2021-12-24 18:29:26 【问题描述】:我正在使用 OR-Tools 的 VRP 为一个城市的数百个交付生成路线。所有包裹都在同一个地点领取。目前,我正在最小化距离总和并限制每条路线的交付数量。
我想在成本函数中添加一个新成本,以最小化每条路线所覆盖的区域。背后的原因是许多路线在同一区域重叠,我希望每条路线的所有交付都在尽可能小的区域内。这可以帮助快递员只在城市的特定区域送货。
我对基本实现的想法是创建两个维度来跟踪从每条路线的第一次交付到最后一条路线的最小和最大经度和纬度(即,不考虑站点)。然后,我会根据最大值和最小值的差异添加成本。
但是,我找不到存储维度的最小值和最大值的方法。据我所知,维度回调是无状态的,不依赖于交付之间的先前连接,因此不能这样做。
有什么建议可以完成这个或类似的事情吗?
【问题讨论】:
【参考方案1】:我也想尝试一下,但是 AFAIK 使用 OR-Tools 是不可能的。正如您所说,距离回调在默认 API 中是无状态的。我听说过一些团队已经分叉了项目并对其进行了修改,使得距离回调接受 3 个参数,但我想这会相当麻烦。
我最好的建议是试用 Optaplanner,因为它更灵活,并且可以实现最小化边界框或最小化表面积等目标。过去我已经实现了这一点并取得了一些成功。
不过,请注意,这样的计算会大大降低求解器的速度。
【讨论】:
Optaplanner 和 OR-Tools 完全不同。 OR-Tools 包含真正的求解器(它们可以找到经过验证的最优解),Optaplanner 只是一种启发式算法(它不能说明最优性)。 @ErwinKalvelagen 我从来没有提到任何关于性能或优化质量的事情。我唯一的评论是,在车辆路线问题的背景下定义目标时,Optaplanner 比 OR-Tools 灵活得多。虽然 OR-Tools 使用真正的求解器是对的,但路由库确实也依赖于启发式算法,所以我不确定你的意思是它们属于不同的联盟。 我不会评论 optaplanner :-) 我确信它是一个很好的工具。现在,在解决交付问题的同时要求进行区域设计似乎是个坏主意,纬度/经度区域似乎不能很好地代表城市中的位置(w.r.t. 地区)。我将分两个阶段解决。一个在地理上将城市划分为多个地区。然后为每个区域分配 1 辆或更多车辆。然后使用路由库来制定每日交付计划。以上是关于OR-Tools - 最小化每条路线覆盖的区域的主要内容,如果未能解决你的问题,请参考以下文章