掌桥专利:专业的专利平台
掌桥专利
首页

基于列生成算法的车辆路径规划方法、装置和系统

文献发布时间:2023-06-19 13:46:35


基于列生成算法的车辆路径规划方法、装置和系统

技术领域

本发明涉及物流配送技术领域,尤其涉及一种基于列生成算法的车辆路径规划方法、装置和物流管理系统。

背景技术

车辆路径规划(Vehicle Routing Problem,VRP)问题是物流领域最经典的问题之一,物流企业在“最后一公里”的车辆配送环节需要用到大量的末端配送车辆,所占物流总成本较高,车辆路径规划算法则可以有效降低车辆使用数量和车辆行驶距离。此外,车辆路径规划算法还可以帮助配送车辆规划配送路线,从而提升客户体验、大幅度降低配送成本,因此车辆路径规划算法具有重要的理论与实践价值。

物流企业的车辆路径规划方法一般包括人工指派、启发式算法和精确求解算法三类。传统物流企业大多数采用人工指派的方法。以某个区域为例,配送员在该区域的中心仓出发并只负责配送该区域指定小区或者写字楼的物流订单,这种人工指派的方法相对简单,但是却无法考虑相邻小区或者相邻写字楼订单可以共同配送的情况,因此这种方式配送效率较低且占用人员较多;启发式车辆路径规划算法利用一些启发式的规则寻找车辆订单分配的近似较优解,其问题在于不同的启发式算法寻优效率不一样,且同一启发式算法每次计算的结果也可能不同,此外启发式算法还无法确定找到的解与最优解之间的差距,因此启发式算法的鲁棒性以及精确性无法得到有效保证;车辆路径规划精确求解方法是建立问题的整数规划模型,该类求解方法可以获得车辆路径规划的最优解。但是车辆路径规划问题是一个典型的组合优化问题,已经被证明是一个NP(NondeterministicPolynomial,不确定多项式)难题,在规模较大的情况下很难在有效的时间内获得理想最优解。

发明内容

为了解决现有技术的问题,本发明实施例提供了一种基于列生成算法的车辆路径规划方法、装置和系统。技术方案如下:

根据本发明的一方面,提供了一种基于列生成算法的车辆路径规划方法,所述方法包括:

当接收到路径规划信号时,获取当前物流节点待分配的订单数据;

根据所述订单数据,确定待规划的多个路径点,每个路径点对应一个或多个订单数据;

根据预设的扇形分组规则,以配送车辆统一出发节点为原点,将所述多个路径点划分为多个扇形初始分组;

根据所述多个扇形初始分组,确定子问题的总数目;

构建所述总数目对应的多个子问题,构建初始的主问题;

基于列生成算法,迭代求解所述多个子问题和主问题,确定待分配的一组可行车辆配送任务路径;其中,在每次列生成迭代中,每个子问题对应一个子问题构建分组,所述子问题构建分组至少包括一个扇形初始分组中的路径点。

可选的,所述基于列生成算法,迭代求解所述多个子问题和主问题,确定待分配的一组可行车辆配送任务路径,包括:

在每次列生成迭代中,求解当前主问题的松弛问题,获取对应一组可行车辆配送任务路径的初始可行解,以及所述初始可行解对应的每个路径点的影子价格;其中,第一次列生成迭代的当前主问题为所述初始的主问题;

根据所述每个路径点的影子价格,修正当前的多个子问题的目标函数系数,并求解所述当前的多个子问题,确定每个子问题的目标函数值和至少一个备选配送路径;

当存在至少一个子问题的目标函数值不满足迭代收敛条件时,选择所述至少一个子问题中每个子问题对应的备选配送路径,根据选择的备选配送路径更新所述当前主问题,得到下一次列生成迭代的主问题;执行下一次列生成迭代;

当每个子问题的目标函数值均满足迭代收敛条件时,,终止列生成迭代过程,求解所述当前主问题,确定待分配的一组可行车辆配送任务路径。

可选的,所述扇形分组规则包括等弧度规则、等数量规则和等资源占用规则;

所述等弧度规则是指每个扇形初始分组的弧度相等;

所述等数量规则是指每个扇形初始分组的路径点数量相等;

所述等资源占用规则是指每个扇形初始分组包括的订单总体积、订单总重量满足车辆能力约束。

可选的,所述子问题构建分组包括至少两个扇形初始分组中的路径点,并满足:每个子问题构建分组的并集为所述待规划的多个路径点;两两子问题构建分组的交集为空集;每个子问题构建分组中的扇形初始分组相邻。

可选的,在相邻两次列生成迭代中,第二次列生成迭代中的子问题构建分组k中,至少包括第一次列生成迭代中的子问题构建分组k和子问题构建分组k±1之间的两个相邻扇形初始分组,其中,k为大于1的整数。

可选的,所述主问题的目标函数为最小化路径总成本,约束条件至少包括访问所有路径点;

所述子问题的目标函数为最小化成本上升或最大化成本下降,约束条件至少包括以下一种或多种:每个路径点均存在来路和去路,每个路径点最多被访问一次,路径的起始点和终止点均为坐标原点,路径上路径点的订单总重量、订单总体积、总行驶里程和/或总行驶时间不超过相应的限制参数,每个路径的回路唯一。

可选的,所述路径规划信号的触发条件包括:

当达到设定周期时触发;和/或,

在当前物流节点待分配的订单数目达到设定数目时触发;和/或,

当接收到路径规划请求时触发。

可选的,所述方法还包括:

根据所述待分配的一组可行车辆配送任务路径中每个路径点对应的订单数据,确定每个可行车辆配送任务路径的第一优先级;

获取所述当前物流节点中待分配的至少一个司机的第二优先级;

按照优先级从高到低的顺序,将所述第一优先级和所述第二优先级一一配对,确定对所述至少一个司机分配的可行车辆配送任务路径。

可选的,所述根据所述订单数据,确定待规划的多个路径点,包括:

根据所述订单数据,确定每个订单的订单类型;

如果当前订单的订单类型为取件单,且当前订单的取件地点的第一范围内不存在可行司机,则将当前订单对应的路径点作为待规划的路径点;所述可行司机是指司机的剩余任务添加当前订单后,订单总重量、订单总体积、总行驶里程和/或总行驶时间不超过车辆当前的能力限制参数;

如果当前订单的订单类型为送件单,且所述当前物流节点不存在可更新的任务路径,则将当前订单对应的路径点作为待规划的路径点;所述可更新的任务路径是指上次触发路径规划时形成的尚未执行的任务路径,且添加当前订单后订单总重量、订单总体积、总行驶里程和/或总行驶时间不超过已分配的车辆当前的能力限制参数,且经过当前订单的送件地点的第二范围内;

所述方法还包括:

如果当前订单的订单类型为取件单,且当前订单的取件地点的第一范围内存在可行司机,则将当前订单添加到目标可行司机的剩余任务中,并更新所述目标可行司机当前的任务路径;

如果当前订单的订单类型为送件单,且所述当前物流节点存在可更新的任务路径,则将当前订单对应的路径点添加到可更新的目标任务路径中,更新所述目标任务路径。

可选的,所述方法还包括:

根据所述待分配的一组可行车辆配送任务路径,生成物流订单分配方案坐标图,所述物流订单分配方案坐标图包括作为坐标系原点的所述配送车辆统一出发节点和所述待分配的一组可行车辆配送任务路径,每个可行车辆配送任务路径中包括多个路径点和访问顺序;

