装箱方法、设备和计算机可读存储介质与流程

文档序号:17541059发布日期:2019-04-29 14:36阅读:176来源:国知局
装箱方法、设备和计算机可读存储介质与流程

本发明涉及物流分拣领域,特别涉及装箱方法、设备和计算机可读存储介质。



背景技术:

目前装箱通常是依据经验来进行人工装箱。为了能够提高装箱的合理性和高效性,可以采用智能算法来辅助装箱。

装箱问题是一个经典的学术问题,同时拥有着广泛的商业应用价值。在物流领域中,常常会出现需要将指定的一系列货物装入指定容器,比如车厢,进行运输的问题。

现存的绝大多数算法可分为两类,(一)使用人为制定规则的启发式搜索算法(二)将其视为非线性优化以解决的优化算法如遗传算法,与深度学习算法。

但是,第一类的基于启发式搜索方法之根本缺陷为其结果依赖于人为指定的启发式规则。在规则适用时结果趋好,反之规则很难得出可用的方案。然而大多数装箱场景本身有着复杂的限制条件,这使得我们难以找出一套适用的规则。其次,每当场景发生主要变动时,规则均须重新制定调整,这影响了算法本身的通用性。

第二类方法,非线性优化—遗传算法和深度学习算法,的主要缺陷有二:(一)缺少对复杂空间物理限制条件的支持。这些限制条件使得传统算法难以处理;(二)这一类非线性优化算法的机制尚未有足够的理论支持。往往需要使用者消耗大量时间调整参数以取得合格的结果。因此自动化率较低,制约了此类算法在工业装箱场景中的推广使用。



技术实现要素:

本发明的主要目的是提供装箱方法、设备和计算机可读存储介质,旨在提高装箱通用性和计算效率。

为实现上述目的,本发明提出的一种装箱方法,用于物流分拣,所述装箱方法包括:

获得容器的容纳信息,以及待装货物的装箱信息;

根据所述容纳信息、装箱信息,以及根据蒙特卡洛树搜索获得装箱方案;

在根据蒙特卡洛树搜索获得装箱方案的过程中,通过离散化空间记录装箱方案中箱子的位置,以及判断空间限制。

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

在所述容器的容积大于预设值时,将现有容器分为多个区域;

根据蒙特卡洛树搜索逐个获得,各个空间的各个装箱方案;

在搜索一空间的装箱方案时,根据之前获得的其他空间的装箱方案更新容器的容纳信息。

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

在进行蒙特卡洛树搜索中的仿真过程中,第一层的一树结点的展开符合空间限制的情况下,进行该树结点相关的第二层树结点的展开;否则执行第一层的另一树结点的展开。

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

在根据蒙特卡洛树搜索获得装箱方案的过程中,通过aabb树记录货物的层叠关系,并且判断每一货物是否符合承重限制。

可选的,所述通过aabb树记录货物的层叠关系,并且判断每一货物是否符合承重限制,包括:

在新增货物时,获得新增货物的底部直接接触的支撑物;

根据新增货物的重量和支撑物的接触关系,更新每一支撑物的承重信息。

可选的,所述根据新增货物的重量和支撑物的接触关系,更新每一支撑物的承重信息,包括:

将所述新增货物连接在所述支撑物的上一层,获得所述新增货物与每一所述支撑物的接触面积,以及与所有所述支撑物的接触总面积;

在上一层的货物的重量或承重信息变化时,本层的支撑物根据所述变化更新承重信息;并且,

本层的支撑物根据与上一层的货物的接触面积,占上一层的货物的接触总面积的比值,分摊所述变化;其中,

所述最下层支撑物为所述容器的支撑面。

可选的,所述容纳信息包括所述容器的形状以及已容纳的物体的形状和位置信息;

所述装箱信息包括所述待装货物的形状、重量和承重信息;

所述装箱方案包括每个箱体最终在容器中的位置及朝向信息。

本发明还提供了一种装箱方法,用于物流分拣,所述装箱方法包括:

获得容器的容纳信息,以及等待装载的货物的装箱信息;

根据所述容纳信息和所述装箱信息,获得多个装箱方案;

在获得装箱方案的过程中,通过离散化空间记录装箱方案中箱子的位置,并且判断空间限制。

本发明还提供了一种装箱设备,所述装箱设备包括储存器和处理器;所述储存器储存有装箱程序;

