【发布时间】:2017-02-08 13:13:05
【问题描述】:
是否可以进行具有单个取货点但具有多个交货点的货件?
我的一个例子是一个自行车信使必须将信件从一个取件点分发到多个地址,信使必须先去取件点,然后再交付信件。我尝试为此制作多个货件(每个地址一个货件),但是取件服务时间没有意义,因为例如取件与 100 封信没有太大区别。
然后,我尝试制作单独的 Pickup 和 Delivery 工作。我做了一些限制,让取货工作在其他交付工作之前先完成。然后我阅读了 Delivery 类的文档,它指出该工作意味着在车辆起点(或仓库)取货,所以这种方法也没有意义。
还有其他方法吗?
【问题讨论】:
-
每辆自行车是否只涉及一个上车点?同样“但是取货服务时间没有意义”......您可以将取货服务时间设置为与送货服务时间分开,因此只需在调用解决方案之前适当地缩放它,或者将数百个取货时间设为 0。如果您想使用
shipments执行此操作,那将是一个更通用的解决方案 -
@roganjosh 我会像你说的那样尝试缩放。如果我可以先将货物分组会更有意义,因为可能有多个取件点。我可以将任意属性附加到
shipment吗?如果不是,我将使用shipment的name属性对它们进行分组。 -
@roganjosh 当您说“在调用解决方案之前”时,您的意思是在我做
vehicleRoutingAlgorithm.searchSolutions()之前吗?因为,如果我是正确的,我只能在构建货物时设置服务时间 -
对不起,我的措辞在那里没有帮助。我认为车辆路线算法有点像黑匣子。我有一个现实世界的问题,我需要弄清楚如何以对算法有意义的方式来表示它,所以当我“调用解决方案”时,我的意思是将问题作为一个整体提供给
jsprit,而不是一个方面的包。 “我可以在货件上附加任意属性吗?”我不确定你的意思。 -
没关系,你真的很有帮助:)。至于任意属性,我已经检查过了,除非我写了另一个版本的
Shipment可以包含就像Map<String, Object>属性,但是VehicleRoutingProblem不会接受它,因为它只检查com.graphhopper.jsprit.core.problem.job下的类的实例。如果我尝试将我的Shipment版本提供给vrp,它会抛出异常,抱怨我的班级不是instanceof原来的Shipment,所以我求助于使用货件名称来保留我的分组信息.
标签: jsprit