在对任一司机分配任务路径之后,根据分配的任务路径,在地图上生成所述分配的任务路径的访问路线,所述访问路线是指基于实际道路的访问路线。

根据本发明的另一方面,提供了一种基于列生成算法的车辆路径规划装置,所述装置包括:

获取模块,用于当接收到路径规划信号时,获取当前物流节点待分配的订单数据;

确定模块,用于根据所述订单数据,确定待规划的多个路径点,每个路径点对应一个或多个订单数据;

分组模块,用于根据预设的扇形分组规则,以配送车辆统一出发节点为原点,将所述多个路径点划分为多个扇形初始分组;

算法模块,用于根据所述多个扇形初始分组,确定子问题的总数目;构建所述总数目对应的多个子问题,构建初始的主问题;基于列生成算法,迭代求解所述多个子问题和主问题,确定待分配的一组可行车辆配送任务路径;其中,在每次列生成迭代中,每个子问题对应一个子问题构建分组,所述子问题构建分组至少包括一个扇形初始分组中的路径点。

可选的,所述算法模块用于:

在每次列生成迭代中,求解当前主问题的松弛问题,获取对应一组可行车辆配送任务路径的初始可行解,以及所述初始可行解对应的每个路径点的影子价格;其中,第一次列生成迭代的当前主问题为所述初始的主问题;

根据所述每个路径点的影子价格,修正当前的多个子问题的目标函数系数,并求解所述当前的多个子问题,确定每个子问题的目标函数值和至少一个备选配送路径;

当存在至少一个子问题的目标函数值不满足迭代收敛条件时,选择所述至少一个子问题中每个子问题对应的备选配送路径,根据选择的备选配送路径更新所述当前的主问题,得到下一次列生成迭代的主问题;执行下一次列生成迭代;

当每个子问题的目标函数值均满足迭代收敛条件时,终止列生成迭代过程,求解所述当前主问题,确定待分配的一组可行车辆配送任务路径。

可选的,所述扇形分组规则包括等弧度规则、等数量规则和等资源占用规则;

所述等弧度规则是指每个扇形初始分组的弧度相等;

所述等数量规则是指每个扇形初始分组的路径点数量相等;

所述等资源占用规则是指每个扇形初始分组包括的订单总体积、订单总重量满足车辆能力约束。

可选的,所述子问题构建分组包括至少两个扇形初始分组中的路径点,并满足:每个子问题构建分组的并集为所述待规划的多个路径点;两两子问题构建分组的交集为空集;每个子问题构建分组中的扇形初始分组相邻。

可选的,在相邻两次列生成迭代中,第二次列生成迭代中的子问题构建分组k中,至少包括第一次列生成迭代中的子问题构建分组k和子问题构建分组k±1之间的两个相邻扇形初始分组,其中,k为大于1的整数。

可选的,所述主问题的目标函数为最小化路径总成本,约束条件至少包括访问所有路径点;

所述子问题的目标函数为最小化成本上升或最大化成本下降,约束条件至少包括以下一种或多种:每个路径点均存在来路和去路,每个路径点最多被访问一次,路径的起始点和终止点均为坐标原点,路径上路径点的订单总重量、订单总体积、总行驶里程和/或总行驶时间不超过相应的限制参数,每个路径的回路唯一。

可选的,所述路径规划信号的触发条件包括:

当达到设定周期时触发;和/或,

在当前物流节点待分配的订单数目达到设定数目时触发;和/或,

当接收到路径规划请求时触发。

可选的,所述装置还包括分配模块,所述分配模块用于:

根据所述待分配的一组可行车辆配送任务路径中每个路径点对应的订单数据,确定每个可行车辆配送任务路径的第一优先级;

获取所述当前物流节点中待分配的至少一个司机的第二优先级;

按照优先级从高到低的顺序,将所述第一优先级和所述第二优先级一一配对,确定对所述至少一个司机分配的可行车辆配送任务路径。

可选的,所述确定模块用于:

根据所述订单数据,确定每个订单的订单类型;

如果当前订单的订单类型为取件单,且当前订单的取件地点的第一范围内不存在可行司机,则将当前订单对应的路径点作为待规划的路径点;所述可行司机是指司机的剩余任务添加当前订单后,订单总重量、订单总体积、总行驶里程和/或总行驶时间不超过车辆当前的能力限制参数;

如果当前订单的订单类型为送件单,且所述当前物流节点不存在可更新的任务路径,则将当前订单对应的路径点作为待规划的路径点;所述可更新的任务路径是指上次触发路径规划时形成的尚未执行的任务路径,且添加当前订单后订单总重量、订单总体积、总行驶里程和/或总行驶时间不超过已分配的车辆当前的能力限制参数,且经过当前订单的送件地点的第二范围内;

所述确定模块还用于:

如果当前订单的订单类型为取件单,且当前订单的取件地点的第一范围内存在可行司机,则将当前订单添加到目标可行司机的剩余任务中,并更新所述目标可行司机当前的任务路径;

如果当前订单的订单类型为送件单,且所述当前物流节点存在可更新的任务路径,则将当前订单对应的路径点添加到可更新的目标任务路径中,更新所述目标任务路径。

可选的,所述装置还包括生成模块,所述生成模块用于:

根据所述待分配的一组可行车辆配送任务路径,生成物流订单分配方案坐标图,所述物流订单分配方案坐标图包括作为坐标系原点的所述配送车辆统一出发节点和所述待分配的一组可行车辆配送任务路径,每个可行车辆配送任务路径中包括多个路径点和访问顺序;

在对任一司机分配任务路径之后,根据分配的任务路径,在地图上生成所述分配的任务路径的访问路线,所述访问路线是指基于实际道路的访问路线。

根据本发明的另一方面,提供了一种物流管理系统,所述系统由终端、服务器和物流车辆构成,其中:

所述终端,用于当用户触发路径规划请求时,向所述服务器发送所述路径规划请求;

所述服务器,用于执行上述基于列生成算法的车辆路径规划方法;

所述物流车辆设置有智能检测设备,所述智能检测设备至少包括定位设备和能力检测设备,所述定位设备用于采集所述物流车辆的位置数据,所述能力检测设备用于采集所述物流车辆的能力数据,所述能力数据至少包括以下一种或多种:剩余容量数据、剩余载重数据、剩余行驶里程数据;

所述物流车辆,用于将所述智能检测设备采集的数据发送给所述服务器。

根据本发明的另一方面,提供了一种电子设备,包括:

处理器;以及

存储程序的存储器,

其中,所述程序包括指令,所述指令在由所述处理器执行时使所述处理器执行上述基于列生成算法的车辆路径规划方法。

根据本发明的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使计算机执行上述基于列生成算法的车辆路径规划方法。

本发明实施例中,服务器可以根据订单数据的信息进行扇形初始分组,并根据扇形初始分组的情况构建适用于当前情况的列生成算法模型。在列生成迭代的过程中,每个子问题具有对应的子问题构建分组,每个子问题构建分组包括有限数目个扇形初始分组的路径点,降低了求解复杂度,并且每个子问题可以并行求解。因此,通过本发明提供的车辆路径规划方法,可以有效提高计算效率,可以求解大规模的车辆路径规划问题。

附图说明

在下面结合附图对于示例性实施例的描述中,本发明的更多细节、特征和优点被公开,在附图中:

图1示出了根据本发明示例性实施例的实施环境示意图;

图2示出了根据本发明示例性实施例的车辆路径规划方法的流程图;

图3示出了根据本发明示例性实施例的路径点示意图;

图4示出了根据本发明示例性实施例的等弧度扇形初始分组示意图;