所述处理器用于执行所述装箱程序,用以执行上述的装箱方法的步骤。

本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有装箱程序,所述装箱程序被处理器执行时实现如上述的装箱方法的步骤。

本发明所提供的装箱方法,在工作时,通过预设的奖励函数,然后输入容器的容纳信息,以及待装货物的装箱信息。然后蒙特卡洛树搜索算法执行模拟装箱,即通过不断进行action-state的迭代,获得模拟装箱的方向。根据预设元素设置的奖励函数公式计算该模拟装箱方向的奖励函数,根据不同装箱方向的多个奖励函数,来选择最佳的装箱方向,然后再进行下一次的迭代,从而获得下一次的最佳的装箱方向,直至模拟装完所有箱子,从而获得最佳的装箱方案。因此,本发明通过蒙特卡洛树搜索算法,可以通用地和自动化地求解,求解待装货物和容器之间的装箱较优解,从而指导人工或机器人进行装箱。并且,本发明所提供的装箱方法,通过离散化空间记录装箱方案中箱子的位置,再判断每一货物是否超出容器的空间限制。从而利用了离散化的表述方法来描述空间位置,使得通过蒙特卡洛树搜索来获得各个货物的位置,以及判断是否超出容器空间限制时,能够处理数据量更小,计算更简单的效果。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。

图1为本发明装箱方法第一实施例的流程图;

图2为图1所示的装箱方法计算过程示意图;

图3为本发明装箱方法第二实施例的流程图;

图4为图3所示的装箱方法计算过程示意图;

图5为本发明装箱方法第三实施例的流程图;

图6为本发明装箱方法第四实施例的流程图;

图7为本发明装箱方法第五实施例的流程图;

图8为本发明装箱方法第六实施例的流程图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本具体实施方式中,通过蒙特卡洛树搜索方法来进行装箱模拟计算,用以将一系列具有不同形状与物理特性的货物放入指定容器,并满足一定空间与物理上的限制要求。

例如:空间要求可以包括,装载率与其他的空间的限制条件,如距离装箱容器10厘米,或容器内已经存在类似如集装箱的内置角件的障碍物。物理要求包括箱子承重规则。

承重控制可以包括,一个货物在结构中的实际承重不得超过其标定的最大承重。或者控制货物的实际承重不高于其标定的最大承重的90%或105%等等。

通过蒙特卡洛树搜索方法计算装箱的过程包括:

首先,将蒙特卡洛树搜索方法的计算过程设置好。

然后,算法的输入可以为:

a.包括目标容器的长宽高,

b.还可以包括目标容器里面已存在的物体的形状和位置信息;

c.还可以包括已存在物体的重量和承重信息;

d.包括待装箱货物的长宽高信息;

e.还可以包括待装箱货物的重量信息,以及承重信息;

最终,算法的输出可以为:

f.包括每个货物最终在容器中的位置信息;

g.还可以包括每个货物的朝向orientation信息。

即通过设置好了蒙特卡洛树搜索计算方法之后,仅需输入容器的信息和装箱的信息,然后可以算出,何种装箱方案最佳。需要说明的是,所计算出来的最佳方案和蒙特卡洛树搜索算法中预先设置的奖励函数相关。

例如,设置容器的空间利用率作为奖励函数,则通过计算所获得装箱方案为,在满足预设条件(空间或者承重/空间和承重)下时,空间利用率最高的方案。当然,还可以设置容器的承重利用率作为奖励函数。则此时所获得的方案为,在满足预设条件(空间或者承重/空间和承重)下时,承重利用率最高的方案。当然,还可以设置多个的奖励函数,例如同时设置容器的空间利用率和承重利用率作为奖励函数,这两个要素各占五成权重。

关于蒙特卡洛树搜索的计算过程,可以包括:仿真action和状态state;

在蒙特卡洛树搜索中,每个状态state对应的是当前空间中已存在的结构,包含已经放置的货物,以及还未放置的货物。

蒙特卡洛树搜索中的仿真action可以包括将要放置的货物的信息,其中货物信息可以包括货物的材质,货物的密度或者货物的形状。或者在一个实施例中货物信息还可以包括货物的朝向,将要放置的位置。

