车辆路线中的服务自动分配
Posted
技术标签:
【中文标题】车辆路线中的服务自动分配【英文标题】:Auto-assignment for service in vehicle routing 【发布时间】:2017-07-10 13:56:56 【问题描述】:我正在使用Jsprit 进行车辆路线规划,我对现有解决方案中新服务的自动分配感到震惊,是否有任何解决方法。
【问题讨论】:
您能否详细说明您认为是“自动分配”的内容?新服务应该交给您选择的预定司机吗? 不,它应该自动分配给适合算法的驱动程序,例如,如果我有一个解决方案,比如 3 个驱动程序的 10 个服务并且另一个服务进来但我已经有了我得到的解决方案通过针对 3 个驱动程序运行 10 个服务,我想要的只是将这项新服务自动分配给最适合某些约束的驱动程序。 并且您希望这 10 个服务(或新服务加入时的剩余服务)保持与先前解决方案中相同的路线和相同的顺序?如果是这样,那么您应该使用jsprit中的初始路由功能。 如果我正在计算一个解决方案,并且在 optaplanner.org 项目中提供服务,该怎么办。 【参考方案1】:赋予所有车辆自己的独特技能。任何预先解决的订单都必须在新问题中定义,以及它们最初分配到的车辆的技能要求(即在新订单之前的先前解决方案中)。只有没有预先确定的驾驶员技能(超出其可能具备的“真实”技能要求)的新订单才会出现问题。
Jsprit 在选择用于插入订单的车辆时非常聪明(它会针对每个新插入物预先过滤您的车队,以便在计算插入成本之前减少其选项)。因此,即使您不加载现有的解决方案,而是重新启动解决方案周期,就好像它完全是一个全新的问题一样,您之前解决的订单将很快(订单的一个插入周期) 回到他们应该乘坐的车辆上;每个旧订单只能用于一辆车。
编辑: Jsprit 在单个问题之外是没有状态的。您想要做的事情需要额外的 有状态的东西,因此您需要额外的东西来监控它并以适当的方式将数据传递给 jsprit。然后,您可以“劫持”jsprit 核心中现有的硬约束以传递新状态。
【讨论】:
以上是关于车辆路线中的服务自动分配的主要内容,如果未能解决你的问题,请参考以下文章
ios学习路线—Objective-C(堆(heap)和栈(stack))