图5示出了根据本发明示例性实施例的等数量扇形初始分组示意图;

图6示出了根据本发明示例性实施例的等资源占用扇形初始分组示意图;

图7示出了根据本发明示例性实施例的动态滚动的子问题构建分组示意图;

图8示出了根据本发明示例性实施例的列生成算法流程图;

图9示出了根据本发明示例性实施例的车辆路径规划方法的流程图;

图10示出了根据本发明示例性实施例的车辆路径规划方法的流程图;

图11示出了根据本发明示例性实施例的物流订单分配方案坐标图;

图12示出了根据本发明示例性实施例的车辆路径规划装置的示意性框图;

图13示出了根据本发明示例性实施例的智能检测设备的示意性框图;

图14示出了能够用于实现本发明的实施例的示例性电子设备的结构框图。

具体实施方式

下面将参照附图更详细地描述本发明的实施例。虽然附图中显示了本发明的某些实施例,然而应当理解的是,本发明可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本发明。应当理解的是,本发明的附图及实施例仅用于示例性作用,并非用于限制本发明的保护范围。

应当理解,本发明的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本发明的范围在此方面不受限制。

本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。需要注意,本发明中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。

需要注意,本发明中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。

本发明实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。

为了清楚描述本发明实施例提供的方法,下面对所使用的专业术语进行介绍。

列生成算法:精确求解路径规划问题的一种巧妙算法,该算法将车辆路径规划问题分为主问题和子问题两部分。主问题是一个典型的集合覆盖问题,负责在已经获得的有限配送路径中寻找一个最优的路径组合;子问题是一个似旅行商问题,负责在受约束条件下寻找一个优化的可行路径。在求解过程中,主问题为子问题提供寻找优化路径的方向,子问题则为主问题提供新的、更好的路径备选方案,这种算法大大提高了精确算法的求解效率。经过我们利用扇区分组方式改进列生成算法,还可以降低求解复杂度,快速求解大规模的车辆路径规划问题。这一算法可以有效弥补人工指派和启发式算法的缺点,并可以显著降低精确求解算法的求解时间。

动态物流车辆路径规划:车辆路径规划问题的变形,该问题的特点在于存在实时到达的物流取/送任务订单、多车辆任务指派以及任务订单数量规模大等。

影子价格:又称为最优计划价格或计算价格。它是指依据一定原则确定的,能够反映投入物和产出物真实经济价值、反映市场供求状况、反映资源稀缺程度、使资源得到合理配置的价格。影子价格反映了社会经济处于某种最优状态下的资源稀缺程度和对最终产品的需求情况,有利于资源的最优配置。在本发明中,影子价格是指求解当前主问题的松弛问题后得到的对应一组可行车辆配送任务路径的可行解中,访问每个路径点的成本。

松弛问题:要求一部分或全部决策变量必须取整数值的规划问题称为整数规划问题。不考虑整数条件,由余下的目标函数和约束条件构成的规划问题称为该整数规划问题的松弛问题。

本发明提供了一种基于列生成算法的车辆路径规划方法,该方法可以用于动态物流车辆路径规划,具体可以用于物流订单分配、车辆任务指派和物流资源配置。如图1所示的实施环境示意图,该方法可以设置于物流管理系统,该物流管理系统可以由服务器、终端、物流车辆等构成,终端、物流车辆可以和服务器进行通信,服务器可以为物流管理系统提供后台服务。

当然,实际应用中物流管理系统还可以包括其他设备,例如智能穿戴设备,本实施例对此不作限定。为了方便介绍,本实施例以图1所示的设备为例。

服务器可以包括存储服务器和处理服务器,其中,存储服务器可以用于存储数据库,处理服务器可以用于车辆路径规划的计算,处理服务器可以向存储服务器进行数据交互。当然,存储与处理都可以由一个服务器完成,本发明实施例以由一个服务器实现为例。

数据库中可以存储有多个物流节点的数据。物流节点又称物流据点,是指物流网络中连接物流线路的结节处,是具有一定规模和综合服务功能的物流集结点。物流节点的类型包括以下一种或多种:转运型节点,储运型节点,集散型节点,配送型节点,综合性节点。

转运型节点,是指以连接不同运输方式为主要职能的节点。例如,转运型节点可以是铁道运输线上的货站、编组站、车站,不同运输方式之间的转运站、终点站,水运线上的港口、码头,空运中的空港等。一般而言,这类节点处于运输线上,以转运为主,所以货物在这类节点上停滞的时间较短。

储运型节点,是指以存放货物为主要职能的节点,货物在这类节点上停滞的时间较长。例如,储运型节点可以是储备仓库、营业仓库、中转仓库、货栈等。

集散型节点,是指以集散货物为主要职能的节点,集中处理货物的分拣、分类,通过各种运输方式分发配送各地。例如,集散型节点可以是物流集散中心。

配送型节点,是指以配送货物为主要职能的节点,在物流网络中一般处于末端的位置。例如,配送型节点可以是物流配送中心、配送网点等。

综合性节点,是指全面实现两种以上主要功能,并且在结点中并非独立完成各自功能,而是将若干功能有机结合于一体,有完善设施、有效衔接和谐调工艺的集约型结点。这种结点是适应物流大量化和复杂化,适应物流更为精密准确,在一个接点中要求实现多种转化而使物流系统简化、高效的要求出现的,是现代物流系统中结点发展的方向之一。

以一个物流节点为例,服务器的数据库中可以存储有以下数据:

1、当前任务状态数据:当前任务车辆的位置数据、车辆类型数据、剩余容量数据、剩余载重数据、剩余行驶里程数据,已完成任务数据,未完成任务数据;

2、物流节点数据:物流节点位置数据,编号数据,签到司机数据,待取订单数据,待送订单数据;

3、订单数据:订单类型数据,订单位置数据,订单重量数据,订单体积数据。

数据库中的部分数据可以从终端和物流车辆传输至服务器的数据得到。终端可以包括司机所使用的终端和物流节点管理员所使用的终端,还可以包括设置于物流节点的其他终端。例如,终端可以是智能电话、可穿戴设备、平板电脑、物流节点的控制设备等,本实施例对此不作限定。司机和管理员可以在终端上查看物流节点状态、任务状态等,还可以在终端上进行操作。

物流企业可以预先定义物流管理系统和数据库之间的数据通信方式,也即是API(Application Programming Interface,应用程序接口)。进而可以通过预设的API在数据库中获取运算所需的数据。

物流车辆上可以设置有智能检测设备,智能检测设备包括定位设备、能力检测设备等,实际应用中智能检测设备还可以包括其他设备用以实现其他功能,本实施例中不一一列举。定位设备可以实时采集物流车辆的位置数据,并将位置数据上传至服务器。能力检测设备可以用于采集当前车辆的能力数据,包括剩余容量数据、剩余载重数据、剩余行驶里程数据等,并将相应的数据上传至服务器。在实际应用中,定位设备可以包括GPS(GlobalPositioning System,全球定位系统)、北斗卫星导航系统等,能力检测设备可以包括容积传感器、重量传感器、油量传感器等。

下面将参照图2所示的车辆路径规划方法的流程图,对基于列生成算法的车辆路径规划方法进行介绍。

步骤201,当接收到路径规划信号时,服务器获取当前物流节点待分配的订单数据。

其中,路径规划信号的触发条件可以包括:当达到设定周期时触发;和/或,在当前物流节点待分配的订单数目达到设定数目时触发;和/或,当接收到路径规划请求时触发。

