CN115994650A - 一种箱装货物智能垛型规划方法及系统 - Google Patents

一种箱装货物智能垛型规划方法及系统 Download PDF

Info

Publication number
CN115994650A
CN115994650A CN202211420451.1A CN202211420451A CN115994650A CN 115994650 A CN115994650 A CN 115994650A CN 202211420451 A CN202211420451 A CN 202211420451A CN 115994650 A CN115994650 A CN 115994650A
Authority
CN
China
Prior art keywords
box
cargoes
function
stack
order
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202211420451.1A
Other languages
English (en)
Inventor
岳华
方锦明
张大勇
马立新
赵逍
尚高海
张鹏宇
邢学智
郑琳
李蓉
菊伟
董德威
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
KSEC Intelligent Technology Co Ltd
Original Assignee
KSEC Intelligent Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by KSEC Intelligent Technology Co Ltd filed Critical KSEC Intelligent Technology Co Ltd
Priority to CN202211420451.1A priority Critical patent/CN115994650A/zh
Publication of CN115994650A publication Critical patent/CN115994650A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • BPERFORMING OPERATIONS; TRANSPORTING
    • B65CONVEYING; PACKING; STORING; HANDLING THIN OR FILAMENTARY MATERIAL
    • B65BMACHINES, APPARATUS OR DEVICES FOR, OR METHODS OF, PACKAGING ARTICLES OR MATERIALS; UNPACKING
    • B65B5/00Packaging individual articles in containers or receptacles, e.g. bags, sacks, boxes, cartons, cans, jars
    • B65B5/10Filling containers or receptacles progressively or in stages by introducing successive articles, or layers of articles
    • B65B5/12Introducing successive articles, e.g. confectionery products, of different shape or size in predetermined positions
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B65CONVEYING; PACKING; STORING; HANDLING THIN OR FILAMENTARY MATERIAL
    • B65BMACHINES, APPARATUS OR DEVICES FOR, OR METHODS OF, PACKAGING ARTICLES OR MATERIALS; UNPACKING
    • B65B57/00Automatic control, checking, warning, or safety devices
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02TCLIMATE CHANGE MITIGATION TECHNOLOGIES RELATED TO TRANSPORTATION
    • Y02T10/00Road transport of goods or passengers
    • Y02T10/10Internal combustion engine [ICE] based vehicles
    • Y02T10/40Engine management systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Mechanical Engineering (AREA)
  • Stacking Of Articles And Auxiliary Devices (AREA)

Abstract

本发明涉及自动化码垛技术领域,公开了一种箱装货物智能垛型规划方法及系统,该智能垛型规划方法,针对箱装货物码垛问题,量化限制条件,求解箱装货物码垛状态的组合优化。本发明解决了现有技术存在的难以求解大规模集装箱装载问题的较优解等问题。

Description

一种箱装货物智能垛型规划方法及系统
技术领域
本发明涉及自动化码垛技术领域,具体是一种箱装货物智能垛型规划方法及系统。
背景技术
随着科技的不断发展与创新,物流正逐步走向全面自动化。无人机送货减少人员接触,突破地形障碍;智慧停车技术节约成本,提高空间利用率;而自动装车技术,解放人力资源,提高装车效率。其中,在自动装车技术中,箱装货物的垛型规划是一个重点问题,需要考虑不同品规的箱装货物以及不同类型的货车。
箱装货物装车的问题属于一种复杂的离散组合优化问题,可采用的算法有全局最优算法,启发式算法和元启发式算法。全局最优算法理论上可以得到最好的解,但是时间和空间成本巨大,不符合实际的应用。元启发式算法模拟自然界,比如遗传算法,蚁群算法,随机性比较强,不适用于装车问题。而启发式算法主要有局部搜索算法和集束算法,前者需要先有一个初始解,最终结果的好坏比较依赖初始解,同时也具有一定的随机性。而集束算法时间空间消耗较少,并且比较稳定,最适合用于箱型货物装车的垛型规划。
集束算法在装车领域的应用,已有一些探索和研究。电子科技大学的杨会志教授提出在货车装箱问题中,除了追求最大的空间利用率,还需要考虑到货物的承重性,稳定性,优先级等问题,并对集束算法进行了改进,对自动装车的发展有一定启发与帮助;红云红河集团等单位的徐跃明等人,首次将集束算法应用到成品烟箱自动装车系统,提出成品烟箱自动装车系统垛型算法,比较有效的解决了垛型规划问题,保证了空间利用率在90%以上,保证了垛型稳定性,但是面对多品规烟箱时,有些乏力,装车效率较低,装卸货物比较麻烦。综上,现有技术的组合优化方法及算法结构设计难以求解大规模集装箱装载问题的较优解。
发明内容
为克服现有技术的不足,本发明提供了一种箱装货物智能垛型规划方法及系统,解决现有技术存在的难以求解大规模集装箱装载问题的较优解等问题。
本发明解决上述问题所采用的技术方案是:
一种箱装货物智能垛型规划方法,针对箱装货物码垛问题,量化限制条件,求解箱装货物码垛状态的组合优化。
作为一种优选的技术方案,采用分段集束搜索算法求解箱装货物码垛状态的组合优化。
作为一种优选的技术方案,求解箱装货物码垛状态的组合优化时,输入为箱装货物订单数据,输出为箱装货物码垛状态的组合优化结果。
作为一种优选的技术方案,求解箱装货物码垛状态的组合优化时,运行函数为ModelSegmentInout,其可以读取订单信息并设计出垛型,ModelSegmentInout函数调用的函数包括ReadRequest、Orders2Types、Divide和SBS;其中,ReadRequest函数输入为订单文件和数据读取精度、输出为车辆与订单信息,Orders2Types函数输入为ReadRequest函数输出的订单信息并将箱装货物按照品类和地点重新划分,Divide函数将不同形状、来源地的箱装货物进行分类排序,SBS函数为垛型设计的主体函数,SBS函数用于:调用ClusterGeneration函数通过箱装货物信息生成一系列Cluster,调用SegmentBeamSearch函数完成分段集束搜索步骤,以及,调用V_ratio_full函数计算垛型的空间利用率。
作为一种优选的技术方案,求解箱装货物码垛状态的组合优化时,SBS函数还用于调用DeleteSpace函数删除无法继续摆放的空余空间。
作为一种优选的技术方案,求解箱装货物码垛状态的组合优化时,运行函数还调用loading_type函数、loading_guide函数、ShowLoadingDynamiclly函数,其中,loading_type函数输入为设计好的垛型、输出为箱子码放顺序,loading_guide函数用于指导自动装卸车完成箱装货物码放,ShowLoadingDynamiclly函数用于将码放过程通过动画形式记录下来。
作为一种优选的技术方案,量化限制条件包括:
任意两个箱装货物不在同一空间坐标:
Figure BDA0003940981560000031
Figure BDA0003940981560000032
箱装货物放置位置必须在车内:
Figure BDA0003940981560000033
码放后箱装货物总体积小于集装箱体积:∑Vij≤VC
对箱装货物进行分类,根据每类箱装货物的数量从多至少的顺序依次摆放,摆放的规则如下:
Figure BDA0003940981560000034
Figure BDA0003940981560000035
码放箱装货物的总时间小于规定最大时间:∑tl≤tlim
箱装货物总重量要小于集装箱最大承重:∑mk<Mlim
同一列货物总重量不能超过最底层货物承载能力:
Figure BDA0003940981560000036
Figure BDA0003940981560000037
其中,Vc表示整车厢体积,i表示订单编号,j表示箱装货物编号,i1、i2表示任意两个订单编号,j1、j2表示第i个订单中的任意两个箱装货物编号,k表示分类后的某类箱装货物,k1、k2表示任亮两个箱装货物的分类编号,n表示类编号为k的箱装货物的数量,Vij表示第i个订单第j箱箱装货物的体积,(xij,ij,ij)表示箱装货物上某点的坐标,
Figure BDA0003940981560000041
表示订单编号i1、箱装货物编号j1的x轴坐标,
Figure BDA0003940981560000042
表示订单编号i2、箱装货物编号j2的x轴坐标,
Figure BDA0003940981560000043
表示订单编号i1、箱装货物编号j1的y轴坐标,
Figure BDA0003940981560000044
表示订单编号i2、箱装货物编号j2的y轴坐标,
Figure BDA0003940981560000045
表示订单编号i1、箱装货物编号j1的z轴坐标,
Figure BDA0003940981560000046
表示订单编号i2、箱装货物编号j2的z轴坐标,X表示箱装货物长包含的所有点集,Y表示箱装货物宽包含的所有点集,Z表示箱装货物高包含的所有点集,tl表示码放每个箱装货物时间,tlim表示设定的时间最大值,mk表示类编号为k的箱装货物的单个重量,mk lim表示类编号为k的箱装货物的最大承重,v表示箱装货物的竖直方向的个数编号,vmax表示当前竖直方向个数编号最大值。
作为一种优选的技术方案,组合优化的目标包括得到最大化车厢空间利用率,公式如下:
Figure BDA0003940981560000047
其中,Maximize UtilizationRate表示最大化车厢空间利用率。
一种箱装货物智能垛型规划系统,基于所述的一种箱装货物智能垛型规划方法,包括相互连接的量化模块、求解模块;其中,量化模块用于给出量化限制条件,求解模块用于求解箱装货物码垛状态的组合优化。
本发明相比于现有技术,具有以下有益效果:
(1)本发明的组合优化方法及算法结构,能设计出具有较高空间利用率的垛型,并且满足运输过程中的稳定性,空间利用率在90%以上,可视化程度高,方便调试;
(2)本发明能适应多品规多地点箱子混装和多种车辆的情况,便于装卸,不同地点的箱子需要满足严格的卸车前后顺序,车辆分为鹅颈板车和平板车两种;
(3)本发明箱子出库为整托盘出库,能基于不同的场地条件,设计不同的垛型;
(4)本发明输出垛型位置信息,指导机械臂完成码垛过程,并通过改善垛型,保证装车效率;
(5)本发明执行效率,算法实际执行速度相比用普通集束搜索算法有很大提升。
附图说明
图1为码垛的总体思路示意图;
图2为分段集束搜索算法示意图之一(搜索宽度为2);
图3为分段集束搜索算法示意图之一(搜索宽度为4)
图4为分段集束搜索算法流程图;
图5为图4的局部放大图之一;
图6为图4的局部放大图之一;
图7分段集束搜索算法实际基于烟箱垛型规划运行过程示意图
图8为Available Maximum Spaces示意图;
图9为有鹅颈版垛型设计效果图
图10为无鹅颈板垛型设计效果图
图11为货箱超出车厢装载能力时的垛型设计效果图;
图12为货箱远小于车厢装载能力时的垛型设计效果图;
图13为分段集束搜索算法函数关系图。
具体实施方式
下面结合实施例及附图,对本发明作进一步的详细说明,但本发明的实施方式不限于此。
实施例1
如图1至图13所示,本发明算法思路如下:
本发明的主要目标是设计垛型算法,具体实现中需要算法实现和可视化仿真系统两个内容。
为了显示算法的结果并验证其正确性,本发明完成了一套简单的垛型可视化仿真系统,在算法之外实现对车厢空间的还原。分段集束算法在自动装车系统上的应用解决了这些问题,分类堆放方便箱型货物的装载和卸载、分段使用集束算法缩短垛型设计时间,提高装车效率。
具体到算法设计问题中,本发明使用的是本发明采用的为图2和3展示的这种分段集束搜索的方法。例如图3是在搜索宽度是4的情况下,算法会对初始状态拓展出四个新的状态,对这四个新状态分别做出评价,然后取评价最高的四个状态,分别各拓展出四个新状态;再对四个新状态进行评价,以此类推。算法流程图如图4至图6所示。
数学模型如下:
针对实际的箱装货物码垛问题,以烟箱为例进行了数学建模,并对一些限制条件进行量化。
优化目标由下面的公式组成。在订单中烟箱总数能够装满车厢的情况下,目标是最大的车厢空间利用率同时在货箱总数无法装满车厢时,也能得到一个较优的垛型。
Figure BDA0003940981560000061
下面给出了7点关于垛型设计数学模型中应满足的限制条件:1.任意两个烟箱不在同一空间坐标;2.烟箱位置必须在车内;3.码放后烟箱总体积小于集装箱体积;4.不同规格、来源地的烟箱需要按照类型从多到少,位置从里向外从左向右从下向上的顺序依次摆放5.码放烟箱的总时间小于规定值(即程序不可以运行过长的时间);6.烟箱总重量要小于集装箱最大承重;7.同一列货物总重量不能超过最底层货物承载能力。
subject to:
Figure BDA0003940981560000071
对箱装货物进行分类,根据每类箱装货物的数量从多至少的顺序依次摆放。实际分类时,可以按来源地进行分类,再辅以按规格进行分类,数量多的放入集装箱最里面、最下面,数量少的放入集装箱最外面、最上面,这便实现了y、z轴的摆放顺序,至于左右方向,则可采用从左至右或从右至左的依次摆放顺序。(x,y,z)代表箱装货物的三维坐标。
实际使用时,可选(xij,yij,zij)为箱装货物左下顶点坐标或几何中心的坐标。
分段集束搜索算法:
Clusters简介:
Clusters的定义:
Clusters指的是由若干个烟箱组成的立方体集合。其长宽高为能够将特定立方体完全包含的最小长方体的长宽高。单个cluster作为后续后续设计垛型过程中的最小结构单元,即在后续设计垛型设计过程中以单个cluster最小单元。
Clusters的产生方式:
Clusters的产生方式主要有两种,分为迭代组合和同种烟箱简单组合。
Clusters产生方式1:首先由每一个类型的烟箱通过不同的空间朝向生成4种cluster,组成一个集合CLUSTERS。再将CLUSTERS中的所有cluster进行相互组合形成新的cluster,并重复此过程不断迭代,期间通过每个Cluster的空间利用率等参数对CLUSTERS集合进行删减。直到产生特定数量的Cluster后结束这一过程。其特点为迭代计算用时长、理论上产生的Cluster类型更多(相比于第二种方法)、为后续垛型设计提供更多选择空间。
Clusters产生方式2:首先由每一个类型的烟箱通过不同的空间朝向生成4种Cluster,组成一个集合CLUSTERS。以第一次产生的每一个Cluster为主体,通过放置多个相同的Cluster形成新的Cluster。例如对于每一个烟箱,通过摆放i×j×k(i,j,k为0-4的整数)个相同烟箱形成新的大长方体形成Cluster。其特点为速度快、只能产生由同种类型同一姿态的烟箱构成的Cluster,类型相对较少,实验表明这种方法能够满足后续要求。
分段搜索:
为了提高搜索效率,搜索不针对整个车厢,而是分段进行搜索。如图7所示,具体来说,先对不同的箱子在满足顺序约束的情况下进行排序和组合,然后按顺序逐个放进车厢。例如第一种烟箱是玉溪,使用集束搜索把它全部放进车厢里得到左边这个状态;然后把一些X坐标比较小的,也就是在车厢中比较深的空余空间删除,因为机械手不太可能深入到箱子的间隙里码放箱子,这一步相当于是在解决装卸顺序的约束;把删除操作过后的新状态作为初始状态,继续用集束搜索往里面放入下一批箱子,比如红塔山。不断重复这个过程,直到箱子全部被放完或者车厢被放满。
状态表示:
搜索过程中的状态由四个基本部分组成:未放置的箱子集合Unfinished Boxes;可用空间的集合Available Spaces,即还有哪些地方可以放箱子;当前可选的烟箱块Available Clusters;已经码放完成的箱子顺序和位置的记录Location。
可用空间的集合的表示:如图8所示,把一个立方体放入一个空的立方体空间后,可用的空间是一个不规则的立体图形。使用重叠的长方体集合Available Maximum Spaces表示,如图8左图中的空余空间可以由右面三个透明空间表示,即以其立方体一个面为分界面,向空的方向最大延伸的长方体。
状态拓展:
接下来介绍搜索过程中的状态转移,就是怎么由一个现有的状态拓展出一个新的状态。这个过程简单来说是一个搭积木的过程,每次选择一个空余空间、选择由多个箱子组成的Cluster,然后将Cluster放入空余空间中并更新状态。
在选择空余空间时采用加权曼哈顿距离公式对可选空间进行评价排序,取出优先级最高的空间。加权曼哈顿距离公式如下:distance=a1X+Z+a2Y其中a1<max(Z)且a2·max(Y)<1。即每次优先选取选择最靠车头、最靠下、最靠左的空余空间,a1,2在算法中以评价函数参数的形式体现。
在选定待放入烟箱和空余空间后需要对状态进行更新。具体为从剩余箱子的集合中减去Cluster包含的箱子,从空余空间集合中删掉放入箱子的空间,并且加入新产生的空间,这其中需要处理空间相互包含的情况,同时如果前面选择了空余空间后遍历所有块都无法放入,则删除该空间,如果烟箱块需要的烟箱数量大于剩余烟箱,则在可选的烟箱块集合中删除该块,最后在Location中记录下这步操作,完成状态拓展过程。
状态评价:
在搜索的过程中,每拓展一些新状态,就要对新状态进行一次评价,从中挑选出最好的几个状态继续往下搜索,其余不好的状态丢弃。采用如下的评价过程:
从现有状态出发进行搜索,每次只拓展一个新状态,即搜索宽度为1,直到无法拓展新状态得到完整解。完整解的空间利用率作为当前状态的评价。
通过上述以Cluster为最小单元进行搜索并且经过状态拓展、评价、再搜索过程,最后可以得到一个搜索最优垛型的解,根据此解可以指导自动装卸车完成码垛工作
摆放顺序指导:
在设计出垛型后,算法还需指导自动装卸车完成码垛工作,因此需要能够根据垛型来反推出不同位置烟箱的码放顺序与位置。码放顺序原则如下:
原则1:最里最下最左的烟箱优先码放:
若任意两烟箱左下坐标分别为(x1,y1,z1)和(x2,y2,z2)
若x1<x2或x1=x2,z1<z2或x1=x2,z1=z2,y1<y2,烟箱1先于烟箱2码放;
原则2:放入某个烟箱时,该烟箱下底面与其他烟箱或车厢底面的接触面积之和应当大于下地面面积的90%;
原则1保证了已放入的烟箱不会对机械装置的后续放入过程对发生干涉,原则2保证了装入的烟箱具有足够的支撑面积,不容易发生倾倒。
满足上述两个原则的码垛流程如下:
1、先将垛型中所有烟箱按照原则1排定摆放顺序,从先到后编号从1到N;
2、i=1至N,依次考虑第i个烟箱时,依据原则2判断能否放入,若不能放入则进入等待序列;当自动装卸车恰好可以一次性放入其能力极限的烟箱个数时,考虑等待序列中的烟箱能否进入摆放序列,若能放入则进入摆放序列,并将等待序列中重新满足原则2的烟箱进入摆放序列;
系统输入:
系统的输入为含有烟箱订单和车厢数据的excel表格。测试数据均基于某公司提供的实际订单数据。
系统输出:
烟箱垛型图,如图9至图12所示。
图中最外侧长方体代表一个车厢,单个小长方体代表单个烟箱,同种颜色的小长方体代表同一订单中同一规格的烟箱,图9中右下角白色部分代表车辆鹅颈板(实际中不能放置货箱)。对于两种实际装载中会出现的极端的情况也有处理:①当烟箱总量超出当前车厢装载能力时,设计目标为最大化车厢空间利用率,如图11所示。②当订单中烟箱总量低于当前车厢装载能力时,设计目标为最小化垛型的最大高度以保证运输过程中的稳定性,如图12所示。
参数测试与系统稳定性测试:
系统参数测试:
系统的评价函数中有许多参数,需要通过实验确定各个参数的最佳取值。
下表展示了部分实验结果,评价函数中各参量不同取值对运行时间和搜索结果空间利用率的影响。其中a1表示相邻面积权重,a2表示单个Cluster中烟箱个数权重,p表示计算相邻面积时的距离系数。
表1参数取值对运行时间和空间利用率的影响(部分结果)
Figure BDA0003940981560000111
Figure BDA0003940981560000121
从实验结果中可以看出,相邻面积权重为4,单个Cluster中烟箱个数权重为0.05,相邻面积时的距离系数为0.1,搜索宽度为4时,相同情况下车厢的空间利用率最高。
系统效率测试:
下面为程序针对不同订单数据运行结果对比。
表3程序在最优参数下对不同订单数据使用集束搜索和分段集束搜索完成垛型设计的结果对比
Figure BDA0003940981560000122
表4程序在对不同订单数据达到90%空间利用率所需时间
数据模板1 数据模板2 数据模板3 数据模板4
运行时间/s 99 75 60 52
空间利用率/% 90.2 91.32 90.99 90.81
由以上数据可知,对于不同的订单数据,程序运行结果会有一定的差异性,这主要是由于订单中货箱大小、数量不同所导致的。由上表可以得出,程序对不同订单输入都能达到至少90%的空间利用率,满足装车的空间利用率需求。从表3的对比可以看出,使用分段集束搜索进行垛型设计,相比使用集束搜索,可以提高约1/3的搜索效率,这样的效率提升在货物个数庞大、种类较多的情况下会更加明显。同时由表4可知,只要求90%空间利用率的情况下,使用分段集束搜索仅需要不到2分钟的时间即可达到此目标,满足时效性需求。
实施例2
如图13所示,本发明CLP(集装箱装载问题)程序说明:
一、程序结构:
分段集束搜索垛型设计算法的运行函数为ModelSegmentInout,其可以读取订单信息并设计出垛型。该函数调用的函数包括ReadRequest,Orders2Types和SBS。
ReadRequest函数输入为订单文件和数据读取精度,输出为车辆与订单信息。
Orders2Types函数输入为ReadRequest函数输出的订单信息,并将烟箱按照品类和地点重新划分。
BS函数为垛型设计的主体函数。首先其调用Cluster生成函数,通过烟箱信息生成一系列Cluster,为之后的Cluster摆放提供选择。Cluster生成函数有EasyClusterGeneration、ClusterGeneration和两个函数可供选择,具体功能不同见后文的详细说明。
之后SBS函数调用SegmentBeamSearch函数完成分段集束搜索步骤。SegmentBeamSearch函数为分段集束搜索的主体函数,下含ExpandState函数与GreedySegment函数。其中ExpandState函数实现了状态扩展过程,即将合适的cluster放入合适的available space中,扩展出新的状态。其首先从所有可供选择的Cluster和空余空间中各选出一个,并通过Evaluation函数评估选择好坏,再通过PlaceClusterinSpace函数完成放置过程。
而GreedySegment函数在扩展后的状态基础上,每次依据Evaluation选取最优的1个cluster放入available space中(即每次拓展一个新状态),直到状态无法拓展,得到一个完整解。相当于搜索宽度为1的集束搜索过程。
当完成SegmentBeamsearch函数后,SBS函数最后调用V_ratio_full函数计算垛型的空间利用率。
该算法结构与上述基础算法基本一致,只新增了DeleteSpace函数,该函数删除了距现今摆放位置靠里相应距离之外的空余空间,这主要是考虑到此内部空间已经无法通过自动装卸车码放,删去可以减少搜索量,提高运行速度。
同时最下方新增了loading_type、loading_guide、ShowLoadingDynamiclly函数。其中loading_type函数输入为设计好的垛型,输出为箱子码放顺序,loading_guide函数指导自动装卸车完成烟箱码放,ShowLoadingDynamiclly函数则将码放过程通过动画形式记录下来。
二、数据结构:
1.【订单部分】Container为表征汽车车厢的结构体
包含字段‘L0’'W0”H0”Lg”Wg”Hg',依次代表车厢长宽高和车厢鹅颈板的长宽高,'G'代表是否有鹅颈板。
2.【订单部分】Containers是由Container结构体构成的元胞数组,用于多车问题中
3.【订单部分】Type0为表征烟箱名称及尺寸的结构体。
包含字段‘L”W”H”Name',依次表示烟箱长宽高和名称。
4.【订单部分】Orders为表征订单信息的结构体,与实际的“订单”含义不同
包含字段Type和Number。Number表示订单数量。
5.【订单部分】Order为表征订单信息的结构体,与实际的“订单”含义相同
Orders为元胞数组,每个元胞中是一个结构体数组,数组的每个元素表示订单中的一种烟。结构体的构成:
Name:订单中一种烟的烟名
Number:订单中一种烟的数量
Destination:订单中一种烟的目的地
L,W,H订单中一种烟箱的长宽高
6.【订单部分】Types为元胞数组,数组的每一个元胞中为一个结构体,表示一种烟箱,结构体的组成:
Order:该品类所属的订单号
Name:该品类的名称,如果多个实际品类合并成一个品类则没有此字段
Number:该品类烟箱的数量
Pallet:该品类出货时一个托盘上烟箱的数量
Destination:该品类的目的地
Type:结构体
L:该品类烟箱的长
W:该品类烟箱的宽
H:该品类烟箱的高
7.【订单部分】Shapes为元胞数组,数组的每一个元胞中为一个结构体,表示订单号相同、目的地相同、形状相同的一批烟箱,结构体的组成:
Order:该品类所属的订单号
Number:该品类烟箱的数量
Pallet:该品类出货时一个托盘上烟箱的数量
Destination:该品类的目的地
Type:结构体
L:该品类烟箱的长
W:该品类烟箱的宽
H:该品类烟箱的高
8.【订单部分】Shapes2Types为元胞数组,表示从Shapes到Types的映射,第ii个元胞中为一个一维数组[a,b,c],表示Shapes数组中的第ii个Shape是由Types数组中的第a、b、c个type合并而成的。
9.【算法部分】状态States结构体
车厢参数Container
装车车厢参数,与1.结构相同
烟箱品类Types
Nt元胞数组,Nt为品类数量
此处的品类与订单中烟的品类不一一对应,可能有多个实际品类合并或一个实际品类被拆分的情况
每个元胞中为一个结构体:
Order:该品类所属的订单号
Name:该品类的名称,如果多个实际品类合并成一个品类则没有此字段
Number:该品类烟箱的数量
Pallet:该品类出货时一个托盘上烟箱的数量
Destination:该品类的目的地
Type:结构体
L:该品类烟箱的长
W:该品类烟箱的宽
H:该品类烟箱的高
空余空间Available_Spaces
二维数组,每行6个元素表示一个空余空间(x,y,z,l,w,h)
未放置箱子Unfinished Boxes
一维数组,第i个元素表示第i种箱子剩余的数量
Clusters
二维元胞数组,每行表示一种Cluster:
第一个元素Clusters{i,1}:1*3数组,表示Cluster整体的L、W、H
第二个元素Clusters{i,2}:Cluster中箱子的个数N
第三个元素Clusters{i,3}:N*1数组,表示N个烟箱的品种号
第四个元素Clusters{i,4}:N*6数组,前三维代表每个烟箱的长宽高,后三维表示每个烟箱在Cluster中的坐标位置
第五个元素Clusters{i,5}:Cluster的地点信息
操作列表Locations
n*(3+1)数组,每行的四个元素表示x,y,z,cluster类型(对应Clusters数组中的行号)
Available Clusters
一维数组,代表当前状态下所有可用的cluster序号
MaxX最大X
当前状态下最靠外的箱子的最外沿x坐标。
10.【输出部分】SPACE为表征车厢空间的立方单元集合。
11.【输出部分】SIZE为三维矩阵SPACE的大小数组,SIZE(1)、SIZE(2)、SIZE(3)依次为三维数组SPACE的长宽高。
12.【输出部分】CUBOID为二维矩阵,记录空间中的所有长方体。
三、函数说明:
1.function[containers,orders]=ReadRequest(filename,acc)
【订单部分】从filename文件中读取订单和车辆信息,acc为读取数据的精度,单位为毫米。由于matlab中数组大小的限制,精度不能太小。
本函数可以读取xls或xlsx文件,文件结构如下:
文件中有两个工作表(Sheet),第一个工作表中存放订单(烟箱)信息,第二个工作表中存放卡车信息
订单信息,共17列。
Figure BDA0003940981560000181
Figure BDA0003940981560000191
Figure BDA0003940981560000201
Figure BDA0003940981560000211
Figure BDA0003940981560000221
Figure BDA0003940981560000231
卡车信息,共10列:
卡车序号必须由1开始正序排列
Figure BDA0003940981560000232
输出:Containers和Orders元胞数组,具体数据结构请见上文。
2.function[types,shapes,shapes2types]=Orders2Types(orders)
功能:【订单部分】将读取到的Orders按品类划分得到types,将types中同一目的地、同样形状的箱子合并得到Shapes以及Shapes和types的对应关系
输入:ReadRequest的输出Orders
输出:Types元胞数组,Shapes元胞数组,Shapes2Types元胞数组。数组的具体内容请见前文。
3.function[flag]=Overlap(x,y,z,l,w,h)
功能:【输出部分】判断长方体是否发生空间重叠函数
输入:三维坐标x,y,z,和长方体的三维尺寸l,w,h
返回:逻辑值flag。如果(1)会与已被占有的空间重叠或(2)超出总空间范围,则返回true;否则返回false。
4.function[]=Place(x,y,z,l,w,h,(c))
功能:【输出部分】长方体放置函数,更新SPACE和CUBOID
输入:三维坐标x,y,z,和尺寸l,w,h以及可选参数c;xyz表示希望放置的位置(前、左、下点),l,w,h为长方体占用空间的尺寸,c表示颜色。
返回:无。
5.function[rate]=SpaceUtilityRate()
功能:【输出部分】计算车厢总体积占用情况的函数。输入:无;返回:全局空间利用率,即SPACE中箱子占有的体积和车厢原体积的比值。
6.function[]=output()
功能:【输出部分】车厢内烟箱摆放情况三维图像输出函数,输出CUBOID中的所有长方体。
7.function[S,boxes]=SBS(container,types,acc,search_width,time_lim)
功能:【算法部分】算法部分的主程序,完成初始化等功能,内部调用SegmentBeamSearch
输入:装车空间参数container,烟箱品类(或形状分类)types,计算精度acc,搜索宽度search_width,分段垛型堆放中每一段的垛型计算时间上限time_lim
输出:S表示最后得到的状态;boxes为二维数组,每一行表示一个被放入的烟箱,每行7个元素分别为x,y,z,l,w,h,type。
8.ClustersGeneration(Types,acc)
功能:【算法部分】生成特定数量的Clusters集合,采用Clusters不断迭代的方法。
输入:Types为从表格中读取和处理的烟箱信息,acc为精度,
输出:Clusters集合。
9.easyClustersGeneration(Types,acc)
功能:【算法部分】生成特定数量的Clusters集合,以单烟箱通过不同空间朝向生成的四种cluster为基础,通过在三个方向上摆放不同数量的不同种烟箱生成cluster集合。
输入:Types为从表格中读取和处理的烟箱信息,acc为精度
输出:Clusters集合。
10.function s_best=SegmentBeamSearch(S0,w,t_out)
功能:【算法部分】控制Beam Search过程的主程序,内部调用ExpandStateSegment、GreedySegment、V_ratio_Max等函数。
输入:初始状态S0,搜索宽度w
输出:空间利用率最大的完整解s_best(状态结构体)。
11.function[succ]=ExpandStateSegment(State,w)
功能:【算法部分】在输入状态的基础上,将合适的cluster放入合适的availablespace中,扩展出新的状态,ExpandStateSegment中不判断Cluster的目的地,因为分段放置算法输入的Types已经按照地点进行了排序
输入:State为现有状态,w为搜索宽度或新状态数量
输出:新状态元胞数组。
12.function newState=PlaceClusterinSpace(S,i,n)
功能:【算法部分】将一个cluster放入一个available space后,更新状态中的Available_Space,不更新状态中的其他变量
输入:状态S,待放入的cluster在Clusters中的序号i,即将放入cluster的空间在Available_Space中的序号n。
输出:更新Available_Space后的新状态。
13.function new_space=SpaceGeneration(ems,b)
功能:【算法部分】计算原本空余空间ems在b放入后,得到的新的空余空间列表
输入:两个1*6的数组,每个代表一个空间长方体(x,y,z,l,w,h),前一个表示available space,后一个表示一个cluster
输出:m*6二维数组,m为新空间的个数。
14.function flag=Contain(rec1,rec2)
功能:【算法部分】判断rec1是否包括rec2
输入:两个1*6的数组,每个代表一个空间长方体(x,y,z,l,w,h)输出:逻辑值,true代表rec1包含rec2。
15.function flag=Intersect(rec1,rec2)
功能:【算法部分】判断rec1与rec2是否
输入:两个1*6的数组,每个代表一个空间长方体(x,y,z,l,w,h)
输出:逻辑值,true代表rec1和rec2相交。
16.function complete_solution=GreedySegment(state)
功能:【算法部分】在现有状态的基础上,每次依据Evaluation选取最优的1个cluster放入available space中(即每次拓展一个新状态),直到状态无法拓展,得到一个完整解。相当于w为1的Beam Search过程
输入:状态结构体
输出:完整解。
17.Evaluation(State,n_available_spaces,n_cluster,a1,a2,a3,p,p_limit)
功能:针对选择的空余空间与cluster,评价其放入对整体空间利用率的影响
输入:State为当前的状态
n_available_spaces为选择的空余空间的编号
n_cluster为选择的cluster的编号
a1 a2 a3 p p_limit分别为计算参数
a3:MaxX长度内的空间利用率的计算权重,取0代表不考虑该数值
VCS_br=V_b*CS_b_p^a1*N_b^(-a2)
a1:相邻面积的计算权重a2:cluster中箱子个数的计算权重
p为计算相邻面积时的距离系数
p_limit为box躺着摆的限制层数
输出:不能放入或躺着摆超过限制层数,输出负无穷;支撑面积不够输出0;其余情况输出为正值,值越大评价越好。
18.ratio=V_ratio_MaxX(States)
计算在长度MaxX范围中的体积利用率
输入:当前状态
输出:空间利用率。
19.ratio=V_ratio_full(States)
计算总体积利用率
输入:状态
输出:空间利用率。
20.function new_state=DeleteSpace(S,xx)
功能:【算法部分】将状态S所有Available Spaces中X值小于xx的部分删去
原理:类似PlaceClusterinSpace,但是此函数中的Cluster是一个截面和车厢截面相同,长度等于xx-1的大cluster
输入:状态S和分界X坐标xx
输出:删去部分空间后的新状态。
21.A=loading_xyz(State,p)
通过垛型计算箱子堆放顺序,完全通过比较箱子的“左下后”点坐标来决定堆放顺序,适用于将不同品类箱子打乱摆放的情况
输入:状态State和支撑系数p
输出:A为1*2元胞数组,A{1}为n*7矩阵,A{2}为m*7矩阵。其中A{1}表示能放入的所有箱子,每一行代表一个箱子,前六列为位置和尺寸,最后一列为箱子品规。A{2}代表因支撑系数限制而无法放入的箱子。
22.A=loading_type(State,p)
通过垛型计算箱子堆放顺序,将同一品规的箱子全部摆放完再放下一个品规的箱子,适用于考虑出库托盘的情况
输入:状态State和支撑系数p
输出:A为1*2元胞数组,A{1}为n*7矩阵,A{2}为m*7矩阵。其中A{1}表示能放入的所有箱子,每一行代表一个箱子,前六列为位置和尺寸,最后一列为箱子品规。A{2}代表因支撑系数限制而无法放入的箱子。
23.load_guide(loading_numbers,W_me)
通过箱子堆放顺序指导机械臂进行码放,假定吸盘每次只能码放同一高度的箱子
输入:loading_numbers(箱子堆放顺序),W_me(吸盘宽度)
输出:1*N的元胞数组,每一个元胞数组内为k*7的矩阵,代表一次摆放k个箱子。
24.ShowLoadingDynamically(S,numbers)
动画显示机械臂堆放过程
输入:S为状态State,numbers为机械臂堆码顺序
输出:堆放过程动画
25.ShowStateDynamically(S)
动画显示垛型生成过程
输入:S为状态State
输出:垛型生成动画
四、调试说明:
该程序中含有多个可调参数或可供选择的不同函数,下面予以简要说明。
1.搜索宽度width,其越大则搜索范围越大,但程序运行所需时间也越长,在主函数中调用BS调整;
2.主函数中的res变量表示计算时给车厢两边的留空距离。因为实际系统中机械手不可能做到用箱子把车厢填满,所以在计算时会留有余量。res=实际余量(毫米)/accuracy(毫米)。实际测试发现这个变量对最后的结果也有较大的影响(1%~2%)
3.Evaluation函数中的五个参数a1 a2 a3 p p_limit,其具体含义详见上方函数说明,ExpandStateSegment中调整;
4.loading_type函数中的支撑系数p,具体含义详见上方函数说明;
5.load_me函数中W_me,具体含义详见上方函数说明。
6.accuracy用于确定仿真和计算的精度,仿真过程中由于数组大小限制,精度无法不能太高,因此将主函数中的accuracy默认为5(accuracy越小,精度越高);但是计算过程中的精度可以更高。主程序中对仿真平台初始化(SPACE等变量)对于后续的算法完全没有影响,在删除仿真平台后,可以将精度提高(accuracy改小)。
7.SBS中的time_lim参数是调整的是每一分段的最长搜索时间。
8.在主函数调用ReadRequest时,修改输入参数可以改变读取的数据。
制作了5个数据模板
9.程序运行完之后,或运行的过程中,都有State类型的结构体存在,用ShowState()或ShowStateDynamically()等函数可以对状态进行可视化,方便调试。
参数width和a1 a2 a3 p p_limit的调试结果已展示;而支撑系数p和W_me可根据实际条件进行相应修改。
如上所述,可较好地实现本发明。
本说明书中所有实施例公开的所有特征,或隐含公开的所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合和/或扩展、替换。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,依据本发明的技术实质,在本发明的精神和原则之内,对以上实施例所作的任何简单的修改、等同替换与改进等,均仍属于本发明技术方案的保护范围之内。