即在进行蒙特卡洛树搜索的过程中,在原有的state状态时执行action,从而在满足空间和承重的限制的情况下仿真放入箱子,每放入一个箱子称为展开一层。首先,仿真到预定展开层级,例如仿真放入10个箱子;或者仿真至展开最后一层时,即展开放入最后一个待放的箱子。然后,返回计算该原有state应该选择执行放入哪一个箱子,即选择执行首层中的哪一state1子状态。该选择的过程为:针对每一个state1子状态进行关于指定奖励函数的计算,然后以奖励函数的计算结果,来评选出最优的一个state1子状态。最后确定执行至该state1子状态,从而使得该state1子状态成为新的state状态。然后循环再执行action,再获得另一新的state。循环往复,不断的进行仿真和迭代,直至放入最后一箱子,或者虚拟放入任一箱子都无法满足设定的物理要求。

总结来说,蒙特卡洛树算法的迭代操作分为四个步骤:

第一步:选取,选中一个原state状态。即选中一个可执行的树结点,该树结点下方可以具有若干个第二层的子结点。

第二步:树结点展开,即从第一步所选中的树结点s1,进行树结点的展开,从而产生一个新的子结点s11。该子结点s11为连接结点s1的第二层结点中的一个。

第三步:仿真,从子结点s11开始,进行试探性执行后续的随机放入箱子的操作,从而获得后续的更深层次的结点。例如仿真展开第三层的结点s111,s112,s113等等;例如从结点s111仿真展开的第四层结点s1111,s1112,s1113等等,从结点s112仿真展开的第四层结点s1121,s1122,s1123等等。

在执行这些仿真操作时,需要每一步仿真的结果都满足所设定的物理约束条件。该试探性仿真将剩下的箱子随机抽取,并逐一放入容器内,放入箱子的数量,可以直到容器空间不能再放入任何箱子为止,或者无法再满足物理约束条件,或者系统资源所能支撑的最大仿真展开层数为止,等等。

第四步:求值,根据奖励函数公式计算出结点s11这条线路的奖励函数。

以上四个步骤为一次迭代的过程。

在预设次的迭代的同时,计算获得原state状态的第二层的若干子结点s11的奖励函数,s12的奖励函数,s13的奖励函数等等。根据上述的奖励函数,执行最优的一个子结点,形成新的state。

若以空间利用率作为奖励函数来评判,则在同一容器中,装入的货物的总体积占比容器的容积最大的迭代作为最优解。

在执行上述的action时,关于空间限制的计算,可以通过离散空间表达法来表达容器的空间,则箱体所能放的位置将在离散化的空间中选择。例如,离散空间表达法可以包括:极端点法extremepoints或网格法grids等等。通过对空间进行离散化表达,从而可以将连续的空间变为通过排序的数组,从可以降低计算量,增加计算效率。

在执行上述的action时,关于承重限制的计算,可以通过aabb-tree结构来记录每一货物的上下相对关系。然后每一action被采用时,将该action所新增的货物增加至aabb-tree结构中,并计算新的承重。

为了能够进一步降低计算量,还可以通过调整容器的容积来实现。例如,通过分治法divide-and-conquer的策略解决此问题,即:

分--将问题分解为规模更小的子问题;

治--将这些规模更小的子问题逐个击破;

合--将已解决的子问题合并,最终得出“母”问题的解。

在实施时,可以将容器分为多个区域,然后分别计算每一个区域的最优解,最后将所有的最优解合并,从而获得整个容器的装箱最优解。

基于上述蒙特卡洛树搜索方法实现装箱的思想,提出本发明方法各个实施例。

实施例一

本实施例提供了装箱方法第一实施例。

请参看图1,一种装箱方法,用于物流分拣,所述装箱方法包括:

步骤s101,获得容器的容纳信息,以及待装货物的装箱信息;

步骤s102,根据所述容纳信息、装箱信息,以及根据蒙特卡洛树搜索获得装箱方案;

步骤s103,在根据蒙特卡洛树搜索获得装箱方案的过程中,通过离散化空间记录装箱方案中箱子的位置,以及判断空间限制。

在本实施例中,首先获得容器的容纳信息,以及待装货物的装箱信息。其中,容器的容纳信息包括容器的长宽高,以及内部已经存在的物品信息。例如,靠角信息,或者已经放置在内部的箱子信息等等。待装货物的装箱信息,可以包括待装货物的id、重量、体积、是否有朝上放置的要求,是否有承重限制等等。