在一种可能的实施方式中,当前物流节点的管理员可以在物流管理系统中设置上述任一触发条件,也可以设置多种触发条件。下面分别对每种触发条件进行介绍。

第一种触发条件,当达到设定周期时触发。该设定周期可以根据实际需求进行设置,例如,可以是5-20分钟,包括但不限于5-20分钟,本实施例对设定周期的具体时间不作限定。周期可以由物流管理系统中的时钟进行监控,每当达到设定周期时,物流管理系统的服务器可以触发路径规划信号,并且可以将时钟归零,重新计时。

第二种触发条件,在当前物流节点待分配的订单数目达到设定数目时触发。该订单数目以根据实际需求进行设置,例如,可以是20-50件,包括但不限于20-50件,本实施例对设定数目的具体数目不作限定。订单数目可以由物流管理系统对存储的待分配的订单数据进行计数。或者,还可以由设置在物流节点中的计数器进行计数。每当达到设定数目时,物流管理系统的服务器可以触发路径规划信号。

第三种触发条件,当接收到路径规划请求时触发。管理员所使用的终端上可以展示物流管理系统的控制界面,例如,可以是在物流管理系统APP(Application,应用程序)中展示控制界面,也可以是在物流管理系统的网页中展示控制界面。控制界面中可以设置有路径规划的选项,根据实际需要,管理员可以点击该选项,触发路径规划请求。进而,终端可以向服务器发送该路径规划请求。

也即是说,路径规划信号可以由服务器主动触发,也可以在终端上手动触发。

当服务器接收到路径规划信号时,可以从数据库中的当前物流节点的物流节点数据中,获取待取订单数据和待送订单数据,并根据待取订单数据和待送订单数据,在订单数据中获取相应的待取订单和待送订单的订单数据,也即是得到了当前物流节点待分配的订单数据。

步骤202,服务器根据订单数据,确定待规划的多个路径点。

其中,每个路径点可以对应一个或多个订单数据。也即是说,当存在配送至同一地点的多个订单时,可以将该地点作为一个路径点,将上述多个订单的订单数据与之对应。

在一种可能的实施方式中,服务器可以从步骤201中获取到的订单数据中,获取订单位置数据。然后,服务器可以根据订单位置数据和物流节点位置数据,确定每个待分配的订单与物流节点的相对位置信息,根据该相对位置信息,构建多个路径点。路径点示意图如图3所示,原点表示当前物流节点的位置,其余各点表示各个订单的位置,当前物流节点的位置也即是配送车辆统一出发节点的位置。构建的路径点可以构成求解本次路径规划问题的解空间。

步骤203,服务器根据预设的扇形分组规则,以配送车辆统一出发节点为原点,将多个路径点划分为多个扇形初始分组。

其中,扇形分组规则包括但不限于等弧度规则、等数量规则和等资源占用规则。等弧度规则可以是指每个扇形初始分组的弧度相等;等数量规则可以是指每个扇形初始分组的路径点数量相等;等资源占用规则可以是指每个扇形初始分组包括的订单总体积、订单总重量满足车辆能力约束。

在一种可能的实施方式中,管理员可以对扇形分组规则进行预先设置,例如,对于等弧度规则,可以设置分组数目或者分组弧度;对于等数量规则,可以设置分组数目或者组内的路径点数量;对于等资源占用规则,可以设置分配每组的资源,例如车辆资源。然后,管理员还可以设置当前所使用的扇形分组规则,或者使用扇形分组规则的条件,本实施例对此不作限定。

当服务器执行步骤203的处理时,可以获取当前所使用的扇形分组规则,并且将配送车辆统一出发节点的位置作为原点,对步骤202中构建的多个路径点划分扇形初始分组。

根据等弧度规则划分的扇形初始分组如图4所示,示例性的,当设置的分组数目为8组或者分组弧度为45°时,可以将待规划的路径点划分为8个分组,每组的弧度为45°。本实施例对具体的分组数目和分组弧度,以及具体的划分方式不作限定。

根据等数量规则划分的扇形初始分组如图5所示,示例性的,当设置的分组数目为8组时,可以确定将待规划的路径点除以分组数目,得到每组的路径点数量,并根据每组的路径点数量划分为8个分组;或者,当设置的组内的路径点数量为4个时,将4个相邻的路径点作为一个分组,划分多个分组。本实施例对具体的分组数目和路径点数量,以及具体的划分方式不作限定。

根据等资源占用规则划分的扇形初始分组如图6所示,示例性的,分配每组的资源可以包括或换算为最大容积和最大重量,可以根据每个路径点对应的订单数据,计算分组的订单总体积和订单总重量,保证每组的订单总体积小于等于最大容积,订单总重量小于等于最大重量。本实施例对具体的分配资源和划分方式不作限定。

在实际应用中可能存在数据浮动的情况,无法保证100%均等,例如,在等数量规则下每组的路径点数量可以是4±1个。这样的情况下,管理员可以设置相应的浮动参数,本实施例对此不作限定。

步骤204,服务器根据多个扇形初始分组,确定子问题的总数目。

后续的列生成算法进行处理时,在每次列生成迭代中,每个子问题可以对应一个子问题构建分组,子问题构建分组可以至少包括一个扇形初始分组中的路径点。令子问题的子问题构建分组中扇形初始分组的数目为m,则m≥1。m的具体取值可以根据实际需要进行设置,本实施例对此不作限定。

可选的,子问题构建分组还可以包括至少两个扇形初始分组中的路径点,并满足:每个子问题构建分组的并集为待规划的多个路径点;两两子问题构建分组的交集为空集;每个子问题构建分组中的扇形初始分组相邻。。也即是,1<m<M,M为扇形分组总数。

在一种可能的实施方式中,服务器可以将扇形初始分组总数M除以m,对计算结果向上取整,得到子问题的第一数目。例如,当M=8,m=2时,可以计算得到子问题的第一数目为8/2=4个,意思是可以构建4个子问题,每个子问题的子问题构建分组可以对应2个扇形初始分组。在上述可选方案的基础上,子问题1的子问题构建分组可以包括扇形初始分组1-2,子问题2的子问题构建分组可以包括扇形初始分组3-4,子问题3的子问题构建分组可以包括扇形初始分组5-6,子问题4的子问题构建分组可以包括扇形初始分组7-8。

当然,当设计的子问题对应的子问题构建分组中包括1个扇形初始分组时,也可以将子问题的总数目设置为扇形初始分组的总数。步骤204的具体实现过程可以根据实际需要进行调整,本实施例对此不作限定。

步骤205,服务器构建上述总数目对应的多个子问题,构建初始的主问题。

在一种可能的实施方式中,服务器在步骤204中确定子问题的总数目后,可以对本次车辆路径规划问题所使用的列生成算法模型进行构建,也即是说,列生成算法模型可以包括主问题和子问题,本次问题中可以构建上述总数目对应的多个子问题。主问题和子问题的目标函数和约束条件可以预先进行设置,下面分别对主问题和子问题进行介绍。

1、主问题

主问题的目标函数可以为最小化路径总成本,约束条件可以至少包括访问所有路径点。

示例性的,假定所有车辆无差异,有N个路径点需要访问,用下标i,j表示某一个被访问的路径点;令r是一条从原点(即配送车辆统一出发节点)出发,访问若干路径点后返回原点的可行车辆配送任务路径,所有可行车辆配送任务路径集合为R,r∈R;令c

决策变量x

模型主问题(集合分割问题):

