车辆路径算法?
Posted
技术标签:
【中文标题】车辆路径算法?【英文标题】:Vehicle routing algorithm? 【发布时间】:2012-11-26 02:03:36 【问题描述】:我有
一个仓库 一队运输机,每辆最多可载运 10 吨 几个客户。我怎样才能最大限度地增加运输车的负载并最大限度地减少旅行?
到目前为止,我使用 1d bin-packing 对运输工具进行分组,并使用 ant-colony-optimization 来缩短行程,但感觉不对。我读过背包算法?我能做得更好吗?
【问题讨论】:
这看起来像Multiple TSP 这是车辆路线问题。 OptaPlanner 等开源软件通过使用禁忌搜索和延迟接受等元启发式算法,每天为数万辆汽车解决这个问题。 【参考方案1】:这是经典的车辆路径问题 (VRP)。对于中小型实例,您可以通过制定(混合)整数问题并使用 MIP 求解器(例如 Gurobi)找到最佳解决方案。
应用启发式是很常见的。但是,它们不一定会产生最佳解决方案。该领域最重要的启发式算法是禁忌搜索、模拟退火和受生物学启发的各种算法。事实证明,这些启发式方法产生了相当好的解决方案,当涉及具有许多侧面约束的大规模问题时,它们是无可替代的。对于许多问题,它们甚至会产生最优解,但通常很难证明。
但是,理解和实施这些算法并非一日之功。
我实施了一个名为jsprit 的项目。 jsprit 是一个轻量级的 java 工具包,可以解决你的问题,让你分析生成的解决方案,例如通过可视化它们。它使用了一个大型邻域搜索,它结合了模拟退火和阈值接受(此处引用了应用的算法原理)。您将找到许多帮助您解决问题的示例。
一种简单的方法是在考虑车辆的固定成本的同时,尽量减少可变成本(无论您的成本衡量标准是什么,例如距离、时间、燃料或综合衡量标准)。我相信您最终会得到一个“最大限度地减少旅行”并适当利用您的运输工具的解决方案。如果您在设置问题时遇到问题,请随时直接与我联系。
【讨论】:
不,保存算法是最重要的算法。 +1 用于精确更正您自己问题的答案的附加信息。保存算法广泛用于构造简单 VRP 的初始解决方案,即为其他改进步骤/算法(例如 2-opt、Or-opt、Edge-Exchange 等)的初始解决方案。但是,一旦应用这些改进算法,您需要引导他们(有效地)通过搜索空间的东西/一个。在这里,提到的启发式或称之为元启发式开始发挥作用。【参考方案2】:你的问题可以用这个解决VRP的免费软件来解决 https://jsprit.github.io 在 Java 中或 https://github.com/mck-/Open-VRP 在 Lisp 中。
【讨论】:
我发现保存算法很容易理解。还有一个免费的php解决方案@phpclasses.org。【参考方案3】:A* 搜索(修改为最大成本路径)与 Microsoft Research 论文中描述的最短路径算法的组合可能值得研究:http://research.microsoft.com/pubs/154937/soda05.pdf
【讨论】:
但最短路径不是 tsp。在最短路径中,给出了开始和最后一个顶点。在 tsp 中,这一切都是未知的,在我的问题中,只给出了起点。 @Phpdevpad 你不想让你的卡车返回仓库吗? 端点也是已知的(仓库),但这是 tsp 而不是最短路径?最短路径是 A 到 B,tsp 是 A 到 B 到 A。【参考方案4】:我认为您的问题没有完美的解决方案。如果我做对了,你的问题就是帕累托最优。您可以优化您的路线或负载或您需要的车队数量(侧面限制日常工作时间可能也是一个问题)。您必须重视自己更重要的事情,例如由于燃料成本、汽车较少等原因,路线较短。
在我看来,您应该对您的客户进行地理分区,使每个分区的负载总和不大于 10 吨。之后,您可以在那个小问题上使用 TSP 来计算出完美的路线。主要的“魔法”是在分区步骤中完成的,如果你以一种好的方式解决了这个问题,你的问题可能会消失。
希望有所帮助
【讨论】:
我也考虑过背包问题,但背包只解决了一个实例,但我有一个舰队。我看到您的方法的问题也是分区,当 tsp 图满足三角形不等式并且从字面上看,路线的每个排列都是可能的时,它在地理上并没有真正意义。我想这只是让我发痒,因为它是帕累托最优的。 我明白了,帕累托最优也经常让我很安静;)。分区的重点是将问题分成不同的部分。你有一个地理背包之类的东西,我认为由于地点的原因,路径很短,它适合大多数供应商公司的区域方法。那个小子图上的 TSP 也应该很容易。否则,您必须解决带有侧面约束(运输车负载)的 Multi-TSP,我认为这非常困难,但我对您最终会做什么很感兴趣! 我使用了蛮力解决方案和希尔伯特曲线。问题是巨大的搜索空间,但它仍然比 1d-bin-packing 好很多。对于小客户来说可以很好的解决。比较价格也很好,因为最好的计划并不总是最便宜的。以上是关于车辆路径算法?的主要内容,如果未能解决你的问题,请参考以下文章
配送路径规划基于matlab遗传算法配送车辆路径规划含Matlab源码 1853期
配送路径规划基于matlab遗传算法求解带时间窗+带车辆速度的配送车辆路径规划问题含Matlab源码 256期
配送路径规划基于matlab遗传算法求解带时间窗+带车辆速度的配送车辆路径规划问题含Matlab源码 256期