问题标签 [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 投票
1 回答
767 浏览

python - 如何删除 Google OR-Tools CVRP 中的最后一条路径(返回仓库)?

我正在实施用于解决 CVRP 的 google or-tools,其中每辆车从一个仓库 (0) 开始并返回到仓库 (0),来自此链接:https ://developers.google.com/optimization/routing/简历

这是我的代码:

此 python 代码在控制台上打印解决方案,如下所示:

车辆 0 的路线:

0 负载(0) -> 1 负载(1) -> 4 负载(5) -> 3 负载(7) -> 15 负载(15) -> 0 负载(15)

车辆1的路线:

0 负载(0) -> 14 负载(4) -> 16 负载(12) -> 10 负载(14) -> 2 负载(15) -> 0 负载(15)

...ETC

我想删除返回到 depot (0) 的最后一条路径,如下所示:

车辆 0 的路线:

0 加载(0) -> 1 加载(1) -> 4 加载(5) -> 3 加载(7) -> 15 加载(15)

车辆1的路线:

0 加载(0) -> 14 加载(4) -> 16 加载(12) -> 10 加载(14) -> 2 加载(15)

由于我是 python 新手,我正在为此苦苦挣扎。

如果有人能告诉我如何处理这个问题,我将不胜感激。

0 投票
1 回答
261 浏览

python - 具有时间序列的纸浆优化运输

我正在尝试使用 Python 中的 PuLP 在多个时间段内优化单个产品的运输。我面临一个用它形成目标函数的问题:

目标fn:

price是一个元组字典:整数对,例如 {(period1,origin1) : price1, (period2,origin1) : price2 等}。

你知道如何解决它吗?

0 投票
1 回答
88 浏览

or-tools - 为什么路由求解器不使用所有可用时间?

我正在尝试解决具有数百个取货和交付限制、时间窗口和需求的大型路由问题。在 2 秒内,求解器状态“未找到分配”。当然,如果它继续寻找解决方案的时间更长一点,它可能会找到一个解决方案吗?或者,如果它有证据证明问题不可行,它可以提供一些细节?这里发生了什么?

0 投票
1 回答
501 浏览

or-tools - 我应该如何测试第一个解决方案策略?

我正在尝试解决具有许多取货和交付限制以及时间窗口和需求的大型车辆路线问题。有这么多的第一搜索策略,我是一个新手用户,不知道先尝试哪个以及如何设置它。是否有一种蛮力求解方法可以尝试一个又一个求解器?我绝对应该尝试哪种首选解决方案策略?

0 投票
0 回答
52 浏览

optimization - 我应该将我的问题描述为 VRP 还是运输问题

请帮助我是否应该将以下问题建模为 VRP 或运输问题。

我要解决的问题是:

  • 我有多种产品要从多个仓库运送到 2 家商店。

  • 我有一个车队规模,每个仓库的车辆容量各不相同

  • 我知道每个节点上每种产品的供需需求。

约束是:

  • 一辆车从一个仓库到一个商店(不应该在一条路线上走多个仓库)

  • 偏好来自一个来源的供应满足一家商店的全部需求,而不是聚合来自单个来源的供应。

你能帮我理解这是什么类别的问题吗?

如果我将其建模为运输问题,我如何考虑车辆的容量?我没有遇到考虑到用于运输的车辆容量的运输问题。

0 投票
0 回答
401 浏览

or-tools - 带休息间隔的 VRP:如何避免旅行时间之间的休息间隔

我在 python 中使用 or-tools v7.3.7083 实现了带有时间窗口、中断和惩罚的 VRP。但我发现休息时间没有按预期安排。

我简化为一条路线来解释:

车辆 0 的午休时间:开始 (240) 持续时间 (60)

车辆 0 的路线:

0 加载(0),时间(0,0) -> ... -> 7 加载(6),时间(227,227) -> 4 加载(7),时间(319,319) -> ...

位置 7 需要 32 分钟才能到达位置 4。根据分配,车辆在前往位置 7 到 4 的过程中休息:

地点 7 -> +13 分钟 -> 午休(+60 分钟)-> +19 分钟 ->地点 4

但是,我想要的是车辆休息而不是去位置 4:

地点 7 -> +13 分钟 -> 午休(+60 分钟)-> +32 分钟 ->地点 4

或者更好的是,先去位置 4,而不是午休:

地点 7 -> +32 分钟 ->午休(+60 分钟) -> 地点 4

如何在模型中指定此约束?

附代码文件: https ://gist.github.com/MarioLeung/45a32aaa7423c262ecdc384fc710c248

附上时间矩阵的数据文件: https ://gist.github.com/MarioLeung/0b9f3e9af76715339c64f1f6f72e3313

0 投票
1 回答
98 浏览

python - 我想了解 ortool 的路由求解器中的 max_distance 是如何工作的,以及聚类地理位置的最佳距离是多少

我有纬度和经度形式的接送地点。我正在使用层次聚类根据他们的取货地点对地点进行聚类。

在这里,“pickDistance”是使用所有拾取纬度创建的邻近矩阵。使用形成的每个集群的距离矩阵,并获取拾取和放置位置,or 工具的路由求解器为每个集群提供多辆车的路线。

当我增加 cluster_distance 时,求解器继续执行,最后我取消执行并重置 cluster_distance 和 max_distance 直到我得到路线。

我想在这里了解一些事情:

  • 根据您对地理位置进行聚类,如何设置最佳 cluster_distance 以及最佳聚类方法是什么?

  • 路由求解器中的 max_distance 参数如何工作?而且,max_distance 是针对每辆车还是针对它将使用的所有车辆?

  • 有什么方法可以使路由求解器的 cluster_distance 和 max_distance 参数动态化,使其适用于集群中的任意数量的位置?

请帮助。

0 投票
1 回答
539 浏览

python-3.x - 车辆路线问题:链接变量“path (X)”和变量“Delivered_Quantity”时,PuLP 的“解决方案不可行”

试图最小化总行驶距离(使用纸浆),我得到了一个不可行的解决方案,虽然它显然是可行的。

当我链接变量“path (X)”和变量“Delivered_Quantity”时,解决方案变得不可行。在代码中,链接是在“卡车 t 交付的总数量不能超过卡车 t 的总吨位容量”的约束下完成的。

你知道有什么问题吗?

0 投票
0 回答
64 浏览

or-tools - 如何使用自定义决策构建器配置路由问题?

编辑:这个问题适用于了解或工具,特别是路由库的人:

我想增加对路由库的了解。我已阅读 or-tools 手册。我想将决策生成器传递给求解器。决策构建者应决定如何进行 nextVar 分配。

这是我的尝试:

爪哇:

似乎cpsolver.newSearch(db);没有任何效果。如何正确地将决策构建器传递给路由模型?

以下是有关搜索原语的手册部分:

https://acrogenesis.com/or-tools/documentation/user_manual/manual/search_primitives/out_of_the_box_search_primitives.html

0 投票
1 回答
287 浏览

optaplanner - 使用 optaplanner 解决 VRPMT 问题的最佳实践是什么?

我们目前的方法是多次运行求解器。我想知道是否有更好的方法。

一些解释:

多行程车辆路线问题 (VRPMT):车辆可以执行多条路线。