其中,目标函数是指最小化路径总成本,约束条件包括访问所有路径点和决策变量x

列生成的主问题是一个放松整数约束的集合分割问题,主问题约束矩阵的行数对应可行车辆配送任务路径的个数,主问题的列向量代表一个可行车辆配送任务路径,约束矩阵系数取值范围为{0,1}。例如,一个可行车辆配送任务路径是[0,1,2,6,3,0],表示路径从路径点0(即当前物流节点)出发后分别访问路径点1-2-6-3后返回路径点0,则对应的列向量为[1,1,1,0,0,1,0,...,0]

主问题的一组可行解可以设为存在N条可行车辆配送任务路径,也即是说,第i条可行路径从配送车辆统一出发节点出发,只访问路径点i即返回。在此基础上,服务器可以构建初始的主问题。由于初始的主问题只包括有限的可行车辆配送任务路径,因此是一个受限制的问题(可以称为限制主问题),并需要由子问题为其提供更好的备选配送路径,并最终找到一个使得总物流运输成本最小的涵盖所有物流订单的任务路径集合。

需要说明的是,上述列举的公式是为了清楚介绍本方案而提供的,实际应用中还可以具有其他的形式,本实施例对此不作限定。

2、子问题

子问题的目标函数可以为最小化成本上升或最大化成本下降,约束条件可以至少包括以下一种或多种:每个路径点均存在来路和去路,每个路径点最多被访问一次,路径的起始点和终止点均为坐标原点,路径上路径点的订单总重量、订单总体积、总行驶里程和/或总行驶时间不超过相应的限制参数,每个路径的回路唯一。

示例性的,模型子问题(拟旅行商问题):

u

其中,c

目标函数是指最小化成本上升,第一个约束条件是指每个路径点均存在来路和去路,第二个约束条件是指每个路径点最多被访问一次,第三个约束条件是指路径的起始点和终止点均为坐标原点,第四个约束条件是指每条路径上路径点的订单总重量、订单总体积、总行驶里程和/或总行驶时间不超过相应的限制参数,第五个约束条件是指每个路径的回路唯一,最后两个约束是对变量属性的约束。

上述c

上述q

列生成的子问题可以是一系列可以并行计算的似旅行商的0-1整数规划问题。每次列生成迭代可以求解若干个子问题,求解子问题数量取决于扇形初始分组数量。分组越多求解的子问题数量越多。求解每个子问题都可为主问题提供至少一个可行的备选配送路线,即在众多可行车辆配送任务路径中找到一个可以使路径总成本进一步下降的任务子集和相应的可行车辆配送任务路径,也即是说,子问题的目标是最小化总成本。该问题是一个NP难的问题,为提高求解效率,子问题并不需要在每次迭代中都找到理论最优解,算法可以人为规定求解每个子问题的最大允许时间(以秒计),以及可以允许的求解精度,当达到规定的迭代条件时就可终止本次迭代中子问题计算,并向主问题提供得到的计算结果。

需要说明的是,上述列举的公式是为了清楚介绍本方案而提供的,实际应用中还可以具有其他的形式,本实施例对此不作限定。例如,子问题的目标函数还可以是最大化成本下降max z=∑

本实施例中服务器构建的每个子问题可以采用相同的计算公式,不同点在于子问题构建分组的范围,每个子问题具有对应的子问题构建分组。也即是说,本发明提供的方法基于数据驱动模型构造,根据不同的数据量可以构建不同的列生成算法模型,以便适应实际应用中的数据量变动,可以提高系统鲁棒性。

步骤206,服务器基于列生成算法,迭代求解多个子问题和主问题,确定待分配的一组可行车辆配送任务路径。

在一种可能的实施方式中,每次列生成迭代时,子问题的子问题构建分组可以是固定的。也即是说,每次列生成迭代时,可以在固定的扇形初始分组内搜索车辆路径规划问题的最优解或次优解。

由于并不能保证问题的最优解或次优解一定落在每个扇形初始分组中,为了消除列生成子问题的分组屏障,在列生成迭代的过程中,可以按照预设规则对子问题的子问题构建分组进行动态调整。在此基础上,本实施例对步骤206提供了另一种可能的实施方式,对应于上述步骤204中子问题构建分组包括至少两个扇形初始分组中的路径点的情况。

在另一种可能的实施方式中,在相邻两次列生成迭代中,第二次列生成迭代中的子问题构建分组k中,至少包括第一次列生成迭代中的子问题构建分组k和子问题构建分组k±1之间的两个相邻扇形初始分组,其中,k为大于1的整数,子问题构建分组k±1是指与子问题构建分组k相邻的子问题构建分组。需要说明的是,此处的第一次列生成迭代和第二次列生成迭代是指相邻两次列生成迭代中的第一次和第二次,而不是整个列生成迭代过程中的第一次和第二次。子问题构建分组k和子问题构建分组k±1是指子问题构建分组k和子问题构建分组k+1,或,子问题构建分组k和子问题构建分组k-1。

如图7所示,第一次列生成迭代中,子问题1的子问题构建分组1可以包括扇形初始分组1-2,子问题2的子问题构建分组2可以包括扇形初始分组3-4,子问题3的子问题构建分组3可以包括扇形初始分组5-6,子问题4的子问题构建分组4可以包括扇形初始分组7-8;第二次列生成迭代中,子问题1的子问题构建分组1可以包括扇形初始分组2-3,子问题2的子问题构建分组2可以包括扇形初始分组4-5,子问题3的子问题构建分组3可以包括扇形初始分组6-7,子问题4的子问题构建分组4可以包括扇形初始分组8-1。其中,第二次列生成迭代中的子问题构建分组1包括第一次列生成迭代中子问题构建分组1的扇形初始分组2和子问题构建分组2的扇形初始分组3,消除了分组屏障。直观来讲,每次列生成迭代,子问题的子问题构建分组可以进行逆时针或顺时针滚动,直到迭代过程结束。通过动态滚动的方法,消除了固定分组会产生的分组屏障,提高了搜索可行路径的灵活性。

具体的,参照图8所示的列生成算法流程图,上述步骤206的处理如步骤2061-2064所示:

步骤2061,在每次列生成迭代中,求解当前主问题的松弛问题,获取对应一组可行车辆配送任务路径的初始可行解,以及初始可行解对应的每个路径点的影子价格。

其中,第一次列生成迭代的当前主问题可以为初始的主问题。

在一种可能的实施方式中,服务器可以求解放松整数约束的松弛主问题,确定对应一组可行车辆配送任务路径的可行解。

可选的,为保证在一定精度(gap值)下降低精确求解时间问题,可以延长求解初始的主问题的时长,以获得较好的初始可行解,在此基础上减少迭代次数,最终降低运算总时长。

进而,服务器可以在求解主问题得到的可行解的基础上,计算每个路径点i对应的影子价格y

步骤2062,根据每个路径点的影子价格,修正当前的多个子问题的目标函数系数,并求解当前的多个子问题,确定每个子问题的目标函数值和至少一个备选配送路径。

在一种可能的实施方式中,服务器可以将步骤2061中计算得到的每个路径点i的影子价格代入每个子问题,在此基础上对每个子问题进行求解,也即是在每个子问题对应的子问题构建分组中搜索可行解。当求解子问题满足限制条件(即最大允许时间和允许的求解精度)时,停止计算该子问题,并计算当前可行解对应的目标函数值(即检验数)。

将此时得到的可行解作为至少一个备选配送路径。