在本实施例中,在获得所述容纳信息和装箱信息之后,再根据所述容纳信息和所述装箱信息,以及根据蒙特卡洛树搜索获得装箱方案。其中,容纳信息和装箱信息作为输入信息。蒙特卡洛树搜索的计算方法根据随机数来进行不断模拟放置箱子。通过蒙特卡洛树搜索的计算过程,最终获得的最终的并且最优的state,即为装箱方案。

在本实施例中,在根据蒙特卡洛树搜索获得装箱方案的过程中,通过离散化空间记录装箱方案中箱子的位置,以及判断空间限制。其中,将空间离散化,可以用将无限空间的连续值,用有限的相对值来表达。例如,离散空间表达法可以包括:极端点法extremepoints或网格法grids等等。通过对空间进行离散化表达,从而可以将连续的空间变为通过排序的数组,从可以降低计算量,增加计算效率。具体的,可以在进行蒙特卡洛树搜索的全过程,迭代过程中,将货物形状、在容器内的空间位置,都采用离散化空间来表达。从而降低蒙特卡洛树搜索过程中的数据计算量和数据储存量,使得计算的速度更快,耗时更短。

在获得装箱方案之后,可以控制机器人按照装箱方案,来逐个将箱子装入容器中。

本实施例所提供的装箱方法,在工作时,通过预设的奖励函数,然后输入容器的容纳信息,以及待装货物的装箱信息。然后蒙特卡洛树搜索算法执行模拟装箱,即通过不断进行action-state的迭代,获得模拟装箱的方向。根据预设元素设置的奖励函数公式计算该模拟装箱方向的奖励函数,根据不同装箱方向的多个奖励函数,来选择最佳的装箱方向,然后再进行下一次的迭代,从而获得下一次的最佳的装箱方向,直至模拟装完所有箱子,从而获得最佳的装箱方案。因此,本实施例通过蒙特卡洛树搜索算法,可以通用地和自动化地求解,求解待装货物和容器之间的装箱较优解,从而指导人工或机器人进行装箱。并且,本实施例所提供的装箱方法,通过离散化空间记录装箱方案中箱子的位置,再判断每一货物是否超出容器的空间限制。从而利用了离散化的表述方法来描述空间位置,使得通过蒙特卡洛树搜索来获得各个货物的位置,以及判断是否超出容器空间限制时,能够处理数据量更小,计算更简单的效果。

进一步的,所述装箱方法还包括:

步骤s104,在根据蒙特卡洛树搜索获得装箱方案的过程中,根据空间利用率获得奖励函数。其中,根据空间利用率获得蒙特卡洛树搜索的奖励函数,奖励函数用来评价模拟装箱过程中的每一次迭代。最后将一连串最优的迭代所组成的方案作为装箱方案。例如,通过计算装入的箱子的总体积,以及容器的容积之间的比值,从而获得同一层的不同结点的空间利用率,例如为80%~98%,70%~95%,85%~92%,70%~80%等等;其中,空间利用率最高为98%,则可以以对应80%~98%空间利用率的结点作为虚拟装箱方向,从而获得一新的state;再从该新的state出发,获得下一层中空间利用率最高的结点,该结点作为另一新的state;最终在一连串的最优选择中,获得装箱方案。

进一步的,在本实施例中,所述容纳信息包括所述容器的形状以及已容纳的物体的形状和位置信息。从而本实施例提供的装箱方法,可以先人工将部分重要货物放入容器,然后再进行计算。或者进行中继计算等等。

进一步的,在本实施例中,所述装箱信息包括所述待装货物的形状、重量和承重信息。从而本实施例所提供的装箱方法,可以根据每一货物的承重信息,从而对每一步action进行承重限制的计算。

进一步的,在本实施例中,所述装箱方案包括每个箱体最终在容器中的位置及朝向信息。从而实施例所提供的装箱方法,可以在进行每一步action时,可以对货物的朝向不同方向时进行模拟,增加装箱的多样性,使得模拟所获的结果更真实。

进一步的,在本实施例中,所述装箱方法还包括:

步骤s105,在进行蒙特卡洛树搜索中的仿真过程中,第一层的一树结点的展开符合空间限制的情况下,进行该树结点相关的第二层树结点的展开;否则执行第一层的另一树结点的展开。其中,该第一层和第二层,仅仅表示上下层关系,而并不限定具体在整体中的具体层。

如图2所示,此时有5个箱子,需要放到容器中。其中:

