【问题标题】:jsprit shipment with single pickup and multiple deliveryjsprit 单次取件和多次交付的发货
【发布时间】:2017-02-08 13:13:05
【问题描述】:

是否可以进行具有单个取货点但具有多个交货点的货件?

我的一个例子是一个自行车信使必须将信件从一个取件点分发到多个地址,信使必须先去取件点,然后再交付信件。我尝试为此制作多个货件(每个地址一个货件),但是取件服务时间没有意义,因为例如取件与 100 封信没有太大区别。

然后,我尝试制作单独的 Pickup 和 Delivery 工作。我做了一些限制,让取货工作在其他交付工作之前先完成。然后我阅读了 Delivery 类的文档,它指出该工作意味着在车辆起点(或仓库)取货,所以这种方法也没有意义。

还有其他方法吗?

【问题讨论】:

  • 每辆自行车是否只涉及一个上车点?同样“但是取货服务时间没有意义”......您可以将取货服务时间设置为与送货服务时间分开,因此只需在调用解决方案之前适当地缩放它,或者将数百个取货时间设为 0。如果您想使用 shipments 执行此操作,那将是一个更通用的解决方案
  • @roganjosh 我会像你说的那样尝试缩放。如果我可以先将货物分组会更有意义,因为可能有多个取件点。我可以将任意属性附加到shipment 吗?如果不是,我将使用shipmentname 属性对它们进行分组。
  • @roganjosh 当您说“在调用解决方案之前”时,您的意思是在我做vehicleRoutingAlgorithm.searchSolutions() 之前吗?因为,如果我是正确的,我只能在构建货物时设置服务时间
  • 对不起,我的措辞在那里没有帮助。我认为车辆路线算法有点像黑匣子。我有一个现实世界的问题,我需要弄清楚如何以对算法有意义的方式来表示它,所以当我“调用解决方案”时,我的意思是将问题作为一个整体提供给 jsprit,而不是一个方面的包。 “我可以在货件上附加任意属性吗?”我不确定你的意思。
  • 没关系,你真的很有帮助:)。至于任意属性,我已经检查过了,除非我写了另一个版本的 Shipment 可以包含就像Map<String, Object> 属性,但是VehicleRoutingProblem 不会接受它,因为它只检查com.graphhopper.jsprit.core.problem.job 下的类的实例。如果我尝试将我的Shipment 版本提供给vrp,它会抛出异常,抱怨我的班级不是instanceof 原来的Shipment,所以我求助于使用货件名称来保留我的分组信息.

标签: jsprit


【解决方案1】:

如果其他人对此有疑问,我希望这个答案可以提供帮助。

基本上我只是像@roganjosh 所说的那样将 Shipment Pickup 服务时间设置为 0,但随后我将外出旅行时间与取货服务时间相加。这和获得解决方案后的后处理应该可以工作。

这是基于graphhopper板上here的帖子

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-24
    • 1970-01-01
    • 1970-01-01
    • 2015-08-03
    • 2016-07-10
    • 1970-01-01
    • 2017-11-17
    相关资源
    最近更新 更多