步骤2063,当存在至少一个子问题的目标函数值不满足迭代条收敛件时,选择上述至少一个子问题中每个子问题对应的备选配送路径,根据选择的备选配送路径更新当前的主问题,得到下一次列生成迭代的主问题,执行下一次列生成迭代。

其中,迭代收敛条件可以是指当目标函数为最小化成本上升时,目标函数值大于等于0;或者,当目标函数为最大化成本下降时,目标函数值小于等于0。

在一种可能的实施方式中,服务器在步骤2062中确定每个子问题的目标函数值之后,可以判断每个子问题的目标函数值是否满足迭代收敛条件。如果不满足,表明存在可以使路径总成本进一步下降的任务子集和相应的可行车辆配送任务路径,则可以基于该子问题对应的备选配送路径构建主问题约束矩阵的列向量,并添加到主问题约束矩阵中,更新当前的主问题。如果满足,表明不存在可以使路径总成本进一步下降的任务子集和相应的可行车辆配送任务路径,则可以舍弃该子问题的备选配送路径。

一旦存在任一子问题的目标函数值不满足迭代收敛条件,则服务器可以执行下一次列生成迭代的计算。在下一次列生成迭代中,服务器可以基于本次列生成迭代的主问题,通过与执行步骤2061-2064相同的方法进行处理,此处不再赘述。

由于每次列生成迭代中,新得到的影子价格可以用于更新子问题的目标函数,指导子问题找到更好的备选配送路径,因此影子价格就像一个无形的手,指挥子问题不断为主问题提供有价值的备选配送路线。

步骤2064,当每个子问题的目标函数值满足迭代收敛条件时,终止列生成迭代过程,求解当前主问题,确定待分配的一组可行车辆配送任务路径。

也即是说,此时,当目标函数为最小化成本上升时,目标函数值小于0;或者,当目标函数为最大化成本下降时,目标函数值大于0

在一种可能的实施方式中,当每个子问题的目标函数值均满足迭代收敛条件时,表示已经找不到可以降低主问题路径总成本的新的备选配送路径了,从理论上可以说已经找到松弛主问题的最优解,则服务器可以停止列生成迭代过程。进而,服务器可以求解恢复整数约束的当前主问题,获得主问题的整数解,也即是待分配的一组可行车辆配送任务路径。

比较整数解的目标函数值与松弛问题的目标函数值,可以获得本次车辆路径规划的求解精度,如果两个解值相等,则证明已经找到问题的整数最优解。在本发明的实验阶段,通常都能找到问题的整数最优解,说明本发明提供的方法能够有效求解车辆路径规划问题,相比于无法确定解与最优解之间的差距的启发式算法,提高了求解车辆路径规划问题的精确性。

本发明实施例中,服务器可以根据订单数据的信息确定扇形初始分组,并根据扇形初始分组的情况构建适用于当前情况的列生成算法模型。在列生成迭代的过程中,每个子问题具有对应的子问题构建分组,每个子问题构建分组包括有限数目个扇形初始分组的路径点,降低了求解复杂度,并且每个子问题可以并行求解。因此,通过本发明提供的车辆路径规划方法,可以有效提高计算效率,可以求解大规模的车辆路径规划问题。

上面的实施例中主要对列生成算法的处理过程进行了介绍,本实施例中将结合实时到达的物流取/送任务订单和多车辆任务指派的过程,在上述实施例的基础上,对动态物流车辆路径规划的方法进行介绍。

下面将参照图9和图10所示的车辆路径规划方法的流程图,介绍本实施例提供的动态物流车辆路径规划方法。

步骤901,当接收到路径规划信号时,服务器获取当前物流节点待分配的订单数据。

步骤901的处理与上述步骤201相同,此处不再赘述。

步骤902,服务器根据订单数据,确定每个订单的订单类型。

其中,订单类型可以包括取件单和送件单。

在一种可能的实施方式中,服务器可以根据订单数据中的订单类型数据,确定每个待分配的订单是取件单或送件单。

如果当前订单的订单类型为取件单,则执行步骤903、904:

步骤903,如果当前订单的取件地点的第一范围内不存在可行司机,则将当前订单对应的路径点作为待规划的路径点。

其中,可行司机可以是指司机的剩余任务添加当前订单后,订单总重量、订单总体积、总行驶里程和/或总行驶时间不超过车辆当前的能力限制参数。上述第一范围可以是指预设半径内,例如,该预设半径可以1公里,本实施例对具体的第一范围不作限定。

在一种可能的实施方式中,如图10所示的车辆路径规划方法的流程图,服务器在确定当前订单的订单类型为取件单时,可以判断当前订单的取件地点的第一范围内是否存在可行司机,也即是就近范围内是否存在可行司机,符合就近原则。判断的过程可以如下:服务器可以根据当前订单的订单位置数据以及当前任务车辆的位置数据,确定当前订单的第一范围内是否存在司机。如果不存在,则判定不存在可行司机。如果存在,则服务器可以获取该司机驾驶的车辆当前的能力数据,也即是剩余容量数据、剩余载重数据、剩余行驶里程数据、剩余行驶时间数据,确定添加当前订单后是否满足车辆当前的能力限制。如果满足,则判定存在可行司机;如果不满足,则判定不存在可行司机。

在服务器判定不存在可行司机时,可以将当前订单对应的路径点作为待规划的路径点。

可选的,在将当前订单对应的路径点作为待规划的路径点之前,服务器还可以判断当前物流节点是否存在待分配的司机。如果存在,则将当前订单对应的路径点作为待规划的路径点。如果不存在,则将当前订单放回待分配的订单数据的任务池中,等待下一次路径规划信号的触发。

步骤904,如果当前订单的取件地点的第一范围内存在可行司机,则将当前订单添加到目标可行司机的剩余任务中,并更新目标可行司机当前的任务路径。

在一种可能的实施方式中,服务器在上述过程中判定当前订单的取件地点的第一范围内存在可行司机时,可以将该司机作为目标可行司机。如果存在多个可行司机,则可以将与当前订单的取件地点距离最近的可行司机,作为目标可行司机。

进而,服务器可以将当前订单添加到目标可行司机的剩余任务中,对目标可行司机的任务路径重新进行规划,并更新目标可行司机当前的任务路径。任务路径更新后,可以在司机所使用的终端上提示任务路径变更,并展示更新后的任务路径。提示的方法可以包括画面提示或者声音提示,本实施例对此不作限定。

如果当前订单的订单类型为送件单,则执行步骤905、906:

步骤905,如果当前物流节点不存在可更新的任务路径,则将当前订单对应的路径点作为待规划的路径点。

其中,可更新的任务路径可以是指上次触发路径规划时形成的尚未执行的任务路径,且添加当前订单后订单总重量、订单总体积、总行驶里程和/或总行驶时间不超过已分配的车辆当前的能力限制参数,且经过当前订单的送件地点的第二范围内。与第一范围同理,第二范围也可以是指预设半径内,第一范围和第二范围可以相同,也可以不相同,本实施例对此不作限定。

在一种可能的实施方式中,如图10所示的车辆路径规划方法的流程图,服务器在确定当前订单的订单类型为送件单时,可以判断当前物流节点是否存在可更新的任务路径。判断的过程可以如下:服务器可以根据当前任务车辆的位置数据,确定当前物流节点内是否存在已分配任务路径且未离开的车辆。如果不存在,则判定当前物流节点不存在可更新的任务路径。如果存在,则服务器可以获取对应的任务路径,确定任务路径是否经过当前订单的送件地点的第二范围内,也即是是否经过当前订单的就近范围内,符合就近原则。如果不经过,则判定当前物流节点不存在可更新的任务路径。如果经过,则服务器可以确定添加第二订单后该任务路径的订单总重量、订单总体积、总行驶里程和/或总行驶时间,并确定是否满足已分配的车辆当前的能力限制。如果满足,则判定当前物流节存在可更新的任务路径;如果不满足,则判定当前物流节点不存在可更新的任务路径。

