繁体   English   中英

车辆路线问题 - 如何完成/确定何时访问某些位置?

[英]Vehicle Routing Problem - How to finish/determine when certain locations are visited?

我有 VRP 问题。 我有车辆起始位置,我有距离矩阵。 我希望在访问某些位置时终止/完成解决方案。

所以我不希望它实际访问 location_matrix 的每个索引,但如果访问“必须访问”旁边的不同索引可以获得更好的解决方案,那么我没有问题。 因为你知道有时直接从 1 到 3 比 1-2-3 慢。 (访问 2 不是必需的,但将其作为快捷方式)

我定义了一个成本为 0 的虚拟仓库,我用它作为结束,因为如果你使用开始,你必须定义结束。 我把结尾 000 基本上结束了 position。 您可能会问为什么没有放置“工作”位置。 但这意味着他们必须到此为止。 所以它似乎不是最优的,因为例如一辆车可能真的靠近两个“工作”位置,但如果它终止/结束,因为它有 END 定义的车辆将停止。

我不知道如何使这项工作。 基本上我想要的是,如果某些位置被访问一次只是终止 - 这就是解决方案。 因此,如果工作是 (1,3,5) 并且车辆 1 访问了 1,3 而车辆 2 刚刚访问了 2,则应该完成。

如果我在 ortools 中使用求解器,它将像 TSP 问题一样尝试访问 distance_matrix 中的每个位置。 我不完全想要这个。 如果结果更好的解决方案它可以访问(它是否有意义?)但它应该关注“工作”位置以及如何更快地 go

潜在方法:计算仅包含“必须访问”位置的新距离矩阵,并使用此矩阵运行 VRP。

  • 计算仅包含“必须访问”位置的距离矩阵。
  • 每个单元格包含两个“必须访问”位置之间的最短路径。
  • 存储找到的所有成对最短路径。
  • 在此距离矩阵上运行常规 VRP。
  • 使用之前找到的最短路径重建完整路径。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM