解决车辆路线以优化成本

Posted

技术标签:

【中文标题】解决车辆路线以优化成本【英文标题】:Solving vehicle routing for cost optimization 【发布时间】:2016-06-07 12:26:36 【问题描述】:

我必须解决生产级应用程序的车辆路线问题。

问题陈述:-

车辆有:-

类型 容量 舰队时间 成本 = 固定成本 + 可变成本 如果我们在 Fleet Time 之后使用车辆,则会增加可变成本。

上车地点:-

要拾取的负载。我们必须承担所有的负载 我们可以取货的时间段。 拣货所用的时间。

目的地点:-

车辆只能在该时间段内到达。 卸载所用的时间。

车辆可以重新回到起点,也可以直接到达目的地。

目的地点将与上车点相距一定距离。因此,多辆小型车辆可以在一个点相遇(可以是起点,或者我们将始终定义该点),然后将其运送到大型车辆。

较大的车辆可以直接到达目的地。

我们也可以只运行较大的车辆。它将从所有点拾取负载。然后前往目的地。

如果我得到否决就好了。车辆也作为路线输出的一部分。

我是这个领域的新手。 jsprit 或者 optaplanner 可以提供解决方案吗?

【问题讨论】:

这也是OptaPlanner的典型案例。见this video on VRPTW。你可以混合接送和下车吗?例如,出租车或救护车不能单独接载 2 名乘客,但 DHL 或 Fedex 可以在下车前在多个地点接载。这会影响域模型。 是的,我们可以混合接送服务。它类似于 DHL 或 Fedex。 取件可以直接派送(不用回车厂)吗? 我们可以处理这样的情况吗:- 多辆小型车辆可以在单点相遇(可以是起点,或者我们将始终定义该点),然后将其运送到较大的车辆。较大的车辆可以直接到达目的地。如何对该点进行建模? 是的,可以直接派送,无需遣返。我们有一辆非常大的卡车。小货车可以到那辆卡车,卡车可以去目的地。无需去仓库。卡车位置将由我们定义。 【参考方案1】:

我可以说 jsprit 和 optaplanner 都可以解决这个问题。我对jsprit比较熟悉。 jsprit 中有很多例子,你也可以试试。 你可以从一个简单的例子开始: https://github.com/graphhopper/jsprit/blob/master/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleExample.java

然后是有时间窗口的取件和交付问题的示例。 https://github.com/graphhopper/jsprit/blob/master/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/PickupAndDeliveryExample.java

【讨论】:

在 Jsprit 中,我们如何去除约束“总是返回到同一个仓库”?? 我们也可以处理这样的情况:- 多辆小型车辆可以在一个点相遇(可以是起点,或者我们将始终定义该点),然后将其运送到较大的车辆。较大的车辆可以直接到达目的地。 @T.J.您需要使用 builder.setReturnToDepot(false) 来移除约束

以上是关于解决车辆路线以优化成本的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 or-tools 和 google-distance 矩阵创建车辆路线优化问题,同时仅取消结束位置?

车辆路线中的服务自动分配

旅行推销员/车辆路线用例的最佳实现

OR-Tools - 车辆路线问题 - 防止从初始解决方案中删除节点

解决方案车辆监控技术解决运输车队难管理,成本难降低等问题

配送路径规划基于matlab遗传算法连锁超市配送路线规划含Matlab源码 2347期