在判定当前物流节点不存在可更新的任务路径时,服务器可以将当前订单对应的路径点作为待规划的路径点。

可选的,在将当前订单对应的路径点作为待规划的路径点之前,服务器还可以判断当前物流节点是否存在待分配的司机。如果存在,则将当前订单对应的路径点作为待规划的路径点。如果不存在,则将当前订单放回待分配的订单数据的任务池中,等待下一次路径规划信号的触发。

步骤906,如果当前物流节点存在可更新的任务路径,则将当前订单对应的路径点添加到可更新的目标任务路径中,更新目标任务路径。

在一种可能的实施方式中,服务器在上述过程中判定当前物流节点存在可更新的任务路径时,可以将该任务路径作为目标任务路径。如果存在多个可更新的任务路径,则将与当前订单的送件地点距离最近的任务路径,作为目标任务路径。

进而,服务器可以将第二订单对应的路径点添加到目标任务路径中,对目标任务路径重新进行规划,并更新目标任务路径。任务路径更新后,可以在司机所使用的终端上提示任务路径变更,并展示更新后的任务路径。提示的方法可以包括画面提示或者声音提示,本实施例对此不作限定。

需要说明的是,图10所示的判断流程仅为一种可能的实施方式,实际应用中可能存在不同的判断方法或者判断顺序,均符合本实施例的发明构思,属于本发明的保护范围。

步骤907,服务器基于改进的列生成算法,确定待分配的一组可行车辆配送任务路径。

服务器可以通过与上述步骤203-206相同的处理,确定待分配的一组可行车辆配送任务路径,此处不再赘述。

步骤908,服务器基于可行车辆配送任务路径的第一优先级和司机的第二优先级,确定对至少一个司机分配的任务路径。

具体的,上述步骤908的处理可以如下:服务器根据待分配的一组可行车辆配送任务路径中每个路径点对应的订单数据,确定每个可行车辆配送任务路径的第一优先级;获取当前物流节点中待分配的至少一个司机的第二优先级;按照优先级从高到低的顺序,将第一优先级和第二优先级一一配对,确定对至少一个司机分配的可行车辆配送任务路径。

在一种可能的实施方式中,服务器中可以存储有订单数据与优先级的对应关系,具体的,该对应关系可以包括客户属性、截止送达时间和/或订单产品属性与优先级的对应关系。例如,VIP(贵宾)客户的优先级高于普通客户,截止送达时间短的订单优先级高于截止送达时间长的订单,订单产品属性为生鲜的订单优先级高于订单产品属性为服饰的订单。本实施例对具体的优先级对应关系不作限定。

服务器在确定下每个可行车辆配送任务路径后,可以获取任一可行车辆配送任务路径中的所有订单数据对应的优先级,相加后得到该可行车辆配送任务路径对应的优先级分数,也即是第一优先级。

同时,服务器可以获取当前物流节点中待分配的司机的待命时长,按照待命时长从高到低的顺序确定优先级分数,也即是第二优先级。待命时长越长,优先级分数越高。

进而,服务器可以将优先级最高的可行车辆配送任务路径分配给优先级最高的司机,优先级第二位的可行车辆配送任务路径分配给优先级第二位的司机,依此类推,直至可行车辆配送任务路径分配完毕,或者司机分配完毕。

此外,服务器还可以将未分配的可行车辆配送任务路径中的订单,放回待分配的订单数据的任务池中,等待下一次路径规划信号的触发。

服务器在确定分配的可行车辆配送任务路径后,可以将每个可行车辆配送任务路径中的订单以及每个订单对应的路径点的访问顺序,返回给司机或管理员所使用的终端。

可选的,服务器还可以根据待分配的一组可行车辆配送任务路径,生成物流订单分配方案坐标图。

其中,如图11所示,物流订单分配方案坐标图可以包括作为坐标系原点的配送车辆统一出发节点和待分配的一组可行车辆配送任务路径,每个可行车辆配送任务路径中可以包括多个路径点和访问顺序。

此时,服务器返回终端的数据可以是物流订单分配方案坐标图的数据,进而,终端可以展示相应的物流订单分配方案坐标图。

为了适应实际应用,服务器可以生成基于实际道路的访问路线,相应的处理可以如下:在对任一司机分配任务路径之后,根据分配的任务路径,在地图上生成分配的任务路径的访问路线。

本发明实施例中,服务器可以动态处理实时到达的订单,取件和送件任务可以同时考虑并分配。相比于传统只能处理计划型订单的方法,本实施例提供的车辆路径规划方法更能适应实际应用场景,更加具有现实意义。

本发明实施例提供了一种基于列生成算法的车辆路径规划装置1200,该装置用于实现上述基于列生成算法的车辆路径规划方法。如图12所示的基于列生成算法的车辆路径规划装置的示意性框图,该装置包括:

获取模块1201,用于当接收到路径规划信号时,获取当前物流节点待分配的订单数据;

确定模块1202,用于根据所述订单数据,确定待规划的多个路径点,每个路径点对应一个或多个订单数据;

分组模块1203,用于根据预设的扇形分组规则,以所述配送车辆统一出发节点为原点,将所述多个路径点划分为多个扇形初始分组;

算法模块1204,用于根据所述多个扇形初始分组,确定子问题的总数目;构建所述总数目对应的多个子问题,构建初始的主问题;基于列生成算法,迭代求解所述多个子问题和主问题,确定待分配的一组可行车辆配送任务路径;其中,在每次列生成迭代中,每个子问题对应一个子问题构建分组,所述子问题构建分组至少包括一个扇形初始分组中的路径点。

可选的,所述算法模块1204用于:

在每次列生成迭代中,求解当前主问题的松弛问题,获取对应一组可行车辆配送任务路径的初始可行解,以及所述初始可行解对应的每个路径点的影子价格;其中,第一次列生成迭代的当前主问题为所述初始的主问题;

根据所述每个路径点的影子价格,修正当前的多个子问题的目标函数系数,并求解所述当前的多个子问题,确定每个子问题的目标函数值和至少一个备选配送路径;

当存在至少一个子问题的目标函数值不满足迭代收敛条件时,选择所述至少一个子问题中每个子问题对应的备选配送路径,根据选择的备选配送路径更新所述当前的主问题,得到下一次列生成迭代的主问题;执行下一次列生成迭代;

当每个子问题的目标函数值均满足迭代收敛条件时,终止列生成迭代过程,求解所述当前主问题,确定待分配的一组可行车辆配送任务路径。

可选的,所述扇形分组规则包括等弧度规则、等数量规则和等资源占用规则;

所述等弧度规则是指每个扇形初始分组的弧度相等;

所述等数量规则是指每个扇形初始分组的路径点数量相等;

所述等资源占用规则是指每个扇形初始分组包括的订单总体积、订单总重量满足车辆能力约束。

可选的,所述子问题构建分组包括至少两个扇形初始分组中的路径点,并满足:每个子问题构建分组的并集为所述待规划的多个路径点;两两子问题构建分组的交集为空集;每个子问题构建分组中的扇形初始分组相邻。

