首页 > 解决方案 > 使用 Google OR 工具解决车辆路径问题 (CVRPTW) 所需的时间取决于车辆容量的排序

问题描述

我试图通过结合官方文档中提供的示例中的 CVRP 和 VRPTW 来创建 CVRPTW 解决方案。

由于代码很大,我无法将其粘贴在这里,所以我分享了一个 colab 笔记本,演示了一个重现问题的简短示例: https ://colab.research.google.com/drive/1YN-6kABqGqSkQKxOtWD6YA2ZDlP8RfqD?usp=sharing

在每个节点交付的数量是[0, 80, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1]

我有 22 辆车,21 辆容量为 25 的车辆和 1 辆容量为 600 的车辆。如果车辆按升序排序,则具有 14 个节点的示例需要 200 多秒才能解决,如果它们按降序排序,则相同的示例得到解决不到一秒钟。

我是第一次使用 Google OR Tools,所以我不知道这是否是预期的。我也尝试过添加引导式本地搜索,但是当我添加时间限制以停止它时,它会停止而没有给出解决方案。

我在 repo 中创建了一个问题,但它被转换为讨论。

https://github.com/google/or-tools/discussions/2554

我也在官方邮件列表中问过这个问题。

https://groups.google.com/g/or-tools-discuss/c/MHoMwkHQuoo

标签: pythonor-toolsvehicle-routing

解决方案


这是 OR 求解器的一个众所周知的特性。因为它们包含许多启发式方法,所以它们对模型中变量或约束的顺序非常敏感。


推荐阅读