state00000的状态下,容器为空,需要将待装货物装入容器中。此时,货物需要装入的第一位置,该第一位置是预先设定的一个位置,例如容器的内侧指定的一角落。目前有5个待装货物。由于每一个箱子可以有六种姿态的朝向。因此,在装入第一位置时,可以从state00000根结点出发,任意展开5×6=30个子结点中的一个。即向容器中制定的角落放置箱子1、箱子2、箱子3、箱子4或箱子5,每种箱子可以以六种姿态中的任意一种来进行放置。

此处,为了能够使得说明能够更简洁,设置每一个货物仅能以一种姿势放置。从而在装入第一位置时,可以展开的子结点缩减为5个。

从state00000根结点出发,开始第一次迭代:随机选5个子结点中的任一子结点展开,并仿真展开后续结点,在每展开一个结点时进行空间限制的情况判断。若仿真展开的子结点满足空间的限制,则可以继续展开该子结点的任一子子结点,从而不断的执行仿真。在仿真执行到没有任何一子结点能够满足空间限制,或者放完所有箱子时,计算并返回第一次迭代中第一个展开的子结点的奖励函数。然后再以state00000根结点出发,开始第二次迭代,从剩余4个子结点中,任选一个子结点展开,再进行仿真以及计算返回奖励函数,从而完成第二次迭代。直至达到预设次数的迭代,或者进行完5次迭代,即计算完state00000根结点的5个子结点的奖励函数。

若此时算出第一位置放入箱子4的奖励函数的值最大,则选中第一位置放入箱子4,并形成新的state——state40000。

在state40000状态下,此时可以向容器中装入箱子1、箱子2、箱子3和箱子5,可以装入的位置包括第二位置,第三位置,第四位置和第五位置,此时由于变化量过多将难以说明。为了能够简便说明,此时将装箱的位置进行固定。即后续的action都将按照第二位置、第三位置、第四位置和第五位置进行顺序摆放。

然后,从state40000的状态下,可以执行4次迭代,若执行放入箱子1的迭代过程中,仿真到某一层树结点的展开不满足空间限制。则中断关于箱子1的迭代,再执行放入箱子2的迭代。若执行放入箱子2的迭代过程中,仿真到某一层树结点的展开不满足空间限制。则中断关于箱子2的迭代,再执行放入箱子3的迭代。而放入箱子3的迭代和放入箱子5的迭代过程中,每一次仿真都满足空间限制,则获得放入箱子3和放入箱子5的奖励函数。此时通过比对,认为放入箱子3的奖励函数的值更大。则选中第二位置放入箱子3,并形成新的state——state43000。

以此类推,在后续的仿真和迭代过程中,选中第三位置放入了箱子2,并形成新的state——state43200。选中第四位置放入箱子5,第五位置放入箱子1,并最终形成新的state——state43251。

本实施例所提供的装箱方法,通过在每一次迭代过程中的每一步仿真进行空间限制的计算,从而符合空间限制的仿真才能继续进行后续仿真,进而降低了蒙特卡洛树搜索的计算量,提高了算法的效率,降低了等待时间。

当然,在其他实施例中,也可以在进行蒙特卡洛树搜索中的一次迭代完毕时,再判断该迭代中的仿真是否符合空间限制。例如,以上述例子来说,在关于第一位置放入箱子4的迭代完毕之后,构建依次放入箱子4、箱子3、箱子2、箱子5和箱子1的重叠结构,然后进行空间限制的判断,则获得判断结果为符合空间限制。而另一次迭代完毕之后,构建依次放入箱子4、箱子2、箱子3、箱子5和箱子1的重叠结构,进行空间限制的判断,则获得判断结果为不符合空间限制。则符合空间限制的仿真参与获得奖励函数,而不符合空间限制的仿真则不参与获得奖励函数。

实施例二

请参看图3,本实施例提供了一种装箱方法。本实施例基于上述实施例,额外增加了步骤。具体如下:

步骤s201,在所述容器的容积大于预设值时,将现有容器分为多个区域。

步骤s202,根据蒙特卡洛树搜索逐个获得,各个空间的各个装箱方案。

步骤s203,在搜索一空间的装箱方案时,根据之前获得的其他空间的装箱方案更新容器的容纳信息。

在获得所述容纳信息和装箱信息之后,再在所述容器的容积大于预设值时,将现有容器分为多个区域。其中,预设值可以是预先设定的,例如预设值为0.2m3时1m3或者2m3等等。在容积超过预设值时,可以将容器分为两个区域、三个区域或者是四个区域等等。

在本实施例中,在将容器分为多个区域之后,再根据蒙特卡洛树搜索逐个获得,各个空间的各个装箱方案。其中,如何根据蒙特卡洛树搜索获得装箱方案的流程可以参看上述实施例,在此不再赘述。在通过蒙特卡洛树搜索之后,即可以输出任一个区域的装箱方案。如图4所示,容器分为两个区域,首先对区域1进行装货,并且将区域1装满时为止,此时根据计算获得的区域1的装箱方案。

在本实施例中,在获得一区域的装箱方案,再在搜索另一空间的装箱方案时,根据之前获得的其他空间的装箱方案更新容器的容纳信息。其中,将之前获得的其他区域的装箱方案的集合,作为新空间计算时的起始state。如图4所示,在区域1装满时,再计算区域2的装箱,在计算时以区域1装满时的状态作为区域2的起始state。

本实施例所提供的装箱方法,通过将大容器进行分割,形成多个小区域,然后在对每一小区域进行逐个装箱,从而蒙特卡洛树搜索时的随机运算量,避免可选择空间过大,而导致每一步的计算时间过长。

实施例三

本实施例提供了一种装箱方法。本实施例基于上述实施例,并对其中的步骤进行了进一步说明。具体如下:

请参看图5,所述装箱方法还包括:

步骤s506,在根据蒙特卡洛树搜索获得装箱方案的过程中,通过aabb树记录货物的层叠关系,并且判断每一货物是否符合承重限制。

本实施例的其他步骤与上述实施例相同,具体可以参看上述实施例,在此不再赘述。

在本实施例中,在执行action和state的迭代时,通过aabb树记录货物的层叠关系,并且判断每一货物是否符合承重限制。其中,aabb(axisalignedboundingbox,轴平行包围盒)结构是平行于坐标轴的包围物体的最小长方体。aabb树是基于aabb结构构建的层次结构二叉树。通过aabb树来记录箱子的层叠关系,然后在执行仿真时,将新增的货物增加至aabb树中,生成一新的结点。然后通过aabb树中货物之间的层叠关系来计算每一个货物是否符合承重限制。可以在进行仿真的过程中,引入了aabb树,并且进行了承重的判断。从而不符合承重限制的仿真将及时中断,从而减少了计算的量,并且获得的迭代结果不存在不符合承重限制的风险。具体的,可以是展开每一个树结点时,都对该树结点所对应的状态进行承重判断;或者,也可以是在执行两步的树结点展开时,再对第二步展开的树结点所对应状态,进行承重判断;或者,或者还可以是在执行n步的树结点展开时,再对第n步展开的树结点所对应状态,进行承重判断。

本实施例所提供的装箱方法,通过采用aabb树记录货物的层叠关系,再判断模拟装箱中的每一货物是否符合承重限制。从而利用了aabb树的描述方法,使得货物更便于数学化处理,计算承重以及几何拼接(几何拼接就是碰撞测试,把箱子通过碰撞模型去模拟,比如箱子a与箱子b之前有一个空隙,想要把一个箱子c塞进去,但是箱子c的长度或者宽度等大于间隙的时候,通过碰撞测试就可以得到箱子c不能放在箱子a与箱子b之间)时也更便于利用二叉树的性质来进行遍历承重计算。从而具有计算过程简单、稳定和高效的效果。

实施例四

请参看图6,本实施例提供了一种装箱方法。本实施例基于上述实施例,并对其中的步骤进行了进一步说明。具体如下:

所述通过aabb树记录货物的层叠关系,并且判断每一货物是否符合承重限制,包括:

步骤s401,在新增货物时,获得新增货物的底部直接接触的支撑物;

步骤s402,根据新增货物的重量和支撑物的接触关系,更新每一支撑物的承重信息。

本实施例的其他步骤与上述实施例相同,具体可以参看上述实施例,在此不再赘述。

在本实施例中,在迭代过程中的每一次仿真展开结点时,即在新增货物时,获得新增货物的底部直接接触的支撑物。其中,每一次仿真都涉及新增的货物编号,这个新增货物本身体积、重量和承重信息,货物即将摆放的位置信息等等。通过分析而获得新增货物的底部直接接触的支撑物,该新增货物的重量将直接影响所述支撑物的承重信息。

