发明内容
有鉴于此,本发明要解决的一个技术问题是提供一种拣货路径的确定方法及装置。
根据本发明的一个方面,提供一种拣货路径的确定方法,包括:将仓库区域划分成多个区域子块,其中,所述区域子块包括:空地区域子块和货架区域子块;获取运输车当前的负载状态,其中,所述负载状态包括:载货状态和空载状态;确定运输车从起始点到达目的点所通过的区域子块,生成拣选路径,其中,处于空载状态的运输车优先通过所述货架区域子块,处于载货状态的运输车仅能通过所述空地区域子块。
可选地,所述确定运输车从起始点到达目的点所通过的区域子块包括:将所述起始点所在的区域子块作为起始路径节点,将所述目的点所在的区域子块作为目的路径节点;从所述起始路径节点开始,依次计算与当前路径节点相邻的区域子块的运输代价,从与当前路径节点相邻的区域子块中选取运输代价最小的区域子块作为下一个路径节点,直至与所述下一个路径节点相邻的区域子块中包括所述目的路径节点。
可选地,对于处于空载状态的运输车,当与当前路径节点相邻的区域子块中的货架区域子块的运输代价与空地区域子块的运输代价相同并为最小运输代价时,则选取此货架区域子块作为下一个路径节点。
可选地,确定代价函数,基于所述代价函数计算所述与当前路径节点相邻的区域子块的运输代价;其中,所述代价函数为f(n)=g(n)+h(n)+c(n);f(n)为运输代价,g(n)为从所述起始路径节点到达当前路径节点的代价,h(n)为当前路径节点经过相邻的区域子块到所述目的路径节点的估值,c(n)为空载附加代价,n为与当前路径节点相邻的区域子块的编号;当运输车处于空载状态、并且与当前路径节点相邻的区域子块为货架区域子块时,则所述c(n)为0;当运输车处于载货状态时,载货的运输车不能穿货架,则所述c(n)为0。
可选地,确定空载附加代价c(n)=isnoload*f*fload;isnoload为空载标识值、f为调整系数、fload为惩罚因子;其中,当运输车处于空载状态、并且与当前路径节点相邻的区域子块为货架区域子块时,isnoload不为0并且f=0;当运输车处于空载状态、并且与当前路径节点相邻的区域子块为空地区域子块时,isnoload和f都不为0;当运输车处于载货状态时,isnoload=0。
可选地,建立优先队列,将所述起始路径节点加入所述优先队列中;从所述起始路径节点开始,依次将与当前路径节点相邻的区域子块插入所述优先队列并选取下一个路径节点,直至与所述下一个路径节点相邻的区域子块中包括所述目的路径节点;其中,当运输车处于载货状态时,与当前路径节点相邻的区域子块不包括货架区域子块;将路径节点设置为与路径节点相邻的区域子块的父节点;如果与所述下一个路径节点相邻的区域子块中包括所述目的路径节点,则将所述目的路径节点插入所述优先队列;从所述队列中获取所述目的路径节点、设置为父节点的区域子块、所述起始路径节点,生成所述拣选路径。
可选地,将所述仓库区域划分成多个形状相同的区域子块,与当前路径节点相邻的区域子块的数量为8个。
根据本发明的另一方面,提供一种拣货路径的确定装置,包括:区域划分模块,用于将仓库区域划分成多个区域子块,其中,所述区域子块包括:空地区域子块和货架区域子块;负载状态获取模块,用于获取运输车当前的负载状态,其中,所述负载状态包括:载货状态和空载状态;拣选路径确定模块,用于确定运输车从起始点到达目的点所通过的区域子块,生成拣选路径,其中,处于空载状态的运输车优先通过所述货架区域子块,处于载货状态的运输车仅通过所述空地区域子块。
可选地,所述拣选路径确定模块,包括:路径节点设置单元,用于将所述起始点所在的区域子块作为起始路径节点,将所述目的点所在的区域子块作为目的路径节点;路径代价计算单元,用于从所述起始路径节点开始,依次计算与当前路径节点相邻的区域子块的运输代价;路径节点选择单元,用于从与当前路径节点相邻的区域子块中选取运输代价最小的区域子块作为下一个路径节点,直至与所述下一个路径节点相邻的区域子块中包括所述目的路径节点。
可选地,所述路径节点选择单元,还用于对于处于空载状态的运输车,当与当前路径节点相邻的区域子块中的货架区域子块的运输代价与空地区域子块的运输代价相同并为最小运输代价时,则选取此货架区域子块作为下一个路径节点。
可选地,所述路径代价计算单元,还用于确定代价函数,基于所述代价函数计算所述与当前路径节点相邻的区域子块的运输代价;其中,所述代价函数为f(n)=g(n)+h(n)+c(n);f(n)为运输代价,g(n)为从所述起始路径节点到达当前路径节点的代价,h(n)为当前路径节点经过相邻的区域子块到达所述目的路径节点的估值,c(n)为空载附加代价,n为与当前路径节点相邻的区域子块的编号;当运输车处于空载状态、并且与当前路径节点相邻的区域子块为货架区域子块时,则所述c(n)为0;当运输车处于载货状态时,则所述c(n)为0。
可选地,所述路径代价计算单元,还用于确定空载附加代价c(n)=isnoload*f*fload;isnoload为空载标识值、f为调整系数、fload为惩罚因子;其中,当运输车处于空载状态、并且与当前路径节点相邻的区域子块为货架区域子块时,isnoload不为0并且f=0;当运输车处于空载状态、并且与当前路径节点相邻的区域子块为空地区域子块时,isnoload和f都不为0;当运输车处于载货状态时,isnoload=0。
可选地,所述路径节点设置单元,还用于建立优先队列,将所述起始路径节点加入所述优先队列中;从所述起始路径节点开始,依次将与当前路径节点相邻的区域子块插入所述优先队列;其中,当运输车处于载货状态时,与当前路径节点相邻的区域子块不包括货架区域子块;所述路径节点选择单元,用于选取下一个路径节点,直至与所述下一个路径节点相邻的区域子块中包括所述目的路径节点;将路径节点设置为与路径节点相邻的区域子块的父节点;如果与所述下一个路径节点相邻的区域子块中包括所述目的路径节点,则将所述目的路径节点插入所述优先队列;从所述队列中获取所述目的路径节点、设置为父节点的区域子块、所述起始路径节点,生成所述拣选路径。
可选地,所述区域划分模块,还用于将所述仓库区域划分成多个形状相同的区域子块,其中,与当前路径节点相邻的区域子块的数量为8个。
根据本发明的又一方面,提供一种拣货路径的确定装置,包括:存储器;以及耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器中的指令,执行如权利要求1至7中任一项所述的拣货路径的确定方法。
本发明的拣货路径的确定方法及装置,基于运输车负载状态进行路径规划,载货状态的运输车不能穿行货架,空载状态的运输车可以穿越货架和空地,并且空载状态的运输车能够优先穿行货架,在路径规划中采用基于协商的路径规划算法,算法效率高,可以有效地减少道路拥堵,提高仓库的生产效率。
具体实施方式
下面参照附图对本发明进行更全面的描述,其中说明本发明的示例性实施例。下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。下面结合各个图和实施例对本发明的技术方案进行多方面的描述。
图1为根据本发明的拣货路径的确定方法的一个实施例的流程示意图,如图1所示:
步骤101,将仓库区域划分成多个区域子块,即进行栅格化处理,区域子块包括:空地区域子块和货架区域子块,空地区域子块是指仓库中的通道等未放置货架的区域。
对仓库区域进行栅格化处理可以有多种方法。例如,根据货架的摆放状态以及仓库的电子地图,将仓库区域划分成多个形状和面积都相同的区域子块。
步骤102,获取运输车当前的负载状态,负载状态包括:载货状态和空载状态。运输车包括AGV(Automated Guided Vehicle)等,可以通过运输车上设置的重量传感器采集的信号,确定运输车当前的负载状态。例如,运输车在顶起货架之前以及放下货架之后的状态为空载状态,运输车在顶起货架之后且放下货架之前的状态为载货状态。
步骤103,确定运输车从起始点到达目的点所通过的区域子块,生成拣选路径。基于拣选路径,处于空载状态的运输车优先通过货架区域子块,处于载货状态的运输车仅能通过空地区域子块。运输车的起始点为接收到拣货指令时所在的位置,运输车的目的点为目标货物所在的位置。
上述实施例的拣货路径的确定方法,提出一种基于运输车负载状态的路径规划方法,将运输车的负载状态分为空载和载货状态,载货状态的运输车不能穿行货架,空载状态的运输车可以穿越货架和空地,并且空载状态的运输车能够优先穿行货架,可以有效地减少道路拥堵,提高仓库的生产效率。
在一个实施例中,可以采用多种算法规划拣货路径,例如,采用基于启发式A*算法等。在运输车遇到不可移动的障碍物时,重新进行路径规划,根据运输车的载重将状态分为空载和载货状态,处于载货状态的运输车不能穿越货架,处于空载状态的运输车可以穿越货架和空地。
将运输车的起始点所在的区域子块作为起始路径节点,将目的点所在的区域子块作为目的路径节点。从起始路径节点开始,依次计算与当前路径节点相邻的区域子块的运输代价,从与当前路径节点相邻的区域子块中选取运输代价最小的区域子块作为下一个路径节点,反复从与当前路径节点相邻的区域子块中选取一个区域子块作为下一个路径节点,直至与下一个路径节点相邻的区域子块包括目的路径节点。与当前路径节点相邻的区域子块排除已经被选择的路径节点,避免陷入死循环。
对于处于空载状态的运输车,当与当前路径节点相邻的区域子块中的货架区域子块的运输代价与空地区域子块的运输代价相同并为最小运输代价时,则选取货架区域子块作为下一个路径节点,以使空载状态的运输车能够优先穿行货架。
基于启发式A*算法确定代价函数,并基于代价函数计算与当前路径节点相邻的区域子块的运输代价。代价函数为:
f(n)=g(n)+h(n)+c(n) (1-1)。
f(n)为运输代价,n为区域子块的标识编号。g(n)为从起始路径节点到当前路径节点的代价,g(n)对于与当前路径节点相邻的区域子块都相同。g(n)可以根据预先设置的代价计算规则,并基于运输距离、时间等因素进行确定。h(n)为当前路径节点经过相邻的区域子块到达目的路径节点的估值。h(n)可以根据预先设置的估值计算规则,并基于运输距离、时间等因素进行计算。
c(n)为空载附加代价。当运输车处于空载状态、并且与当前路径节点相邻的区域子块为货架区域子块时,c(n)为0。当运输车处于载货状态时,c(n)为0。
c(n)可以根据预先设置的计算规则进行计算。确定空载附加代价:
c(n)=isnoload*f*fload (1-2)。
isnoload为空载标识值,f为调整系数,fload为惩罚因子,isnoload、f、fload的取值可以根据具体场景进行设置。当运输车处于空载状态、并且与当前路径节点相邻的区域子块为货架区域子块时,isnoload不为0并且f=0。当运输车处于空载状态、并且与当前路径节点相邻的区域子块为空地区域子块时,isnoload和f都不为0。当运输车处于载货状态时,isnoload=0。
例如,如果运输车为空载状态、且与当前路径节点相邻的区域子块为货架区域子块,isnoload=1,f=0,fload=20,则c(n)=0,计算出代价的相对较小,所以能够优先被选择。如果运输车为空载状态、且与当前路径节点相邻的区域子块为空地区域子块,isnoload=1,f=1,fload=20,则c(n)=20,计算出代价的相对大,所以不被优先被选择。
在一个实施例中,如图2所示,将仓库区域划分成多个形状和面积相同的区域子块,颜色较浅的为空地区域子块,颜色较深的为货架区域子块。运输车接收到运输货物的指令,运输车当前所在的区域子块A1为起始路径节点,货物所在的区域子块D1为目的路径节点。
从起始路径节点A1开始,依次计算与当前路径节点相邻的区域子块的运输代价,从与当前路径节点相邻的区域子块中选取运输代价最小的区域子块作为下一个路径节点,直至下一个路径节点的相邻的区域子块包括目的路径节点D1。下面以起始路径节点A1为例进行说明。
与起始路径节点A1相邻的区域子块有8个,分别为区域子块B1-B8,当运输车处于空载状态时,基于上述公式(1-1)的代价函数分别计算区域子块B1-B8的运输代价。
例如,计算区域子块B7的运输代价f(7)=g(7)+h(7)+c(7)。当前路径节点为区域子块A1,则g(7)=0。h(7)为区域子块A1经过区域子块B7到目的路径节点D1的估值,区域子块B7为货架区域子块,当运输车处于空载状态时,则c(7)为0。
计算区域子块B8的运输代价f(8)=g(8)+h(8)+c(8)。g(8)=0,h(8)为区域子块A1经过区域子块B8到目的路径节点D1的估值,区域子块B8为空地区域子块,当运输车处于空载状态时,则基于上述公式(1-2)计算c(8),isnoload=1,f=1,fload=20,则c(8)=20。
f(7)与f(8)相同并为区域子块B1-B8中具有最小运输代价的区域子块,则选取货架区域子块B7作为下一个路径节点。按照相同的方法,从与货架区域子块B7相邻的区域子块中,选取货架区域子块B9作为下一个路径节点,直至下一个路径节点为目的路径节点D1。与货架区域子块B7相邻的区域子块排除已经被选择的起始路径节点A1,避免陷入死循环。
当运输车处于载货状态时,在计算与起始路径节点A1相邻的区域子块的运输代价时,基于上述公式(1-1)的代价函数分别计算空地区域子块B3-B6、B8的运输代价,不包括货架区域子块B1、B2、B7。
可以建立优先队列、链表等,将起始路径节点加入优先队列中。从起始路径节点开始,依次将与当前路径节点相邻的区域子块插入优先队列并选取下一个路径节点,直至下一个路径节点为目的路径节点。当运输车处于载货状态时,与当前路径节点相邻的区域子块不包括货架区域子块。
将路径节点设置为与路径节点相邻的区域子块的父节点,如果选取的下一个路径节点的相邻的区域子块包括目的路径节点,则将目的路径节点插入优先队列。从队列中获取目的路径节点、设置为父节点的区域子块、起始路径节点,生成拣选路径。
在一个实施例中,将起始路径节点A1加入到优先队列中,采用基于协商的路径规划算法(公式(1-1)和公式(1-2))计算与当前路径节点相邻的区域子块的运输代价,选取队列中运输代价(路径代价)最小的结点作为下一个路径节点,依次对路径节点扩展到与其相邻的区域子块。载货状态的运输车不能穿行货架,空载状态的运输车可以穿越货架和空地,并且使空载状态的运输车优先穿行货架。
根据负载状态采用基于协商的路径规划方法。当运输车为载货状态的时候,如果扩展的与当前路径节点相邻的区域子块为货架区域子块,则不加入优先队列,如果为空地区域子块,则加入优先队列,从而实现载货状态的运输车仅穿行空地,载货状态的运输车则不考虑c(n)因子。
当运输车为空载状态的时候,如果与当前路径节点相邻的区域子块为货架区域子块,则计算运输代价时不增加惩罚因子c(n),如果与当前路径节点相邻的区域子块为空地区域子块,则计算运输代价时增加惩罚因子c(n)。若空地区域子块和货架区域子块的g(n)+h(n)相同,则货架区域子块将会被优先取到,从而实现空车优先穿行货架,可以有效地减少道路拥堵,从而提高仓库的生产效率。反复进行上述选取下一个路径节点的步骤,直到取到的点是目标点,则路径被找到,否则路径规划失败。
如图3所示,将一个仓库区域的地图栅格化,且每个格子可以去往8个方向。A为起始路径节点,B为目的路径节点,在地图上进行A->B的运输车为负载和载货状态的路径规划。在路径节点搜索的过程中,对于载货状态的运输车,货架区域则不加入优先队列。对于空载状态的运输车,对空地区域的代价进行增加附加代价后加入优先队列,对货架区域不增加附加代价。选取优先队列中代价最小的区域子块进行扩展,31为运输车在载货状态下的拣货路径,32为运输车在空载状态下的拣货路径,实现空车优先穿行货架,将有效地减少道路拥堵,从而提高仓库的生产效率。
在一个实施例中,如图4所示,本发明提供一种拣货路径的确定装置40,包括:区域划分模块41、负载状态获取模块42和拣选路径确定模块43。区域划分模块41将仓库区域划分成多个区域子块,区域子块包括:空地区域子块和货架区域子块。负载状态获取模块42获取运输车当前的负载状态,负载状态包括:载货状态和空载状态。
拣选路径确定模块43确定运输车从起始点到达目的点所通过的区域子块,生成拣选路径,处于空载状态的运输车优先通过货架区域子块,处于载货状态的运输车仅通过空地区域子块。区域划分模块431将所述仓库区域划分成多个形状相同的区域子块,其中,与当前路径节点相邻的区域子块的数量为8个。
如图5所示,拣选路径确定模块43包括:路径节点设置单元431、路径代价计算单元432和路径节点选择单元433。路径节点设置单元431将起始点所在的区域子块作为起始路径节点,将目的点所在的区域子块作为目的路径节点。
路径代价计算单元432从起始路径节点开始,依次计算与当前路径节点相邻的区域子块的运输代价。路径节点选择单元433从与当前路径节点相邻的区域子块中选取运输代价最小的区域子块作为下一个路径节点,直至下一个路径节点的相邻的区域子块包括目的路径节点。
路径节点选择单元433对于处于空载状态的运输车,当与当前路径节点相邻的区域子块中的货架区域子块的运输代价与空地区域子块的运输代价相同并为最小运输代价时,则选取此货架区域子块作为下一个路径节点。
路径代价计算单元432确定代价函数,基于代价函数计算与当前路径节点相邻的区域子块的运输代价,代价函数为f(n)=g(n)+h(n)+c(n)。f(n)为运输代价,g(n)为从起始路径节点到当前路径节点的代价,h(n)为当前路径节点经过相邻的区域子块到目的路径节点的估值,c(n)为空载附加代价,n为与当前路径节点相邻的区域子块的编号。当运输车处于空载状态、并且与当前路径节点相邻的区域子块为货架区域子块时,则c(n)为0;当运输车处于载货状态时,则c(n)为0。
路径代价计算单元432确定空载附加代价c(n)=isnoload*f*fload。isnoload为空载标识值、f为调整系数、fload为惩罚因子。当运输车处于空载状态、并且与当前路径节点相邻的区域子块为货架区域子块时,isnoload不为0并且f=0;当运输车处于空载状态、并且与当前路径节点相邻的区域子块为空地区域子块时,isnoload和f都不为0;当运输车处于载货状态时,isnoload=0。
路径节点设置单元431建立优先队列,将起始路径节点加入优先队列中,从起始路径节点开始,依次将与当前路径节点相邻的区域子块插入优先队列;其中,当运输车处于载货状态时,与当前路径节点相邻的区域子块不包括货架区域子块。路径节点选择单元433选取下一个路径节点,直至下一个路径节点为目的路径节点,将路径节点设置为与路径节点相邻的区域子块的父节点,如果选取的下一个路径节点的相邻的区域子块包括目的路径节点,则将目的路径节点插入优先队列。从队列中获取目的路径节点、设置为父节点的区域子块、起始路径节点,生成拣选路径。
图6为根据本发明的拣货路径的确定装置的另一个实施例的模块示意图。如图6所示,该装置可包括存储器61、处理器62、通信接口63以及总线64。存储器61用于存储指令,处理器62耦合到存储器61,处理器62被配置为基于存储器61存储的指令执行实现上述的拣货路径的确定方法。
存储器61可以为高速RAM存储器、非易失性存储器(non-volatile memory)等,存储器61也可以是存储器阵列。存储器61还可能被分块,并且块可按一定的规则组合成虚拟卷。处理器62可以为中央处理器CPU,或专用集成电路ASIC(Application SpecificIntegrated Circuit),或者是被配置成实施本发明的拣货路径的确定方法的一个或多个集成电路。
上述实施例提供的拣货路径的确定方法及装置,基于运输车负载状态进行路径规划,将运输车的负载状态分为空载和载货状态,载货状态的运输车不能穿行货架,空载状态的运输车可以穿越货架和空地,并且空载状态的运输车能够优先穿行货架,在路径规划中采用基于协商的路径规划算法,算法效率高,可以有效地减少道路拥堵,提高仓库的生产效率。
可能以许多方式来实现本发明的方法和系统。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本发明的方法和系统。用于方法的步骤的上述顺序仅是为了进行说明,本发明的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本发明实施为记录在记录介质中的程序,这些程序包括用于实现根据本发明的方法的机器可读指令。因而,本发明还覆盖存储用于执行根据本发明的方法的程序的记录介质。