可选的,在相邻两次列生成迭代中,第二次列生成迭代中的子问题构建分组k中,至少包括第一次列生成迭代中的子问题构建分组k和子问题构建分组k±1之间的两个相邻扇形初始分组,其中,k为大于1的整数。

可选的,所述主问题的目标函数为最小化路径总成本,约束条件至少包括访问所有路径点;

所述子问题的目标函数为最小化成本上升或最大化成本下降,约束条件至少包括以下一种或多种:每个路径点均存在来路和去路,每个路径点最多被访问一次,路径的起始点和终止点均为坐标原点,路径上路径点的订单总重量、订单总体积、总行驶里程和/或总行驶时间不超过相应的限制参数,每个路径的回路唯一。

可选的,所述路径规划信号的触发条件包括:

当达到设定周期时触发;和/或,

在当前物流节点待分配的订单数目达到设定数目时触发;和/或,

当接收到路径规划请求时触发。

可选的,所述装置还包括分配模块,所述分配模块用于:

根据所述待分配的一组可行车辆配送任务路径中每个路径点对应的订单数据,确定每个可行车辆配送任务路径的第一优先级;

获取所述当前物流节点中待分配的至少一个司机的第二优先级;

按照优先级从高到低的顺序,将所述第一优先级和所述第二优先级一一配对,确定对所述至少一个司机分配的可行车辆配送任务路径。

可选的,所述确定模块1202用于:

根据所述订单数据,确定每个订单的订单类型;

如果当前订单的订单类型为取件单,且当前订单的取件地点的第一范围内不存在可行司机,则将当前订单对应的路径点作为待规划的路径点;所述可行司机是指司机的剩余任务添加当前订单后,订单总重量、订单总体积、总行驶里程和/或总行驶时间不超过车辆当前的能力限制参数;

如果当前订单的订单类型为送件单,且所述当前物流节点不存在可更新的任务路径,则将所述第二订单对应的路径点作为待规划的路径点;所述可更新的任务路径是指上次触发路径规划时形成的尚未执行的任务路径,且添加当前订单后订单总重量、订单总体积、总行驶里程和/或总行驶时间不超过已分配的车辆当前的能力限制参数,且经过当前订单的送件地点的第二范围内。

可选的,所述确定模块1202还用于:

如果当前订单的订单类型为取件单,且当前订单的取件地点的第一范围内存在可行司机,则将当前订单添加到目标可行司机的剩余任务中,并更新所述目标可行司机当前的任务路径;

如果当前订单的订单类型为送件单,且所述当前物流节点存在可更新的任务路径,则将当前订单对应的路径点添加到可更新的目标任务路径中,更新所述目标任务路径。

可选的,所述装置还包括生成模块,所述生成模块用于:

根据所述待分配的一组可行车辆配送任务路径,生成物流订单分配方案坐标图,所述物流订单分配方案坐标图包括作为坐标系原点的所述配送车辆统一出发节点和所述待分配的一组可行车辆配送任务路径,每个可行车辆配送任务路径中包括多个路径点和访问顺序;

在对任一司机分配任务路径之后,根据分配的任务路径,在地图上生成所述分配的任务路径的访问路线,所述访问路线是指基于实际道路的访问路线。

本发明实施例中,服务器可以根据订单数据的信息进行扇形初始分组,并根据扇形初始分组的情况构建适用于当前情况的列生成算法模型。在列生成迭代的过程中,每个子问题具有对应的子问题构建分组,每个子问题构建分组包括有限数目个扇形初始分组的路径点,降低了求解复杂度,并且每个子问题可以并行求解。因此,通过本发明提供的车辆路径规划方法,可以有效提高计算效率,可以求解大规模的车辆路径规划问题。

本发明示例性实施例还提供了一种物流管理系统,所述系统由终端、服务器和物流车辆构成,其中:

所述终端,用于当用户触发路径规划请求时,向所述服务器发送所述路径规划请求;

所述服务器,用于执行上述基于列生成算法的车辆路径规划方法;

所述物流车辆设置有智能检测设备1300,如图13所示的智能检测设备的示意性框图,所述智能检测设备1300至少包括定位设备1301和能力检测设备1302,所述定位设备1301用于采集所述物流车辆的位置数据,所述能力检测设备1302用于采集所述物流车辆的能力数据,所述能力数据至少包括以下一种或多种:剩余容量数据、剩余载重数据、剩余行驶里程数据;

所述物流车辆,用于将所述智能检测设备1300采集的数据发送给所述服务器。

本发明实施例中,服务器可以根据订单数据的信息进行扇形初始分组,并根据扇形初始分组的情况构建适用于当前情况的列生成算法模型。在列生成迭代的过程中,每个子问题具有对应的子问题构建分组,每个子问题构建分组包括有限数目个扇形初始分组的路径点,降低了求解复杂度,并且每个子问题可以并行求解。因此,通过本发明提供的车辆路径规划方法,可以有效提高计算效率,可以求解大规模的车辆路径规划问题。

本发明示例性实施例还提供一种电子设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器。所述存储器存储有能够被所述至少一个处理器执行的计算机程序,所述计算机程序在被所述至少一个处理器执行时用于使所述电子设备执行根据本发明实施例的方法。

本发明示例性实施例还提供一种存储有计算机程序的非瞬时计算机可读存储介质,其中,所述计算机程序在被计算机的处理器执行时用于使所述计算机执行根据本发明实施例的方法。

本发明示例性实施例还提供一种计算机程序产品,包括计算机程序,其中,所述计算机程序在被计算机的处理器执行时用于使所述计算机执行根据本发明实施例的方法。

参考图14,现将描述可以作为本发明的服务器、终端或智能检测设备的电子设备1400的结构框图,其是可以应用于本发明的各方面的硬件设备的示例。电子设备旨在表示各种形式的数字电子的计算机设备,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。

如图14所示,电子设备1400包括计算单元1401,其可以根据存储在只读存储器(ROM)1402中的计算机程序或者从存储单元1408加载到随机访问存储器(RAM)1403中的计算机程序,来执行各种适当的动作和处理。在RAM 1403中,还可存储设备1400操作所需的各种程序和数据。计算单元1401、ROM 1402以及RAM 1403通过总线1404彼此相连。输入/输出(I/O)接口1405也连接至总线1404。

电子设备1400中的多个部件连接至I/O接口1405,包括:输入单元1406、输出单元1407、存储单元1408以及通信单元1409。输入单元1406可以是能向电子设备1400输入信息的任何类型的设备,输入单元1406可以接收输入的数字或字符信息,以及产生与电子设备的用户设置和/或功能控制有关的键信号输入。输出单元1407可以是能呈现信息的任何类型的设备,并且可以包括但不限于显示器、扬声器、视频/音频输出终端、振动器和/或打印机。存储单元1404可以包括但不限于磁盘、光盘。通信单元1409允许电子设备1400通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据,并且可以包括但不限于调制解调器、网卡、红外通信设备、无线通信收发机和/或芯片组,例如蓝牙TM设备、WiFi设备、WiMax设备、蜂窝通信设备和/或类似物。

计算单元1401可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元1401的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元1401执行上文所描述的各个方法和处理。例如,在一些实施例中,基于列生成算法的车辆路径规划方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元1408。在一些实施例中,计算机程序的部分或者全部可以经由ROM 1402和/或通信单元1409而被载入和/或安装到电子设备1400上。在一些实施例中,计算单元1401可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行基于列生成算法的车辆路径规划方法。

用于实施本发明的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。

在本发明的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。

如本发明使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(PLD)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。

为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。

可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。

计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。

技术分类

06120113806953