在本实施例中,在获得支撑物的信息之后,再根据新增货物的重量和支撑物的接触关系,更新每一支撑物的承重信息。其中,接触关系,可以是直接接触的箱子是否为新增箱子的主要支撑、辅助支撑?直接接触箱子的支撑面积相对总支撑面积的占比等等。因此,在增加新增货物时,可以通过所述接触关系来获得对应的重量分摊关系。然后根据重量分摊关系,将新增货物的重量更新至每一支撑物上。由于通过aabb树在记录层叠关系,在记录每一货物时,也会记录该货物的承重限制,以及当前的承重信息。从而仅需在获得每一箱子的重量分摊关系之后,将新增的分摊重量增加到每一支撑物上即可。

即根据新增货物的重量更新直接接触的支撑物的承重信息。本处仅仅说明更新直接接触的支撑物的承重信息。可以理解的是,若所述支撑物之下,还存在于该支撑物直接接触的其他支撑物,则该支撑物的承重信息变化,也将传导至该其他支撑物。如此随着不断的两级传导,该新增货物的重量一直将更新至树根,从而完成所有承重信息的更新。

本实施例所公开的装箱方法,通过aabb树在执行仿真的时候执行承重更新,从而能够及时判断仿真是否满足承重限制,从而能够及时中断不符合承重限制的仿真继续执行,进而减少整体的运算量,节约系统资源,缩短等待时间。

进一步的,该aabb树采用非连通有向图的表示方法优化。具体的,每个货物是图中的一个结点,结点a到结点b的边表示a支撑b。通过该非连通有向图表示方法,算法会通过广度优先遍历快速的更新箱体承重。

实施例五

请参看图7,本实施例提供了一种装箱方法。本实施例基于上述实施例,并对其中的步骤进行了进一步说明。具体如下:

所述根据新增货物的重量和直接接触货物的接触关系,更新每一支撑物的承重信息,包括:

步骤s501,将所述新增货物连接在所述支撑物的上一层,并且获得所述新增货物与每一所述支撑物的接触面积,以及与所有所述支撑物的接触总面积;

步骤s502,

在上一层的货物的重量或承重信息变化时,本层的支撑物根据所述变化更新承重信息;并且,

本层的支撑物根据与上一层的货物的接触面积,占上一层的货物的接触总面积的比值,分摊所述变化;其中,

所述最下层支撑物为所述容器的支撑面。

本实施例的其他步骤与上述实施例相同,具体可以参看上述实施例,在此不再赘述。

在本实施例中,在执行仿真时,将所述新增货物连接在所述支撑物的上一层,并且获得所述新增货物与每一所述支撑物的接触面积,以及与所有所述支撑物的接触总面积。其中,新增货物在aabb树中连接于直接接触的支撑物的上一层。则在该新增货物之上再连接其他货物时,该新增货物的承重将受到该其他货物的影响而产生变化,从而使得位于该新增货物下层的支撑物的承重信息也相应产生变化。上述的接触面积都为新增货物的地面上受到支撑的面积。例如,新增货物的下方有两个直接接触的支撑物,并且各自的接触面积为10cm2,则接触总面积为20cm2;该新增的货物作为下方的两个支撑物的上一层。

在本实施例中,在获得接触面积和接触总面积之后,再执行:在上一层的货物的重量或承重信息变化时,本层的支撑物根据所述变化更新承重信息;并且,本层的支撑物根据与上一层的货物的接触面积,占上一层的货物的接触总面积的比值,分摊所述变化,其中,所述最下层支撑物为所述容器的支撑面。其中,所述上一层的货物的重量发生变化的情况适用于,支撑物的上一层新增了所述新增货物时。所述上一层的货物的承重信息发生变化的情况适用于,支撑物的上一层货物的承重信息变化时。即新增货物的重量将直接改变树上的下一层货物的承重信息,并且间接改变树上的更下层的货物的承重信息;该影响的过程,呈逐层传递的方式进行,一直传递到树根的位置。

具体的,重量分摊的比例如下:若一支撑物的上一层新增了货物,或者上一层的货物的承重信息变化了,则该重量或变化的承重信息将传导至该支撑物。首先,获得支撑物与上一层的该货物的接触面积,以及上一层的该货物与所有支撑货物的接触中面积;然后以该接触面积占接触总面积的比值,该支撑物分摊上一层的该货物的重量或承重信息变化量。

例如:

如图4所示,支撑物h的上一层有新增货物a,该新增货物a的重量为10kg;其中,该支撑物h接触该新增货物a的接触面积为10平方厘米,该新增货物a与下层所有支撑物t的接触总面积为50平方厘米;因此,该支撑物h将分摊10kg*10/50=2kg的重量。该2kg重量将增加至该支撑物的承重信息中。而剩下的8kg将分摊至其他的支撑物上。

支撑物h的上一层货物的承重信息产生了变化,使得支撑物h的重量增加了2kg;其中,该支撑物h与下一层一个货物b的直接接触面积为40平方厘米,该支撑物h与下层所有支撑物的接触总面积为50平方厘米;因此,下一层一个货物b将分摊2kg*40/50=1.6kg的重量。该1.6kg重量将增加至下一层一个货物b的承重信息中。而剩下的0.4kg将分摊至下层其他的支撑物上。

本实施例所提供的装箱方法,首先在新增货物时,将新增货物建立在aabb树上,并且建立在支撑物的上层。然后,再在存在重量和承重信息变化时,根据由上到下的顺序,逐层传递和分摊重量,一直分摊至树根的位置。最终,以所述容器的支撑面为最下层支撑物,即树根位置。则全部的重量都将记录至容器的支撑面上,用以判断全部货物的重量是否超过容器的承重限制。从而本实施例所提供的装箱方法,通过采用支撑面积占比的方式来逐层分摊重量,则具有分摊重量合理,分摊计算速度快的效果。

实施例六

本实施例提供了一种装箱方法。

请参看图8,一种装箱方法,用于物流分拣,所述装箱方法包括:

步骤s601,获得容器的容纳信息,以及等待装载的货物的装箱信息;

步骤s602,根据所述容纳信息和所述装箱信息,获得装箱方案;

步骤s603,在获得装箱方案的过程中,通过离散化空间记录装箱方案中箱子的位置,并且判断位置限制。

在本实施例中,首先获得容器的容纳信息,以及等待装载的货物的装箱信息。其中,如上所述,容器的容纳信息包括容器的长宽高,以及内部已经存在的物品信息。例如,靠角信息,或者已经放置在内部的箱子信息等等。待装货物的装箱信息,可以包括待装货物的id、重量、体积、是否有朝上放置的要求,是否有承重限制等等。

在本实施例中,在获得所述容纳信息和装箱信息之后,再根据所述容纳信息和所述装箱信息,获得装箱方案。其中,获得装箱方案的具体算法可以是上述实施例中的蒙特卡洛树搜索。或者也可以是其他的算法,例如背景技术中所提及的启发式搜索,或者遗传算法和深度学习算法等等。

在本实施例中,在获得多个装箱方案的过程中,通过离散化空间记录装箱方案中箱子的位置,并且判断位置限制。其中,如上所述,将空间离散化,可以用将无限空间的连续值,用有限的相对值来表达。例如,离散空间表达法可以包括:极端点法extremepoints或网格法grids等等。通过对空间进行离散化表达,从而可以将连续的空间变为通过排序的数组,从可以降低计算量,增加计算效率。具体的,可以在进行模拟装箱的全过程,在每一装箱步骤中,将货物形状、在容器内的空间位置,都采用离散化空间来表达。从而降低智能装箱算法运算过程中的数据计算量和数据储存量,使得计算的速度更快,耗时更短。

本实施例所提供的装箱方法,通过离散化空间记录装箱方案中箱子的位置,再判断每一货物是否超出容器的空间限制。从而利用了离散化的表述方法来描述空间位置,使得通过模拟装箱算法来获得各个货物的位置,以及判断是否超出容器空间限制时,能够处理数据量更小,计算更简单的效果。

实施例七

本实施例提供了一种装箱设备。

所述装箱设备包括储存器和处理器;所述储存器储存有装箱程序;

所述处理器用于执行所述装箱程序,用以执行上述任一项实施例所述的装箱方法的步骤。

由于本实施例具有上述装箱方法的所有技术特征,因此本实施例也具有上述装箱方法所具有的有益效果。具体请参看上述实施例,在此不再赘述。

实施例八

本实施例提供了一种计算机可读存储介质。

所述计算机可读存储介质上存储有装箱程序,所述装箱程序被处理器执行上述任一项所述的装箱方法的步骤。

由于本实施例具有上述装箱方法的所有技术特征,因此本实施例也具有上述装箱方法所具有的有益效果。具体请参看上述实施例,在此不再赘述。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。

上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1