python - 车辆路径问题如何用or-tools只让部分团回车场?

标签 python or-tools vehicle-routing

在我尝试使用 Google OR-Tools 解决车辆路径问题 (VRP) 的实例中,只有某些路线(游览)应在起点(即车站)结束。

我可以编辑从每个位置到车站的距离。将它们全部设置为 0 将具有设置任意结束位置的效果,并且路线看起来有点“放射状”,以车站为中心。而设置从每个位置到车站的距离将使路线看起来“循环”。

问题是,如何对问题进行建模,以便只有某些路由(包含特定类型的节点)才是“循环的”?

最佳答案

这里有一些例子:
“径向”(从中心 0 开始)。 例如:https://github.com/google/or-tools/raw/stable/ortools/constraint_solver/doc/vrp_starts_ends_solution.svg?sanitize=true 来源:https://github.com/google/or-tools/blob/stable/ortools/constraint_solver/doc/VRP.md#multiple-starts-ends
注意:在此示例中,每辆车都有不同的起始节点,并且都使用相同的仓库结束节点,即 0

循环:(从仓库出发并返回)。
例如:https://github.com/google/or-tools/raw/stable/ortools/constraint_solver/doc/vrp_global_span_solution.svg?sanitize=true 来源:https://github.com/google/or-tools/blob/stable/ortools/constraint_solver/doc/VRP.md#global-span-constraints

只需创建一个虚拟节点,与您所说的任何节点的距离为零也保留您的仓库。

构建 RoutingIndexManager 时,您可以传递开始/结束列表,以便在结束列表中在虚拟节点或真实站点之间进行选择,以便车辆是否返回站点。

在“打印/显示”方法中,您可以检查结束节点索引并相应地绘制/打印...

注意:您可以在源代码树中找到用于生成这些 svg 的 python 脚本(我已经几个月没有运行它了,所以它可能会损坏(TODO:在其上添加 CI 作业 ^^))

关于python - 车辆路径问题如何用or-tools只让部分团回车场?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59825269/

相关文章:

python - 将Python输入转化为命令

python - 为什么 Surface.unlock 无法解锁表面以进行 blitting?

c++ - 将 OR-Tools 库添加到 Visual Studio

python - 时间窗口崩溃的容量限制车辆路径问题

python - 未实现错误: Wrong number or type of arguments for overloaded function 'new_RoutingModel'

python - 如何在 Windows 上安装 numpy 和 pandas

python - 如何将 CP-SAT 公式(Python 中)中的目标指定为所有决策变量值的最大值的最小化?

job-scheduling - 具有能力约束的护士调度

or-tools - SetGlobalSpanCoefficient 方法谷歌或工具