具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
本发明实施例提供一种路径的确定方法,该方法应用于路径的确定装置中,图1为本发明实施例中的路径的确定方法的流程示意图,如图1所示,该路径的确定方法包括:
S101:对接收到的各订单进行分组,确定分组后的订单为初始化订单;
首先,路径的确定装置接收到一张订单列表,该订单列表中包括有各订单在仓库中的位置信息,然后对各订单继续分组,该分组方法可以是随机进行分组,也可以是按照先到先处理(FCFS,First Come First Served)的原则进行分组,在进行完分组之后,将分组后的各订单确定为初始化订单;这里,本发明实施例对分组方法不做具体限定。
S102:根据HGA,确定出初始化订单的最短运输路径;
在实际应用中,可以预先设置多种订单属性,例如,订单A和订单B分在同一组可以设置为一种属性,订单C和订单D分在同一组可以设置为一种属性,订单A、订单B、订单C和订单D分在同一组可以设置为一种属性,这样,可以预先根据自身的需求设置出多种订单属性,然后,根据HGA计算出初始化订单中每种订单属性对应的最短运输路径。
这里,对于设置出的每种订单属性来说,在初始化订单中,有可能出现存在一部分种类的订单属性,有一部分种类的订单属性是不存在的,所以,在根据HGA计算出初始化订单中每种订单属性对应的最短运输路径中,当在初始化订单中,当存在一部分种类的订单属性时,根据HGA先确定出每组订单的订单顺序,然后根据订单顺序和订单位置确定出每组订单的最短运输路径,再对每组订单的最短运输路径进行求和,得到初始化订单的最短运输路径;当有一部分种类的订单属性是不存在时,设置该订单属性对应的最短运输路径为无穷大。
这样,便可以确定出初始化订单中每种订单属性对应的最短运输路径。
S103:按照预设变动规则对初始化订单进行至少两次处理,得到各变动后的订单;
为了为各订单确定出最优的分组方式,需要对初始化订单进行变动,在一种可选的实施例中,S103可以包括:
在初始化订单中,在任意两组中分别选取一个订单进行变动,得到各变动后的订单。
具体来说,上述对初始化订单的变动可以有多次,那么,经过变动之后可以得到多次变动后的订单,即为各变动后的订单。其中,在具体实施过程中,在初始化订单中,在任意两组中分别选取一个订单进行变动,得到各变动后的订单,包括:
在初始化订单中,将任意选取出的其中一组中的一个订单与另外一组中的一个订单进行交换,得到交换后的订单;和/或,在初始化订单中,将任意选取出的其中一组中的一个订单移动至另外一组中,得到移动后的订单;用交换后的订单和/或移动后的订单形成各变动后的订单。
在实际应用中,为了能够搜索出尽可能多的订单的分组方式,通常在初始化订单中,将任意选取出的其中一组中的一个订单与另外一组中的一个订单进行交换,进行多次交换之后能够得到多次交换后的订单;并且,在初始化订单中,将任意选取出的其中一组中的一个订单移动至另外一组中,进行多次移动之后能够得到多次移动后的订单;用多次交换后的订单和多次移动后的订单形成各变动后的订单,这样,就可以得到尽可能多的各变动后的订单。
也就是说,通过上述ABHC算法可以得到尽可能多的各变动后的订单,其中,ABHC算法是禁忌搜索算法的一种改进算法。
S104:根据HGA,确定出各变动后的订单的最短运输路径;
具体来说,通过S103来计算各变动后的订单的最短运输路径,例如,对于设置出的每种订单属性来说,在各变动后的订单中,有可能出现存在一部分种类的订单属性,有一部分种类的订单属性是不存在的,所以,在根据HGA计算出各变动后的订单中每种订单属性对应的最短运输路径中,当在各变动后的订单中,当存在一部分种类的订单属性时,根据HGA先确定出每组订单的订单顺序,然后根据订单顺序和订单位置确定出每组订单的最短运输路径,再对每组订单的最短运输路径进行求和,得到各变动后的订单的最短运输路径;当有一部分种类的订单属性是不存在时,设置该订单属性对应的最短运输路径为无穷大。
S105:根据初始化订单的最短运输路径和各变动后的订单的最短运输路径,确定出各订单的最短运输路径。
具体来说,在确定出初始化订单的最短运输路径和各变动后的订单的最短运输路径之后,为了确定出各订单的最短运输路径,S105中可以是根据只进行一次变动的各变动后的订单来确定出各订单的最短运输路径,也可以是根据多次变动后的各变动后的订单来确定出各订单的最短运输路径。
其中,对于多次变动来说,在具体实施过程中,S104可以包括:
在各变动后的订单的最短运输路径中存在小于初始化订单的最短运输路径的值时,将初始化订单更新为各变动后的订单的最短运输路径中的最小值对应的订单,返回执行按照预设变动规则对所述初始化订单进行至少两次处理,得到各变动后的订单的步骤;
在各变动后的订单的最短运输路径中不存在小于初始化订单的最短运输路径的值时,确定初始化订单的最短运输路径为各订单的最短运输路径。
具体来说,当变动后的订单的最短运输路径中存在小于初始化订单的最短运输路径,那么说明该初始化订单不是最优的分组方式,需要进一步进行变动来搜索最优的分组方式,所以,找出各变动化后的订单的最短运输路径中最小值对应的变动后的订单,将初始化订单更新为该订单,然后在返回至S103,继续进行分组方式的搜索,直至各变动后的订单的最短运输路径中不存在小于初始化订单的最短运输路径的值,此时,将初始化订单的最短运输路径确定为各订单的最短运输路径。
其中,上述初始化订单的最短运输路径是指存在的那一部分订单属性对应的最短运输路径的值。
另外,在确定出各订单的最短运输路径之后,在一种可选的实施例中,在确定初始化订单的最短运输路径为各订单的最短运输路径之后,包括:
基于预设数目的AGV,为初始化订单中的每组订单分配AGV。
这里,对每组订单分配一辆AGV,例如,当各订单的数目为100,分为10组,每组10个,存在5辆AGV时,那么当分配AGV时,可以将10组再分为两批,每批5组,为每组分配一辆AGV,此时,每一批会有5辆AGV同时运行;那么,当有多辆AGV同时进行订单拣选时,需要对时序进行划分,以避免多辆AGV之间的冲突。
下面举实例来对上述路径的确定方法中一个或多个实施例进行说明。
步骤A1:将需要处理的订单列表按FCFS的原则进行初始化分批(分组);并确定订单属性集合,选用两个订单分在同一组作为一种属性,因此如果订单数量为n,那么订单属性集合的属性个数为n(n-1)/2;初始化best表,best表是用于存储下述每次迭代中任意属性对应的分批方式的运输路径最小值,因此best表有n(n-1)/2列,每列用k来表示。
步骤B1:使用HGA计算出初始化分批中各组订单的最短运输路径,求和,即得到初始分批方式的最短运输路径;如初始分批方式中包含了属性k,就在best表的第k列填入该初始分批方式的最短运输路径的值,作为该属性对应的初始最优解,如果不包含属性k,则设置该列为无穷大。
步骤C1:对分批组合进行交换(SHIFT)或移动(MOVE)操作,其中SHIFT操作为将一个订单从一组中取出放入另一组,MOVE操作为将两组中的订单做交换操作;分批组合的所有SHIFT和MOVE操作产生的所有新的分批组合用集合N表示。
步骤D1:使用HGA计算集合N中新的分批组合的最短运输路径,如果新的分批i包含属性k,并且最短运输路径小于当前best表中第k列的最小值则该分批保留,否则丢弃,形成新的集合M。
步骤E1:如果M为空集,则搜索结束,当前分批为最优分批,继续步骤F1;如果M不为空集,使用包含属性k的分批方式中运输路径最短的运输路径长度作为best第k列的结果,更新best表;选择集合M中最短运输路径中的最小值对应的分批方式作为当前最优分批组合,跳转至步骤C1。
步骤F1:将分批后的订单,以组为单位平均分配给多辆AGV,AGV将根据HGA规划的路径行驶;为避免运输中出现AGV冲突,为路径规划时序关系。
步骤G1:AGV根据分配到的订单,规划的路径和路径时序启动,开始订单出库或入库过程。
其中,上述提到的HGA为混合遗传算法,HGA的作用是根据订单分批结果,对分批中每组订单做路径规划,使得该分批方式订单的运输路径总和最短。
其中,对于时序规划来说,首先,将仓库中运输路径用节点和通路来表示,给每个节点进行编号,其中节点p和节点q之间如果有通路,并且p<q,通路用(p,q)表示;规划认为每辆AGV直行通过节点的用时相同,在节点转弯的用时相同,通过通路时的速度相同,在取货货架处取出一件货物使用的时间相同,并且在同一时间内一个节点或通路只允许被一辆AGV占用。上述提到的路径时序规划方式具体如下:
步骤A2:任意挑选一辆AGV的路径,根据运输路线,计算其通过每个节点、通路、或取货占用某个通路的起始时间和结束时间。
步骤B2:从未规划运输路径时序的AGV中选择一条路径,按上述方式计算其占用每个节点和通路的起始时间和结束时间,如果时间与已规划的时序有重合,则规划AGV在前一个节点或通路等待,至该节点或通路的占用时间结束后,再进入该节点或通路;即推迟上一个节点或通路的占用结束时间,后续节点和通路的占用时间也依次推迟。推迟后新的时间规划如果与已规划的时间再次出现重合情况则重复上述操作,直到与已有规划没有冲突为止。
步骤C2:判断是否存在未规划时序的AGV路径,如果不存在,规划完成,可开始运输工作。如果存在,跳转至B2。
图2为本发明实施例中的为AGV分配的一种可选的时序示意图;图3为本发明实施例中与图2对应的仓库的一种可选的分布示意图;如图2所示,横轴为时间、纵轴为节点和通道,图2中r表示AGV在节点或通道处占用的起始时间和结束时间,其中,用表示1号AGV在节点或通道处所占用的行驶时间,用表示2号AGV在节点或通道处所占用的行驶时间,用表示3号AGV在节点或通道处所占用的行驶时间;用表示节点1的空闲时间段,用表示节点2的空闲时间段,用f3表示节点3的空闲时间段,用表示节点4的空闲时间段,用表示节点5的空闲时间段,用表示节点6的空闲时间段,用表示通路1至5的空闲时间段,用表示通路1至2的空闲时间段,用表示通路1至3的空闲时间段,用表示通路2至4的空闲时间段,用表示通路5至6的空闲时间段,用表示通路3至6的空闲时间段。
从时序图可以准确读出三辆AGV的时序和在图3中的运输路径,例如:1号AGV的路径为:通过节点1,占用时间为从6至10,通过通路(1,2),占用时间为10至30,通过节点2,占用时间为30至34,以此类推;又如由于3号AGV从点1前往通道(1,5)的过程中,为了避让2号AGV,因此在点1处停留的一段时间,1、2、3号AGV具体的形成路线如下:
1号AGV:node1(6,10)—>lane(1,2)(10,30)—>node2(30,34)—>lane(2,4)(34,45)—>node1(45,49)
2号AGV:node1(16,20)—>lane(1,5)(20,30)—>node5(30,34)—>lane(5,6)(34,66)—>node5(66,70)
3号AGV:node1(26,33)—>lane(1,5)(33,43)—>node5(43,47)
其中,上述node表示节点,lane表示通路。
本发明实施例在订单拣选过程中使用ABHC与HGA相结合的算法对订单拣选中的订单分批和路径规划两部分同时进行了优化,输出结果为AGV的存取货物路径,并且在路径规划过程中使用了改进后的混合遗传算法,可以提高优化的收敛程度,相比于现有技术,在仓库规模越大,布局越复杂,出入库处理越频繁的情况下,优化能力越强;同时,在订单分批过程中保证每条订单上的货物在同一个分批中,以免出库货物产生额外的人工分拣作业;另外,在AGV作业时,普通的订单拣选调度只考虑一辆车的情况,考虑多辆AGV时也仅考虑了节点的占用时序;本发明实施例中同时考虑了多辆AGV在仓库中作业的节点以及通道占用时序,实现了多辆AGV在通道中可停留作业的运输时序规划。
本发明实施例所提供的路径的确定方法,首先,对接收到的各订单进行分组,确定分组后的订单为初始化订单;根据HGA,确定出初始化订单的最短运输路径;为了进一步为各订单确定出最高效的分组方式,在确定出初始化订单的最短运输路径之后,按照预设变动规则对初始化订单进行至少两次处理,得到各变动后的订单;针对各变动后的订单,根据HGA,确定出各变动后的订单的最短运输路径;最后,根据初始化订单的最短运输路径和各变动后的订单的最短运输路径,确定出各订单的最短运输路径;也就是说,在本发明实施例中,通过对初始化订单按照预设变动规则进行处理,然后确定出初始化订单与各变动后的订单的最短运输路径,这样,可以对各订单确定出多种的分组方式,从而比较这些多种分组方式对应的最短运输路径,能够为各订单挑选出最高效的分组方式和最短运输路径,那么,采用该分组方式进行订单拣选能够提高订单拣选的效率。
基于同一发明构思,本实施例提供一种路径的确定装置,图4为本发明实施例中的路径的确定装置的结构示意图,如图4所示,该路径的确定装置包括:初始化模块41、第一确定模块42、变动模块43、第二确定模块44和第三确定模块45;
其中,初始化模块41,用于对接收到的各订单进行分组,确定分组后的订单为初始化订单;第一确定模块42,用于根据HGA,确定出初始化订单的最短运输路径;变动模块43,用于按照预设变动规则对初始化订单进行至少两次处理,得到各变动后的订单;第二确定模块44,用于根据HGA,确定出各变动后的订单的最短运输路径;第三确定模块45,用于根据初始化订单的最短运输路径和各变动后的订单的最短运输路径,确定出各订单的最短运输路径。
为了为各订单确定出最优的分组方式,需要对初始化订单进行变动,上述变动模块43,具体用于在初始化订单中,在任意两组中分别选取一个订单进行变动,得到各变动后的订单。
具体来说,上述对初始化订单的变动可以有多次,那么,经过变动之后可以得到多次变动后的订单,即为各变动后的订单,上述变动模块43,具体用于在初始化订单中,将任意选取出的其中一组中的一个订单与另外一组中的一个订单进行交换,得到交换后的订单;和/或,在初始化订单中,将任意选取出的其中一组中的一个订单移动至另外一组中,得到移动后的订单;用交换后的订单和/或移动后的订单形成各变动后的订单。
具体来说,在确定出初始化订单的最短运输路径和各变动后的订单的最短运输路径之后,为了确定出各订单的最短运输路径,在第三确定模块45中可以是根据只进行一次变动的各变动后的订单来确定出各订单的最短运输路径,也可以是根据多次变动后的各变动后的订单来确定出各订单的最短运输路径,其中,对于多次变动来说,上述第三确定模块45,具体用于在各变动后的订单的最短运输路径中存在小于初始化订单的最短运输路径的值时,将初始化订单更新为各变动后的订单的最短运输路径中的最小值对应的订单,触发变动模块43按照预设变动规则对初始化订单进行变动,得到各变动后的订单;在各变动后的订单的最短运输路径中不存在小于初始化订单的最短运输路径的值时,确定初始化订单的最短运输路径为各订单的最短运输路径。
另外,在确定出各订单的最短运输路径之后,上述装置还包括:分配模块,用于在确定初始化订单的最短运输路径为各订单的最短运输路径之后,基于预设数目的AGV,为初始化订单中的每组订单分配AGV。
在实际应用中,初始化模块41、第一确定模块42、变动模块43、第二确定模块44、第三确定模块45和分配模块均可由位于服务器的中央处理器(CPU,Central ProcessingUnit)、微处理器(MPU,Microprocessor Unit)、专用集成电路(ASIC,ApplicationSpecific Integrated Circuit)或现场可编程门阵列(FPGA,Field-Programmable GateArray)等实现。
本实施例记载一种计算机可读介质,可以为ROM(例如,只读存储器、FLASH存储器、转移装置等)、磁存储介质(例如,磁带、磁盘驱动器等)、光学存储介质(例如,CD-ROM、DVD-ROM、纸卡、纸带等)以及其他熟知类型的程序存储器;计算机可读介质中存储有计算机可执行指令,当执行指令时,引起至少一个处理器执行包括以下的操作:
对接收到的各订单进行分组,确定分组后的订单为初始化订单;根据混合遗传算法HGA,确定出初始化订单的最短运输路径;按照预设变动规则对初始化订单进行至少两次处理,得到各变动后的订单;根据HGA,确定出各变动后的订单的最短运输路径;根据初始化订单的最短运输路径和各变动后的订单的最短运输路径,确定出各订单的最短运输路径。
本发明实施例所提供的路径的确定方法,首先,对接收到的各订单进行分组,确定分组后的订单为初始化订单;根据HGA,确定出初始化订单的最短运输路径;为了进一步为各订单确定出最高效的分组方式,在确定出初始化订单的最短运输路径之后,按照预设变动规则对初始化订单进行至少两次处理,得到各变动后的订单;针对各变动后的订单,根据HGA,确定出各变动后的订单的最短运输路径;最后,根据初始化订单的最短运输路径和各变动后的订单的最短运输路径,确定出各订单的最短运输路径;也就是说,在本发明实施例中,通过对初始化订单按照预设变动规则进行处理,然后确定出初始化订单与各变动后的订单的最短运输路径,这样,可以对各订单确定出多种的分组方式,从而比较这些多种分组方式对应的最短运输路径,能够为各订单挑选出最高效的分组方式和最短运输路径,那么,采用该分组方式进行订单拣选能够提高订单拣选的效率。
这里需要指出的是:以上装置实施例项的描述,与上述方法描述是类似的,具有同方法实施例相同的有益效果,因此不做赘述。对于本发明装置实施例中未披露的技术细节,本领域的技术人员请参照本发明方法实施例的描述而理解,为节约篇幅,这里不再赘述。
这里需要指出的是:
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本发明各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。