解决车辆路线以优化成本
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 矩阵创建车辆路线优化问题,同时仅取消结束位置?