一种基于分支定界算法的单规格码垛方法及码垛系统
文献发布时间:2023-06-19 11:52:33
技术领域
本发明涉及自动化技术领域,尤其涉及一种基于分支定界算法的单规格码垛方法及码垛系统。
背景技术
近年来工业机器人在物流运输和工业生产领域中运用的越来越广泛,替代了大量体力、重复性工作,而码垛机器人在其中扮演着重要角色。单规格码垛又是在工业生产中比较常见的一种情况,如在食品、饮料、医药,物流等行业。而在一些行业中,运输搬运费用占很大比列,特别是在大批量的生产中,高的码垛效率能大大的减少工作时间,从而可以带来显著的经济效益。
现有的技术多用遗传算法和模拟退火算法来求解码垛问题的最优解。虽然遗传算法在解决高维空间、高复杂及非线性问题的优化中具有全局最优、效率高及易于并行计算等优点,有很强的解决问题的能力,但有着收敛速度慢和易陷入局部最优解的缺点。而模拟退火算法是一种有可能得到优化问题的全局最优解的问题求解方法,并且已经逐步成为一种用于优化问题求解的一般、通用的方法,但是即问题求解过程极其漫长,因此,现今应用的大部分码垛算法存在求解大规模效率低下,码垛利用率不高,运用范围受限的问题。
发明内容
本发明的目的在于提出一种基于分支定界算法的单规格码垛方法及码垛系统,以解决现有码垛算法中存在求解大规模效率低下,码垛利用率不高和运用范围受限的问题。
为达此目的,本发明采用以下技术方案:
本发明提供了一种基于分支定界算法的单规格码垛方法,包括以下步骤:
步骤A:输入托盘尺寸和货物尺寸;
步骤B:根据托盘尺寸建立二维笛卡尔坐标系;
步骤C:模拟货物的垛型,并根据分支定界算法,计算货物的最佳垛型;
步骤D:输出货物的最佳垛型。
所述的基于分支定界算法的单规格码垛方法中,所述步骤B包括:以所述托盘的左下角为二维笛卡尔坐标系原点,所述托盘的两侧边分别设为x轴和y轴。
所述的基于分支定界算法的单规格码垛方法中,所述步骤C包括:
步骤C1:设B为二维笛卡尔坐标系的总面积,设R为矩形的占用面积,设L为空闲面积,所述空闲面积L=总面积B-占用面积R;占用面积R和空闲面积L之间形成阶梯状的边界线,将所述边界线中水平线段的左端称为角点,而水平线段的右端称为拐点;放置矩形时,所述角点与矩形的一角重合;
步骤C2:设S为货物的堆积状态,所述堆积状态S表示阶梯状的边界线;创建队列Q和队列P,所述队列Q用于存放所有存在可用角点的堆积状态S;所述堆积状态S包括所有可用角点集合S.aList、最大利用率S.aUB和已放置矩形的利用率S.area;
步骤C3:判断队列Q是否为空,若是,则进入步骤D;若否,则进入步骤C4;
步骤C4:将所述队列Q中所有堆积状态S的S.aUB分别与默认最大利用率比较,将所述堆积状态S从队列Q转移至队列P;若所述堆积状态S的S.aUB小于默认最大利用率,则将所述堆积状态S移除;若所述堆积状态S的S.aUB大于默认最大利用率,则进入步骤C5;
步骤C5:放入一个矩形,使所述矩形的一角位于角点,并更新堆积状态S和队列Q;
步骤C6:判断S.aList中是否存在可用角点,若是,则进入步骤C7;若否,则将该堆积状态S移除,并进入步骤C3;
步骤C7:计算当前S.aUB,若当前S.aUB小于默认最大利用率,从队列Q中移除所述堆积状态S,并更换下一个可用角点,并进入步骤C6;
若当前S.aUB大于默认最大利用率,则判断堆积状态S是否存在与队列Q或队列P;
若是,更换下一个可用角点,并进入步骤C9;若否,将堆积状态S存入队列Q中,将步骤C7得到的该S.aUB设为新的默认最大利用率,更换下一个可用角点,并进入步骤C6。
所述的基于分支定界算法的单规格码垛方法中,所述步骤C5中还包括角点筛选;所述角点筛选的步骤包括:
判断角点放置矩形后,所述矩形是否超过二维笛卡尔坐标系的范围,若是,则删去角点;若否,则所述角点保留为可用角点。
所述的基于分支定界算法的单规格码垛方法中,所述步骤C5中更新堆积状态S的步骤包括:
(1)添加一个新的拐点p
(2)从拐点集合中删除由控制拐点p
所述的基于分支定界算法的单规格码垛方法中,:所述步骤C7中判断堆积状态S是否存在与队列Q或队列P后,还包括以下步骤:
创建哈希表Hash,判断所述队列Q与队列P中是否存在与当前堆积状态S可用角点相同的状态;
若是,则比较两个堆积状态S的S.area大小,将S.area小的堆积状态S从队列Q中移除,并将S.area大的堆积状态S放入哈希表Hash;
若否,将所述堆积状态S存入队列Q时,同步放入哈希表Hash。
所述的基于分支定界算法的单规格码垛方法中,设空闲面积L的最大利用率为S
所述的基于分支定界算法的单规格码垛方法中,所述已放置矩形的利用率
所述的基于分支定界算法的单规格码垛方法中,所述空闲面积L的最大利用率S
本发明还提供了一种码垛系统,包括:
输入模块,用于输入托盘尺寸和货物尺寸;
坐标建立模块,用于根据托盘尺寸建立二维笛卡尔坐标系;
模拟模块,用于根据货物尺寸模拟货物的垛型,并根据分支定界算法,计算货物的最佳垛型
输出模块,用于输出货物的最佳垛型。
本发明所述基于分支定界算法的单规格码垛方法可以具有以下有益效果:
本发明所述的单规格码垛方法应用分支定界算法,以求解单规格货物码垛的最优解。该算法通过获取堆积状态S的最大利用率,与默认最大利用率比较,如果该堆积状态S的最大利用率解小于或等于默认最大利用率,则剪去这一分支,结束迭代;如果该堆积状态S的最大利用率大于默认最大利用率,则用该最大利用率设置为默认最大利用率,然后依次尝试把下一个矩形放入该堆积状态S下中的所有可用角点上,能够在限定时间内不断迭代搜索,直至找到最优解,具有求解效率高和码垛利用率高的特点。
附图说明
附图对本发明做进一步说明,但附图中的内容不构成对本发明的任何限制。
图1是本发明其中一个实施例的流程图;
图2是本发明其中一个实施例中创建哈希表Hash的流程示意图;
图3是本发明其中一个实施例中码垛过程的示意图;
图4是实施例1中货物的最佳垛型示意图;
图5是实施例2中创货物的最佳垛型示意图;
附图中:托盘1、边界线2、可用角点21、拐点22、无效角点23、货物堆叠时浪费空间3、占用面积R、空闲面积L。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
在本发明的描述中,需要理解的是,术语“左”、“右”、“竖直”、“水平”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
术语解释:
(1)分支定界算法:分支定界算法是一种求解整数规划问题的最常用算法。通常把全部可行解空间反复地分割为越来越小的子集,称为分枝;并且对每个子集内的解集计算一个目标下界(对于最小值问题),这称为定界。在每次分枝后,凡是界限超出已知可行解集目标值的那些子集不再进一步分枝,这样,许多子集可不予考虑,这称剪枝。
(2)单规格码垛:指把大小完全一样的货物,按一定的码放顺序放在托盘、栈板上,该问题一般可以简化成二维布局问题,即将相同大小的小矩形放入到一大矩形中,要求放入的小矩形尽可能多。
请参照图1~图5,本发明提供了一种基于分支定界算法的单规格码垛方法,包括以下步骤:
步骤A:输入托盘1尺寸和货物尺寸;
步骤B:根据托盘1尺寸建立二维笛卡尔坐标系;
步骤C:模拟货物的垛型,并根据分支定界算法,计算货物的最佳垛型;
步骤D:输出货物的最佳垛型。
本发明基于分支定界算法来求解单规格码垛问题,由于货物为单规格,货物高度、长度和宽度相同,故可以省去货物的高度,将其简化为二维布局问题,本发明采用两种大小不同的矩形表示货物和托盘小矩形正交放置大矩形上,且数量不受限制,要求放入小矩形的数量尽可能多。用阶梯状的边界线表示小矩形在大矩形上的堆积状态,设定小矩形只能放置在可用角点21上。并且,调用了贪婪算法生产完整解,加快求解过程。
进一步地,所述步骤B包括:以所述托盘1的左下角为二维笛卡尔坐标系原点,所述托盘1的两侧边分别设为x轴和y轴。
更进一步地,请参照图1,所述步骤C包括:
步骤C1:设B为二维笛卡尔坐标系的总面积,设R为矩形的占用面积,设L为空闲面积,所述空闲面积L=总面积B-占用面积R;占用面积R和空闲面积L之间形成阶梯状的边界线2,将所述边界线2中水平线段的左端称为角点,而水平线段的右端称为拐点22;放置矩形时,所述角点与矩形的一角重合;
步骤C2:设S为货物的堆积状态,所述堆积状态S表示阶梯状的边界线2;创建队列Q和队列P,所述队列Q用于存放所有存在可用角点21的堆积状态S;所述堆积状态S包括所有可用角点集合S.aList、最大利用率S.aUB和已放置矩形的利用率S.area;
步骤C3:判断队列Q是否为空,若是,则进入步骤D;若否,则进入步骤C4;
步骤C4:将所述队列Q中所有堆积状态S的S.aUB分别与默认最大利用率比较,将所述堆积状态S从队列Q转移至队列P;若所述堆积状态S的S.aUB小于默认最大利用率,则将所述堆积状态S移除;若所述堆积状态S的S.aUB大于默认最大利用率,则进入步骤C5;
步骤C5:放入一个矩形,使所述矩形的一角位于角点,并更新堆积状态S和队列Q;
步骤C6:判断S.aList中是否存在可用角点21,若是,则进入步骤C7;若否,则将该堆积状态S移除,并进入步骤C3;
步骤C7:计算当前S.aUB,若当前S.aUB小于默认最大利用率,从队列Q中移除所述堆积状态S,并更换下一个可用角点21,并进入步骤C6;
若当前S.aUB大于默认最大利用率,则判断堆积状态S是否存在与队列Q或队列P;
若是,更换下一个可用角点21,并进入步骤C9;若否,将堆积状态S存入队列Q中,将步骤C7得到的该S.aUB设为新的默认最大利用率,更换下一个可用角点21,并进入步骤C6。
本发明所述的单规格码垛方法应用分支定界算法,以求解单规格货物码垛的最优解。该算法通过获取堆积状态S的最大利用率,与默认最大利用率比较(初始状态下,当前最优解可以设为零),如果该堆积状态S的最大利用率解小于或等于默认最大利用率,则剪去这一分支,结束迭代;如果该堆积状态S的最大利用率大于默认最大利用率,则用该最大利用率设置为默认最大利用率,然后依次尝试把下一个矩形放入该堆积状态S下中的所有可用角点21上,得到子状态S’,如果得到的子状态S’的最大利用率小于默认最大利用率,或者获得的子状态S’已放置矩形的利用率S.area小于该堆积状态S,则移除这一分支,然后再尝试下一个角点;如果得到的子状态S’的最大利用率解大于默认最大利用率,计算该子状态S’的完全状态的利用率上界,然后用子状态S’替换当前最佳解,将子状态S’更新为堆积状态S,然后继续尝试将下一个矩形放入角点。在限定时间内不断迭代搜索,直至找到最优解。若在搜索过程中,找到S’状态的互补状态,把和其互补阶梯结合在一起,获得一个完全状态,并计算该完全状态的最大利用率解S.aUB,若该完全状态的最大利用率解S.aUB大于当前最佳解,则用该值替换当前最优解,完成当前最佳解的更新。
完全状态的定义为:如果S.aList中为空或者已无可用角点,使矩形不能放入,则称之为完全状态,反之则为不完全状态;
垛型状态是随着码垛过程而改变的,初始状态时,每更新一个堆积状态S就需要把这个堆积状态S存入队列Q;队列P时存了整个码垛过程中的所有堆积状态S,用于剪枝判断。当堆积状态S所有可用角点放置完,或者是它的最大利用率小于默认最大利用率时,将堆积状态S从队列Q移除,当所有可能的堆积状态S都计算完成后,均从队列Q中移除,此时,队列Q为空,即可停止循环,并将此时的当前最佳解作为货物的最佳垛型输出。
如果堆积状态S’是在堆积状态S的S.aList中的一个可用角点22上放置一个矩形而形成,则将堆积状态S’称为堆积状态S的子状态,将堆积状态S称为堆积状态S’的父状态。若堆积状态S所有的子状态都生成了,则称堆积状态S为扩展状态,反之,则为非扩展状态;队列Q用来存放所有非扩展状态,队列P用来存放所有扩展状态。
请参照图3,托盘的尺寸的长度为H,宽度为W,令B=[0,W]×[0,H]表示托盘边界上和托盘内所有点的集合,将尺寸为h×w的货物设为长度为h,宽度为w的矩形,当矩形放入笛卡尔二维直角坐标系时,矩形的左下角坐标为(x
具体地,所述步骤C5中还包括角点筛选;所述角点筛选的步骤包括:
判断角点放置矩形后,所述矩形是否超过二维笛卡尔坐标系的范围,若是,则删去角点;若否,则所述角点保留为可用角点21。
在实际应用过程中,部分角点放置矩形后,矩形的部分范围会超过二维笛卡尔坐标系的范围,表示货物无法放置于托盘1中,因此,该角点实际上无法放置矩形,属于无效角点23,在步骤C5中需要将这种无效角点23移出,使得所述单规格码垛方法能够正常模拟货物的垛型。
具体地,所述步骤C5中更新堆积状态S的步骤包括:
(1)添加一个新的拐点p
(2)从拐点22集合中删除由控制拐点p
边界线可以用k个水平线段的集合(u
优选地,请参照图2,所述步骤C7中判断堆积状态S是否存在与队列Q或队列P后,还包括以下步骤:
创建哈希表Hash,判断所述队列Q与队列P中是否存在与当前堆积状态S可用角点21相同的状态;
若是,则比较两个堆积状态S的S.area大小,将S.area小的堆积状态S从队列Q中移除,并将S.area大的堆积状态S放入哈希表Hash;
若否,将所述堆积状态S存入队列Q时,同步放入哈希表Hash。
哈希表Hash用来存放所有的未被控状态,如果堆积状态S’和堆积状态S的角点相同,但S’.area≤S.area,则称堆积状态S’被堆积状态S所控制。由于本发明所述单规格码垛方法要求使目标利用率最大,所以堆积状态S’可以移除,以减少计算量,加快计算速度。
具体地,设空闲面积L的最大利用率为S
具体地,所述已放置矩形的利用率
具体地,所述空闲面积L的最大利用率S
对于给定的堆积状态S,假设占用面积R的面积为S
所述背包问题具体计算为:由于是单规格的货物,物品的价格可以都设为1,总重量就相当于托盘的总面积S,物品的重量就相当于货物的面积t,最多放置的物品数量
本发明还提供了一种码垛系统,包括:
输入模块,用于输入托盘尺寸和货物尺寸;
坐标建立模块,用于根据托盘尺寸建立二维笛卡尔坐标系;
模拟模块,用于根据货物尺寸模拟货物的垛型,并根据分支定界算法,计算货物的最佳垛型
输出模块,用于输出货物的最佳垛型。
实施例1
输入托盘尺寸和货物尺寸,托盘尺寸为2560mm×1610mm,货物尺寸为143mm×84mm,根据托盘1尺寸建立二维笛卡尔坐标系,模拟货物的垛型,并根据上述步骤计算货物的最佳垛型,输出货物的最佳垛型;输出货物的最佳垛型,所述2560mm×1610mm的托盘1最多能够放置143mm×84mm的货物的数量为341个货物,空间利用率为99.38%,本实施例的最佳垛型如图4所示。
实施例2
输入托盘尺寸和货物尺寸,托盘尺寸为2625mm×1600mm,货物尺寸为137mm×95mm,根据托盘1尺寸建立二维笛卡尔坐标系,模拟货物的垛型,并根据上述步骤计算货物的最佳垛型,输出货物的最佳垛型;输出货物的最佳垛型,所述2625mm×1600mm的托盘1最多能够放置137mm×95mm的货物的数量为320个货物,空间利用率为99.16%,本实施例的最佳垛型如图5所示。
以上结合具体实施例描述了本发明的技术原理。这些描述只是为了解释本发明的原理,而不能以任何方式解释为对本发明保护范围的限制。基于此处的解释,本领域的技术人员不需要付出创造性的劳动即可联想到本发明的其它具体实施方式,这些等同的变型或替换均包含在本申请权利要求所限定的范围内。
- 一种基于分支定界算法的单规格码垛方法及码垛系统
- 一种适用于多规格纸箱的包装码垛机械手及码垛线