Claims (9)

1.一种箱装货物智能垛型规划方法,其特征在于,针对箱装货物码垛问题,量化限制条件,求解箱装货物码垛状态的组合优化。
2.根据权利要求1所述的一种箱装货物智能垛型规划方法,其特征在于,采用分段集束搜索算法求解箱装货物码垛状态的组合优化。
3.根据权利要求2所述的一种箱装货物智能垛型规划方法,其特征在于,求解箱装货物码垛状态的组合优化时,输入为箱装货物订单数据,输出为箱装货物码垛状态的组合优化结果。
4.根据权利要求3所述的一种箱装货物智能垛型规划方法,其特征在于,求解箱装货物码垛状态的组合优化时,运行函数为ModelSegmentInout,其可以读取订单信息并设计出垛型,ModelSegmentInout函数调用的函数包括ReadRequest、Orders2Types、Divide和SBS;其中,ReadRequest函数输入为订单文件和数据读取精度、输出为车辆与订单信息,Orders2Types函数输入为ReadRequest函数输出的订单信息并将箱装货物按照品类和地点重新划分,Divide函数将不同形状、来源地的箱装货物进行分类排序,SBS函数为垛型设计的主体函数,SBS函数用于:调用ClusterGeneration函数通过箱装货物信息生成一系列Cluster,调用SegmentBeamSearch函数完成分段集束搜索步骤,以及,调用V_ratio_full函数计算垛型的空间利用率。
5.根据权利要求4所述的一种箱装货物智能垛型规划方法,其特征在于,求解箱装货物码垛状态的组合优化时,SBS函数还用于调用DeleteSpace函数删除无法继续摆放的空余空间。
6.根据权利要求5所述的一种箱装货物智能垛型规划方法,其特征在于,求解箱装货物码垛状态的组合优化时,运行函数还调用loading_type函数、loading_guide函数、ShowLoadingDynamiclly函数,其中,loading_type函数输入为设计好的垛型、输出为箱子码放顺序,loading_guide函数用于指导自动装卸车完成箱装货物码放,ShowLoadingDynamiclly函数用于将码放过程通过动画形式记录下来。
7.根据权利要求1至6任一项所述的一种箱装货物智能垛型规划方法,其特征在于,量化限制条件包括:
任意两个箱装货物不在同一空间坐标:
Figure FDA0003940981550000021
Figure FDA0003940981550000022
箱装货物放置位置必须在车内:
Figure FDA0003940981550000023
码放后箱装货物总体积小于集装箱体积:∑Vij≤VC
对箱装货物进行分类,根据每类箱装货物的数量从多至少的顺序依次摆放,摆放的规则如下:
Figure FDA0003940981550000024
Figure FDA0003940981550000025
码放箱装货物的总时间小于规定最大时间:∑tl≤tlim
箱装货物总重量要小于集装箱最大承重:∑mk<Mlim
同一列货物总重量不能超过最底层货物承载能力:
Figure FDA0003940981550000026
Figure FDA0003940981550000027
其中,Vc表示整车厢体积,i表示订单编号,j表示箱装货物编号,i1、i2表示任意两个订单编号,j1、j2表示第i个订单中的任意两个箱装货物编号,k表示分类后的某类箱装货物,k1、k2表示任亮两个箱装货物的分类编号,n表示类编号为k的箱装货物的数量,Vij表示第i个订单第j箱箱装货物的体积,(xij,yij,zij)表示箱装货物上某点的坐标,
Figure FDA0003940981550000028
表示订单编号i1、箱装货物编号j1的x轴坐标,
Figure FDA0003940981550000029
表示订单编号i2、箱装货物编号j2的x轴坐标,
Figure FDA00039409815500000210
表示订单编号i1、箱装货物编号j1的y轴坐标,
Figure FDA00039409815500000211
表示订单编号i2、箱装货物编号j2的y轴坐标,
Figure FDA0003940981550000031
表示订单编号i1、箱装货物编号j1的z轴坐标,
Figure FDA0003940981550000032
表示订单编号i2、箱装货物编号j2的z轴坐标,X表示箱装货物长包含的所有点集,Y表示箱装货物宽包含的所有点集,Z表示箱装货物高包含的所有点集,tl表示码放每个箱装货物时间,tlim表示设定的时间最大值,mk表示类编号为k的箱装货物的单个重量,mklim表示类编号为k的箱装货物的最大承重,z表示箱装货物的竖直方向的个数编号,v表示箱装货物的竖直方向的个数编号,vmax表示当前竖直方向个数编号最大值。
8.根据权利要求7所述的一种箱装货物智能垛型规划方法,其特征在于,组合优化的目标包括得到最大化车厢空间利用率,公式如下:
Figure FDA0003940981550000033
其中,Maximize UtilizationRate表示最大化车厢空间利用率。
9.一种箱装货物智能垛型规划系统,其特征在于,基于权利要求1至8任一项所述的一种箱装货物智能垛型规划方法,包括相互连接的量化模块、求解模块;其中,量化模块用于给出量化限制条件,求解模块用于求解箱装货物码垛状态的组合优化。
CN202211420451.1A 2022-11-14 2022-11-14 一种箱装货物智能垛型规划方法及系统 Pending CN115994650A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211420451.1A CN115994650A (zh) 2022-11-14 2022-11-14 一种箱装货物智能垛型规划方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211420451.1A CN115994650A (zh) 2022-11-14 2022-11-14 一种箱装货物智能垛型规划方法及系统

