问题标签 [vehicle-routing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
315 浏览

c# - 使用 Google OR-Tools 解决车辆路径问题中的时间窗口约束 - 解决方案为空

我已经实现了 Google OR-Tools 的 VRPTW。我的时间矩阵如下

时间窗口是

几分钟后

但它不起作用。解决方案为空。

当我像这样更改时间窗口数组时

然后它起作用了。但我不需要这个时间窗口。

我究竟做错了什么?请提出任何解决方案?

0 投票
1 回答
260 浏览

python - 在python中使用类列表绘制图形

我正在尝试将我的数据绘制成路径图。我试图为 4 辆汽车创建一条随机路径,而这 4 辆汽车想要拜访 5 位客户。

输出是:

在这里,我为每个客户设置了 x 轴和 y 轴。我需要根据这些值绘制图表。我需要输出类似i.stack.imgur.com/FH7bE.png 我对 python 和绘制 g 的经验不足,因此不胜感激。

0 投票
1 回答
120 浏览

minizinc - minizinc中的Vehicle routing problem中的this是什么意思?

我看到了车辆路线问题的这段代码,对于我想要的术语,我只需要这些变量和限制:代码和限制,但我无法理解什么以及如何解释 TravelTimes 数据以及问题给出的结果,不它通过所有节点?路线是什么?结果。有3个节点吗?这是存款的节点。最后我无法理解节点之间的时间和结果。我会很感激有人解释。

我想知道从存款节点出发并经过所有其他节点的路线是什么。

0 投票
1 回答
370 浏览

mathematical-optimization - 我需要快速将 Savings heuristic 和 Nearest Neighbor 应用于一组 VRP(车辆路由问题)

我的编程知识不是零,但也仅此而已。我需要专门针对这些启发式运行一组 9 个车辆路线问题。

我尝试在 Python 2.7 上运行 VeRyPy,但我无法在整整一周内安装它需要的每个模块,它在某种程度上有效,但在特定问题上会失败。然后尝试编译VRPH,VS2008版本无法正常工作,无法编译VS2010版本。

必须有一个不需要那么多设置的解决方案,并且一旦我找不到我就可以让我运行我的问题。我的时间不多了,我需要的只是小费。

提前致谢

0 投票
2 回答
962 浏览

python - 如何解释从 Google OR Tools 返回的 Vehicle Routing Problem 解决方案?

我有一个使用 Google 的 OR Tools python 库实现的有效车辆路由问题解决方案。我有一个包含 9 个位置的时间矩阵,以及每个位置的时间窗口。所有值都以为单位。

(例如,第一个时间窗口是从 28800 到 28800。28800 秒相当于上午 8:00。我希望在上午 8:00 准确地访问这个位置,仓库

我有意只用一辆车来解决这个问题(主要是解决旅行销售员问题)。我相信我已经正确添加了我的尺寸,但我肯定会犯错 - 我的目的是让车辆在任何位置等待只要它愿意,只要它允许它解决车辆路线问题。我将上限最大值设置为 86400,因为一天有 86400 秒,我认为考虑到这些数据,这将是一个足够高的数字。

来源

输出

我的问题是关于解决方案为我计算的输出。我对解决方案中第二个和第三个位置的时间窗口感到困惑。我希望所有的时间窗口看起来都像结果的其余部分。当我处理我的解决方案时,solution.Min()和值在这个问题的范围内意味着什么?solution.Max()我在使用 OR Tools 时是否有任何明显的错误?

0 投票
1 回答
1309 浏览

python - 如何使用 Google OR 工具在 VRPTW 中添加分离、设置惩罚和防止某些位置被丢弃?

我有一个使用 Google 的 OR Tools python 库实现的有效车辆路由问题(使用 Time Windows)解决方案。我有一个包含 15 个位置的时间矩阵和每个位置的时间窗口。我还将每个地点的访问时间计入每次访问的成本中。所有值都以秒为单位。我有意只用一辆车来解决这个问题(主要是解决旅行销售员问题)。

如果它们阻止创建有效的解决方案,我不会尝试添加从解决方案中删除位置的功能。现在,如果我将每次访问的持续时间设置为 3600 秒,则无法访问所有 15 个位置。但是,如果我将每次访问的持续时间设置为 900 秒,那么所有 15 个位置都可以找到解决方案。我想添加一个析取,以允许在这些大持续时间的情况下创建解决方案,而不是失败,只需从解决方案中删除一个位置。

我有一些我不想从解决方案中删除的位置,所以我给了它们非常大的惩罚以确保它们不会被删除,而其他一些我指定的惩罚为零。但是现在,所有其他地点都被取消了,因为它们的罚款为零——我认为这是因为罚款低于过境成本,但我不完全确定这是否确实是原因。我应该如何允许从解决方案中删除位置,但防止其他位置被删除?

现在我添加的唯一代码是:

来源

输出

同样,如果我删除我添加的那 3 行代码,并将Duration数组中的所有值设置为等于 900 秒,则可以创建一个解决方案。但是当我增加持续时间时,无法创建解决方案。当我添加 Disjunction 并将所有惩罚设置为零时,解决方案会忽略除仓库之外的每个位置。我在使用 OR Tools 时是否有任何明显的错误?任何帮助将不胜感激!

0 投票
1 回答
482 浏览

constraint-programming - 载客量受限的载客车辆路线问题

我正在使用谷歌或工具来解决这个问题:

车辆总是从站台出发,所有重量都已装载到降落点。并且有他们必须装载重量的拾取点。游览必须在 10 小时的时间窗口内完成。

例子:

节点 = [A、B、C、D、E、F、G]

权重 = [50, 60, 30, 20, 80, 90, 40]

PointType = [D, D, P, D, P, D, D] 其中 D = 送货和 P = 取货

我已经尝试使用 OR Tools 中的Pickup Deliveries示例,并为每个 drop 使用虚拟拾取节点,为每个拾取使用虚拟 drop 节点。因此,具有独特的拾取和下降组合。

这种方法适用于多达 50-60 个位置,但求解器无法为大量位置返回任何解决方案(135 个位置,因此 135 * 2 = 270 个节点,因为每个节点都有一个虚拟节点)。

是否有另一种使用 OR 工具解决此问题的方法,不需要使用虚拟节点,从而有效降低节点总数?

0 投票
2 回答
1737 浏览

python - 如何绘制谷歌或工具车辆路线问题解决方案?

我正在使用 Google OR 工具在 Python 中解决一个简单的车辆路线问题。我想以类似于 Google 教程的方式绘制求解器返回的解决方案: Google OR Tools Vehicle Routing Problem Tutorial Solution

这是我在教程中使用的代码:

这是我得到的解决方案:

车辆 0 的路线:0 -> 93 -> 92 -> 91 -> 53 -> 56 -> 52 -> 51 -> 61 -> 62 -> 63 -> 64 -> 65 -> 68 -> 67 -> 66 -> 70 -> 69 -> 100 -> 99 -> 98 -> 97 -> 96 -> 94 -> 95 -> 0 路线距离:530m

车辆1的路线:0 -> 4 -> 5 -> 10 -> 9 -> 90 -> 89 -> 83 -> 82 -> 81 -> 87 -> 41 -> 44 -> 47 -> 49 -> 50 -> 14 -> 17 -> 19 -> 18 -> 20 -> 22 -> 23 -> 26 -> 31 -> 33 -> 0 路线距离:621m

车辆 2 的路线:0 -> 1 -> 2 -> 7 -> 8 -> 86 -> 88 -> 85 -> 84 -> 59 -> 60 -> 79 -> 76 -> 77 -> 74 -> 71 -> 72 -> 73 -> 75 -> 78 -> 80 -> 58 -> 57 -> 55 -> 54 -> 0 路线距离:614m

车辆 3 的路线:0 -> 3 -> 6 -> 43 -> 42 -> 46 -> 45 -> 48 -> 11 -> 12 -> 15 -> 13 -> 16 -> 25 -> 27 -> 29 -> 28 -> 30 -> 35 -> 36 -> 40 -> 37 -> 39 -> 38 -> 34 -> 32 -> 24 -> 21 -> 0 路线距离:620m

如何绘制类似于图像的此解决方案?

0 投票
1 回答
734 浏览

python - 如何在 Google OR-Tools 中指定路线的结束位置?

我有一个使用 Google 的 OR-Tools 在 Python 中实现的有效车辆路由问题解决方案。我有一个包含 16 个位置的时间矩阵、每个位置的时间窗口以及删除每个位置的惩罚。所有值都以为单位。我有意只用一辆车来解决这个问题(主要是解决旅行销售员问题)。只要需要,我允许车辆在任何位置等待。我为某些位置设置了极高的丢弃惩罚,因为我不希望它们被丢弃。

时间矩阵中表示的每个位置都会有一个时间窗口,它表示从一天开始的时间(28800 相当于上午 8:00,64800 相当于下午 6:00,等等)我设置上限最大值为 64800,因为我希望车辆在下午 6:00 之前完成。

我已将矩阵中的第一个位置指定为起始位置。
现在,我希望矩阵中的第二个位置成为结束位置。

我为此参考了OR-Tools 文档,但没有成功。我还在Stack Overflow 上发现了一个类似的问题,但没有找到任何特别有用的回答。

下面是我的源代码 - 它运行成功,但确实使用矩阵中的第二个位置作为它创建的解决方案中的结束位置。

来源

输出

我的理解是需要使用 RoutingIndexManager 进行主要更改。
就像 Google OR-Tools 文档似乎表明的那样,我尝试了以下更改:

但这会导致错误:

我在使用 OR Tools 时是否有任何明显的错误?我很乐意回答任何问题。任何帮助将不胜感激!谢谢!

0 投票
1 回答
128 浏览

c# - 使用带有 C# 的 or-tools 的车辆技能

我正在尝试使用带有 C# 的 or-tool来解决车辆路由问题。是否可以为车辆添加某种技能(产品类型)?例子:

  • 车辆1 - 技能[液体]
  • 车辆2 - 技能[液体,气体]
  • 车辆3 - 技能[固体]
  • pick1 - 类型 [气体]
  • Pickup2 - 类型 [液体]

所以pickup1只能被vehicle2接走,而pickup2可以被vehicle1或者vehicle2接走。