Publications (1)

Publication Number Publication Date
CN115994650A true CN115994650A (zh) 2023-04-21

Family

ID=85989535

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211420451.1A Pending CN115994650A (zh) 2022-11-14 2022-11-14 一种箱装货物智能垛型规划方法及系统

Country Status (1)

Country Link
CN (1) CN115994650A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117049199A (zh) * 2023-10-11 2023-11-14 季华实验室 一种集装箱装箱方法及其相关设备

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117049199A (zh) * 2023-10-11 2023-11-14 季华实验室 一种集装箱装箱方法及其相关设备
CN117049199B (zh) * 2023-10-11 2024-02-13 季华实验室 一种集装箱装箱方法及其相关设备

Similar Documents

Publication Publication Date Title
KR101085124B1 (ko) 화물 적재 시뮬레이션 방법 및 그 시스템
Zhang et al. An evolutionary local search for the capacitated vehicle routing problem minimizing fuel consumption under three-dimensional loading constraints
US8275583B2 (en) System and method of interactively optimizing shipping density for a container
CN110189077B (zh) 一种考虑三维装载约束的多阶段车货匹配方法
TWI480213B (zh) 容器裝載及卸載計畫之產生
CN103455841B (zh) 基于改进蚁群算法和启发式算法的集装箱装载方法
US20070067146A1 (en) System and method of interactively optimizing shipping density for a container
JP7453722B2 (ja) 多分木探索に基づく多箱型3次元積載の最適化方法及びシステム
CN109948991A (zh) 一种智能装箱方法、设备及存储介质
JP6993449B2 (ja) 配送計画生成装置、システム、方法及びコンピュータ読み取り可能な記憶媒体
CN111507644B (zh) 一种多点卸货约束的三维多容器装载方法
CN115994650A (zh) 一种箱装货物智能垛型规划方法及系统
CN111311145A (zh) 一种铁路货运智能装配方法
CN112541227A (zh) 一种汽车零部件物流配载系统及方法
CN105858044A (zh) 一种穿梭车与升降机结合的仓储系统优化调度方法
Daganzo Shipment composition enhancement at a consolidation center
CN114723119A (zh) 一种优化工业运输装载空间的方法及系统
CN113255980A (zh) 三维装箱处理方法、装置、电子设备及存储介质
CN116187499A (zh) 货运配载方法、装置、电子设备及存储介质
CN109615136B (zh) 一种基于粒子填充原理的集装箱装载过程优化方法
KR101052272B1 (ko) 항공 컨테이너에 블록을 적재하는 시뮬레이션 방법 및 그 시스템
CN117252037B (zh) 三维装箱方法、装置、电子设备及存储介质
Shengming et al. A tree search loadind algorithm for airport checked baggage
Albers Environmental considerations in supply chain decisions: Proposing a new methodology for locating cross-docking terminals considering CO2e emissions
Bogdanov et al. Calculation of the Optimal Loading of Air Vehicles Taking Into Account the Prioritization of Aircraft

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination