CN113486292A - 一种将批量物体通过批量容器进行存放的方法 - Google Patents

一种将批量物体通过批量容器进行存放的方法 Download PDF

Info

Publication number
CN113486292A
CN113486292A CN202110693560.XA CN202110693560A CN113486292A CN 113486292 A CN113486292 A CN 113486292A CN 202110693560 A CN202110693560 A CN 202110693560A CN 113486292 A CN113486292 A CN 113486292A
Authority
CN
China
Prior art keywords
container
objects
stored
type
containers
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.)
Granted
Application number
CN202110693560.XA
Other languages
English (en)
Other versions
CN113486292B (zh
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.)
East China Normal University
Original Assignee
East China Normal University
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 East China Normal University filed Critical East China Normal University
Priority to CN202110693560.XA priority Critical patent/CN113486292B/zh
Publication of CN113486292A publication Critical patent/CN113486292A/zh
Application granted granted Critical
Publication of CN113486292B publication Critical patent/CN113486292B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/11Complex mathematical operations for solving equations, e.g. nonlinear equations, general mathematical optimization problems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/08Logistics, e.g. warehousing, loading or distribution; Inventory or stock management
    • G06Q10/087Inventory or stock management, e.g. order filling, procurement or balancing against orders

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Optimization (AREA)
  • Economics (AREA)
  • Mathematical Analysis (AREA)
  • Operations Research (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Human Resources & Organizations (AREA)
  • Development Economics (AREA)
  • Tourism & Hospitality (AREA)
  • Strategic Management (AREA)
  • Quality & Reliability (AREA)
  • Marketing (AREA)
  • Entrepreneurship & Innovation (AREA)
  • General Business, Economics & Management (AREA)
  • Finance (AREA)
  • Algebra (AREA)
  • Accounting & Taxation (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Container Filling Or Packaging Operations (AREA)

Abstract

本发明公开了一种将批量物体通过批量容器进行存放的方法,包括以下步骤:获取待存物体的信息和待存入的容器的信息;将多个容器进行分组,同时将单个容器容量作区间划分并结合待存物体的信息定义待存物体的类型;获得物体可以适配的容器的类型数;获得单个容器中能放置的物体的最大数量;基于物体可以适配的容器的类型数和单个容器中能放置的物体的最大数量构建待存物体与容器的适配算法将待存物体与一选定的容器组中的容器进行适配后存入适配的容器中;未适配的待存物体使用适应算法存入非选定的容器组中的容器中;可以平衡算法的运行时间和效果,得到综合表现更好的存放结果。

Description

一种将批量物体通过批量容器进行存放的方法
技术领域
本发明涉及计算机优化技术领域,尤其涉及一种将批量物体通过批量容器进行存放的方法。
背景技术
很多实际应用中会用到装箱算法,包括下料问题、运输问题、云存储等等,例如,在码头上的集装箱堆垛位的问题,集装箱中装货的问题,工业上产品库存存放问题,云计算中的云盘存储问题等等,都需要用到装箱问题。
经典的装箱问题表述如下:给定n个物品的序列L=Ln=(a1,…,an),其大小分别为w1,…,wn,且对所有1≤i≤n,都有0<wi≤C。现在要将物品放入容量为C的箱子中,要求在满足箱子容量要求下,使得使用的箱子越少越好。按照算法是否预知所有物品的大小,装箱问题可以分为在线(Online)装箱和离线(Offline)装箱。在线装箱中,算法只有在对物品ai进行装箱分配时,才知道wi的值。而离线算法在还未装入物品时,就已知了所有物品的大小即w1,…,wn。此问题已经被证明为NP-hard问题,所以此问题有效算法以近似算法为主,经典的在线装箱算法主要有Next Fit,First Fit,Best Fit等算法,离线算法主要有 Next FitDecreasing,First Fit Decreasing,Best Fit Decreasing等算法。在装箱过程中,如果一个箱子b可以接收新的物品,则称其为打开的,否则称其为关闭的。
在很多实际问题中,装箱物品的大小wiwi往往是具有一些数据分布特征的,最常见的是wiwi均匀地取自(0,C]区间,即wi~U(0,C)。首先,将
(0,C]均匀地分成K个子区间
Figure BDA0003127546470000011
对每个物品ai,计算其所属的子区间的下标
Figure BDA0003127546470000012
ti也称作是ai的类型,显然
Figure BDA0003127546470000013
其次,当两个物品ai和aj的类型满足ti+tj=K时,那么由
Figure BDA0003127546470000014
Figure BDA0003127546470000015
Figure BDA0003127546470000016
得,
Figure BDA0003127546470000017
Figure BDA0003127546470000018
此时ai和aj可以装入一个空箱子,并且装箱利用率至少是
Figure BDA0003127546470000019
最后,由于wi~U(0,C),1≤i≤n,因此大部分的元素会配对成功,那些没有配对成功的元素ai,可以使用简单的快速装箱算法,比如O(n)时间复杂度的Next Fit算法或O(nlog(n))时间复杂度的First Fit算法进行快速装箱。
以上策略中,物品类型计算和配对装箱都可以在O(n)内完成,经过更详细地设计后,可以得到线性时间算法。
现介绍一种基于上述分组策略的在线装箱算法,为了叙述方便,令B1和 B2是两个箱子的序列,不同的物品会选择装入B1或B2中的某个箱子中,选择规则下面会介绍。
1.按照a1,…,an的顺序,顺次装入物品。
2.对待装入的物品ai,首先计算其类型ti
3.如果
Figure BDA0003127546470000021
则将ai放入空箱子,并加到B1的最后。
4.如果
Figure BDA0003127546470000022
则在B1中打开的箱子中,找一个装入了类型是K-ti的物品的箱子b,将ai放入b中并关闭b,若没有这样的箱子b,则使用Next Fit规则将ai装入B2的箱子中。
为了方便起见,该方法我们用BaseAlgn指代,其中参数K取奇数。由于 Next Fit是线性时间算法,因此以上算法的时间复杂度是O(n),但是在此策略中,有如下缺点:
1.类型为t的物品只能和类型为K-t的物品进行配对。
2.在B1中,配对装箱的物品ai与aj装箱后将此箱会关闭。
下例反应了这些缺陷对装箱结果的影响。
例1.令n=3,a1=4.7,a2=1.7,a3=0.5,且K=C=7。
根据如上策略,t1=5,t2=2,t3=1,因为t1+t2=K,所以a1与a2会装入一个箱子中,而a3会使用Next Fit装箱,装箱数为2。但是,显然这三个物品可以装入一个箱子中。
上述策略利用了分组区间的互补性,即It区间和IK-t区间的元素的大小之和接近箱子的容量C。但是由于物品的大小是随机产生的,当ti(不超过
Figure BDA0003127546470000023
)类型的物品ai装箱时,若没有K-ti型而有K-ti-1型的物品时,ai只能使用Next Fit装入B2中,但是显然ai与K-ti-1型的物品配对装箱的利用率至少是
Figure BDA0003127546470000024
也是不错的。另外,当物品ai与aj的类型满足ti+tj=K时,有
Figure BDA0003127546470000025
因此ai与aj配对装箱是可能可以放置类型为1的物品的,因此配对装箱后就关闭箱子可能会造成一定的浪费。
发明内容
鉴于目前存在的上述不足,本发明提供一种将批量物体通过批量容器进行存放的方法,通过对容器容纳物体数量和物体适配箱子的类型数的控制,可以平衡算法的运行时间和效果,得到综合表现更好的存放结果。
为达到上述目的,本发明的实施例采用如下技术方案:
一种将批量物体通过批量容器进行存放的方法,所述将批量物体通过批量容器进行存放的方法包括以下步骤:
获取待存物体的信息和待存入的容器的信息;
将多个容器进行分组,同时将单个容器容量作区间划分并结合待存物体的信息定义待存物体的类型;
获得物体可以适配的容器的类型数;
获得单个容器中能放置的物体的最大数量;
基于物体可以适配的容器的类型数和单个容器中能放置的物体的最大数量构建待存物体与容器的适配算法将待存物体与一选定的容器组中的容器进行适配后存入适配的容器中;
未适配的待存物体使用适应算法存入非选定的容器组中的容器中。
依照本发明的一个方面,所述获取待存物体的信息和待存入的容器的信息包括:获取n个待存物体序列L=Ln=(a1,…,an),分别获取每个待存物体的大小为w1,…,wn,获取待存入的容器的容量C,其中对所有 1≤i≤n,都有0<wi≤C。
依照本发明的一个方面,所述将单个容器容量作区间划分并结合待存物体的信息定义待存物体的类型包括:将容器内空间(0,C]均匀地分成 K个子区间
Figure BDA0003127546470000031
对每个待存物体ai,根据其大小wi计算其所属的子区间的下标
Figure BDA0003127546470000032
ti即为ai的类型,其中
Figure BDA0003127546470000033
依照本发明的一个方面,所述基于物体可以适配的容器的类型数和单个容器中能放置的物体的最大数量构建待存物体与容器的适配算法包括:
设B1和B2为两组容器的序列,用记号
Figure BDA0003127546470000034
表示存入过程中容器b中装入物体的总大小,并定义
Figure BDA0003127546470000035
为容器b的类型,c(b) 和t(b)随存入过程的进行而变化;定义h表示物体可以适配的容器的类型数,定义m表示单个容器中能放置的物体的最大数量;
适配过程如下:
物体ai与B1中打开的指定类型的容器b进行适配,并且b中物体的数量不超过m即可;
类型为t的物体与B1中类型为K—t,…,K—t—h+1的容器进行配对;
配对成功后将物体存入配对的容器中。
依照本发明的一个方面,当获取待存物体信息为只知道前面物体的信息,而不知道后继待存物体的任何信息,需要按照待存物体到达顺序随到随存,则将批量物体通过批量容器进行存放的方法可包括以下步骤:
按a1,…,an的顺序对每个物体进行存入,在对ai进行存入时 a1,…,ai-1的存入位置不能改变,wi+1,…,wn的情况未知,令B1,p是B1中的第p个容器,且K取奇数;
K=K+1-K%2,令迭代变量i=1;
当i≤n时,计算ai的类型t;
如果
Figure BDA0003127546470000041
则打开一个空容器b,ai放入b中,将b加到B1的末尾,假设b是B1中第p个容器,则将p加入到序列Qt中,即Qt记录了B1中类型为t的箱子的下标;
如果
Figure BDA0003127546470000042
记y=K-t,
Figure BDA0003127546470000043
按照Qy,…,Qz顺序找到第一个非空集合Qx,删除Qx中第一个元素p,将ai放入B1,p中,并将p加入到
Figure BDA0003127546470000044
中,即根据现在B1,p的类型,将其序号加入到新的Q 序列中。如果Qy,…,Qz全为空,则使用适配算法将ai装入B2中;
当i>n时,|B1|+|B2|即为所述方法使用的容器数。
依照本发明的一个方面,在本方法中,h∈[1,10]为确定的输入,具体地每个类型为
Figure BDA0003127546470000045
的物体可以适配y-z+1种类型的容器;参数m= +∞,即适配后的容器还会重新加入新的Q序列中,仍然可以容纳其他元素,这使得B1中的容器可以放入任意多的物体。
依照本发明的一个方面,当待存物体存入以前就已得到所有待存物体信息,即待存物体的大小w1,…,wn就已知了,按照a1,…,an的顺序对每个物体进行存入;所述将批量物体通过批量容器进行存放的方法主要包括以下步骤:
对所有的1≤i≤n,计算ai的类型ti
令集合Sx={i|ti=x},表示类型为x的物品的下标的集合,将满足 |Sx|>0且
Figure BDA0003127546470000046
的x插入到一棵平衡二叉树KTree中,其中|Sx|表示集合 Sx的元素数量;
对类型是K的物体存入,即对所有的i∈SK,将ai装入一个空容器b 中,将b装入B1的尾部,并关闭b;
令迭代变量t=K-1;
Figure BDA0003127546470000047
时,如果|St|>0,删除St中一个元素i,将ai装入一个空容器b中,此时容器b可以适配的物体类型e=K-t(b),b中的物体数f= 1,当f≤m时,在KTree中找到不超过e的最大值y,从Sy中删除一个元素j,将aj装入容器b中,如果|Sy|=0,则从KTree中删除y。
f=f+1,e=K-t(b),继续向b中装入元素直到f=m或者e=0。再取St中另一元素i′重复以上过程,直到St中所有元素全部装完;
t=t-1迭代;
Figure BDA0003127546470000051
时,对每个j∈St,使用适应算法将aj装入B2中;
当t<1时,|B1|+|B2|即为方法使用的容器数。
依照本发明的一个方面,所述平衡二叉树KTree中记录了那些类型不超过
Figure BDA0003127546470000052
的且非空类型的集合。
依照本发明的一个方面,在本方法中,h=+∞,即对物体与容器的适配下限没有要求,类型为
Figure BDA0003127546470000053
的容器可以适配类型为K-t,…,1的物体,另一个参数m∈[2,100],即适配的容器中的物体数量不超过m。
依照本发明的一个方面,所述适应算法包括:Next Fit,First Fit, Best Fit中任一。
本发明实施的优点:为了提升均匀分布下的装箱效果,减少装箱数,提高装箱利用率,结合分组装箱的优点和缺陷,提出了一种更实用更细致的分组装箱规则,对物品可适配的类型和适配箱中物品数量做了更灵活的设置。在保证算法线性的前提下,提升了算法的装箱效果,有助于装箱算法的实际应用和理论研究。针对物品大小服从均匀分布的装箱问题,提出了两个箱子与物品配对装箱的线性时间算法。通过对箱子容纳物品数量和物品适配箱子的类型数的控制,可以平衡算法的运行时间和效果,得到综合表现更好的装箱结果。这有利于装箱算法的实际推广和应用。在实际问题中,可以根据具体问题对以上参数进行调整,更大的发挥装箱算法的效益。将物品与箱子配对的思想应用到均匀分组的装箱问题中;将适配类型参数h和箱子中物品数 m引入均匀分组装箱问题中,得到更灵活的装箱算法;基于实验给出了参数 h,m以及K的选取方法,解决了算法应用过程中的问题。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一所述的一种在线装箱算法的算法流程图;
图2为本发明实施例二所述的一种离线装箱算法的算法流程图;
图3为本发明所述的在线装箱算法的装箱结果ρA示意图;
图4为本发明所述的在线装箱算法的运行时间T示意图;
图5为本发明所述的离线装箱算法的装箱结果ρA示意图;
图6为本发明所述的离线装箱算法的运行时间T示意图;
图7为本发明所述的K对OnGPA和OffGPA的装箱结果ρA的影响;
图8为本发明所述的K对OnGPA和OffGPA的装箱结果T的影响;
图9为本发明所述的一种将批量物体通过批量容器进行存放的方法示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图9所示,一种将批量物体通过批量容器进行存放的方法,所述将批量物体通过批量容器进行存放的方法包括以下步骤:
步骤S1:获取待存物体的信息和待存入的容器的信息;
在本方案中,子区间也是均匀分组的,物品的类型定义同上,B1和B2也是两个箱子序列。所述获取待存物体的信息和待存入的容器的信息包括:获取n个待存物体序列L=Ln=(a1,…,an),分别获取每个待存物体的大小为w1,…,wn,获取待存入的容器的容量C,其中对所有1≤i≤n,都有 0<wi≤C。
步骤S2:将多个容器进行分组,同时将单个容器容量作区间划分并结合待存物体的信息定义待存物体的类型;
所述将单个容器容量作区间划分并结合待存物体的信息定义待存物体的类型包括:将容器内空间(0,C]均匀地分成K个子区间
Figure BDA0003127546470000061
Figure BDA0003127546470000062
对每个待存物体ai,根据其大小wi计算其所属的子区间的下标
Figure BDA0003127546470000063
ti即为ai的类型,其中
Figure BDA0003127546470000064
步骤S3:获得物体可以适配的容器的类型数;
定义h表示物体可以适配的容器的类型数,进行确定输入;
步骤S4:获得单个容器中能放置的物体的最大数量;
定义m表示单个容器中能放置的物体的最大数量,进行确定输入。
步骤S5:基于物体可以适配的容器的类型数和单个容器中能放置的物体的最大数量构建待存物体与容器的适配算法将待存物体与一选定的容器组中的容器进行适配后存入适配的容器中;
所述基于物体可以适配的容器的类型数和单个容器中能放置的物体的最大数量构建待存物体与容器的适配算法包括:
设B1和B2为两组容器的序列,用记号
Figure BDA0003127546470000071
表示存入过程中容器b中装入物体的总大小,并定义
Figure BDA0003127546470000072
为容器b的类型,c(b) 和t(b)随存入过程的进行而变化;定义h表示物体可以适配的容器的类型数,定义m表示单个容器中能放置的物体的最大数量;
适配过程如下:
物体ai与B1中打开的特定类型的容器b进行适配,并且b中物体的数量不超过m即可;
类型为t的物体与B1中类型为K-t,…,K-t-h+1的容器进行配对;
配对成功后将物体存入配对的容器中。
步骤S6:未适配的待存物体使用适应算法存入非选定的容器组中的容器中。
所述适应算法包括:Next Fit,First Fit,Best Fit中任一。
在实际应用中,当获取待存物体信息为只知道前面物体的信息,而不知道后继待存物体的任何信息,需要按照待存物体到达顺序随到随存,则将批量物体通过批量容器进行存放的方法可包括以下步骤:
按a1,…,an的顺序对每个物体进行存入,在对ai进行存入时 a1,…,ai-1的存入位置不能改变,wi+1,…,wn的情况未知,令B1,p是B1中的第p个容器,且K取奇数;
K=K+1-K%2,令迭代变量i=1;
当i≤n时,计算ai的类型t;
如果
Figure BDA0003127546470000073
则打开一个空容器b,ai放入b中,将b加到B1的末尾,假设b是B1中第p个容器,则将p加入到序列Qt中,即Qt记录了B1中类型为t的箱子的下标;
如果
Figure BDA0003127546470000074
记y=K-t,
Figure BDA0003127546470000075
按照Qy,…,Qz顺序找到第一个非空集合Qx,删除Qx中第一个元素p,将ai放入B1,p中,并将p加入到
Figure BDA0003127546470000076
中,即根据现在B1,p的类型,将其序号加入到新的Q 序列中。如果Qy,…,Qz全为空,则使用适配算法将ai装入B2中;
当i>n时,|B1|+|B2|即为所述方法使用的容器数。
在本方法中,h∈[1,10]为确定输入,具体地每个类型为
Figure BDA0003127546470000077
的物体可以适配y-z+1种类型的容器;参数m=+∞,即适配后的容器还会重新加入新的Q序列中,仍然可以容纳其他元素,这使得B1中的容器可以放入任意多的物体。
在实际应用中,当待存物体存入以前就已得到所有待存物体信息,即待存物体的大小w1,…,wn就已知了,按照a1,…,an的顺序对每个物体进行存入;所述将批量物体通过批量容器进行存放的方法主要包括以下步骤:
对所有的1≤i≤n,计算ai的类型ti
令集合Sx={i|ti=x},表示类型为x的物品的下标的集合,将满足 |Sx|>0且
Figure BDA0003127546470000081
的x插入到一棵平衡二叉树KTree中,其中|Sx|表示集合 Sx的元素数量;所述平衡二叉树KTree中记录了那些类型不超过
Figure BDA0003127546470000082
的且非空类型的集合。
对类型是K的物体存入,即对所有的i∈SK,将ai装入一个空容器b 中,将b装入B1的尾部,并关闭b;
令迭代变量t=K-1;
Figure BDA0003127546470000083
时,如果|St|>0,删除St中一个元素i,将ai装入一个空容器b中,此时容器b可以适配的物体类型e=K-t(b),b中的物体数f= 1,当f≤m时,在KTree中找到不超过e的最大值y,从Sy中删除一个元素j,将aj装入容器b中,如果|Sy|=0,则从KTree中删除y。f=f+1,e= K-t(b),继续向b中装入元素直到f=m或者e=0。再取St中另一元素i′重复以上过程,直到St中所有元素全部装完;
t=t-1迭代;
Figure BDA0003127546470000084
时,对每个j∈St,使用适应算法将aj装入B2中;
当t<1时,|B1|+|B2|即为方法使用的容器数。
其中,在本方法中,h=+∞,即对物体与容器的适配下限没有要求,类型为
Figure BDA0003127546470000085
的容器可以适配类型为K-t,…,1的物体,另一个参数m∈ [2,100],即适配的容器中的物体数量不超过m。
实施例一
如图1所示,一种在线装箱方法OnGPA,即算法按a1,…,an的顺序对每个物品进行装箱,且在对a1进行装箱时a1,…,ai-1的装箱位置不能改变, wi+1,…,wn序列未知。这里规定K取奇数。该方法主要包括以下步骤:
S101、K=K+1-K%2,令迭代变量i=1。
S102、当i≤n时,执行S103对ai进行装箱,否则执行S110。
S103、计算ai的类型t,如果
Figure BDA0003127546470000086
执行S104,否则执行S105。
S104、打开一个空箱子b,ai放入b中,将b加到B1的末尾,假设b是B1中第p个箱子,则将p加入到序列Qt中,即Qt记录了B1中类型为t的箱子的下标,执行S109。
S105、记y=K-t,
Figure BDA0003127546470000087
按照Qy,…,Qz顺序找到第一个非空集合Qx
S106、如果有满足条件的x执行S107,否则执行S108。
S107、删除Qx中第一个元素p,将ai放入B1,p中,并将p加入到
Figure BDA0003127546470000091
中,即根据现在B1,p的类型,将其序号加入到新的Q序列中,执行S109。
S108、使用Next Fit策略将ai装入B2序列的箱子中,执行S109。
S109、i=i+1,执行S102。
S110、|B1|+|B2|即为算法的装箱数。
在OnGPA中h∈(1,10]为确定输入,具体地每个类型为
Figure BDA0003127546470000092
的物品可以适配y-z+1种类型的箱子,对应于步骤S105。参数m=+∞,即适配后的箱子还会重新加入新的Q序列中,仍然可以容纳其他元素,这使得B1中的箱子可以放入任意多的物品,对应于步骤S107。从以上过程可以看出,该算法的时间复杂度为O(hn)。
实施例二
如图2所示,一种离线装箱方法OffGPA,即在装入物品前,序列w1,…,wn就已知了。
按照a1,…,an的顺序对每个物品进行装箱。Ix(1≤x≤K)的定义,对所有 1≤i≤n的物品ai的类型ti。该方法主要包括以下步骤:
S101、对所有的1≤i≤n,计算ai的类型ti
S102、令集合Sx={i|ti=x},表示类型为x的物品的下标的集合。将满足|Sx|>0且
Figure BDA0003127546470000093
的x插入到一棵平衡二叉树KTree中,其中|Sx|表示集合 Sx的元素数量。树中记录了那些类型小的(不超过
Figure BDA0003127546470000094
)且非空类型的集合。
S103、对类型是K的物品装箱,即对所有的i∈SK,将ai装入一个空箱子 b中,将b装入B1的尾部,并关闭b。
S104、令迭代变量t=K-1。
S105、当
Figure BDA0003127546470000095
时,执行S106对St中元素进行装箱,否则执行S114。
S106、如果|St|>0,则转到S107,否则转到S113。
S107、删除St中一个元素i,将ai装入一个空箱子b中。此时箱子b可以适配的物品类型e=K-t(b),b中的物品数f=1。
S108、当f≤m时执行S109,否则执行S106。
S109、在KTree中找到不超过e的最大值y。
S110、如果找到y则执行S111,否则执行S106。
S111、从Sy中删除一个元素j,将aj装入箱子b中。如果|Sy|=0,则从 KTree中删除y。
S112、e=K-t(b),f=f+1,执行S108。
S113、t=t—1,执行S105。
S114、如果t≥1,执行S115,否则执行S117。
S115、对每个j∈St,使用First Fit将aj装入B2中。
S116、t=t—1,执行S114。
S117、|B1|+|B2|即为算法的装箱数。
在OffGPA中,h=+∞,即对物品与箱子的适配下限没有要求,类型为
Figure BDA0003127546470000101
的箱子可以适配类型为K—t,…,1的物品,对应于步骤S109。规定另一个参数m∈[2,100],即适配的箱子中的物品数量不超过m,对应于步骤 S108。从以上过程可以看出,该算法的时间复杂度为O((mlogK)n)。
如下,是OnGPA和OffGPA的数值实验结果。本部分主要由三部分组成,即输入参数的h和m的确定,装箱的实验结果对比,参数K的确定。实现语言为C++,测试机器为IntelCeleron 1005M 1.9GHz,12GB RAM,默认每次实验都做了10次,记录数据为均值。
在OnGPA中h∈(1,10],而OffGPA中m∈[2,100],这些参数需要在算法运行前确定。由于wi~U(0,C),此处不妨取=1.0,使用C++的random库的模板类函数uniform_real_distribution生成了均匀分布的w1,…,wn。物品数量n=106,子区间数K=103。针对h和m的每个取值做了数值实验, OnGPA的装箱结果ρA和运行时间T见图3、图4,OffGPA的结果见图5、图 6。
从图3、图4、图5和图6可以看出,对于OnGPA,其装箱结果和运行时间在h≤4以内迅速下降,在h≥5时基本平稳,因此在后续实验中OnGPA中的h=6。对于OffGPA,其装箱结果1.001237≤ρA≤1.001785,而除去个别点外运行时间平稳在0.087s周围,因此m可取[2,100]内的任意数,考虑到 m=2时其装箱与以往的装箱策略一样,即每个箱子最多容纳2个物品,为了有所区别,以下实验中OffGPA中的m=5。
下面是OnGPA和OffGPA的装箱结果的对比实验,对比算法之一是最常用的装箱算法First Fit,另一个则是BaseAlgn方法。在本组实验中,n∈ {104,105,106},K∈{100,500,1000},共有9组实验数组。OnGPA中的h=6, OffGPA中的m=5。实验的数据见表1。所有记录数据按照四舍五入的方式保留了4位小数,第1-5列分别为物品数量、子区间数、算法、运行时间、装箱结果,第6-9列为对应算法运行结束后,箱子的使用容量的统计结果,使用容量即一个箱子中装入的物品的大小之和。
在运行时间方面,FirstFit呈现了非线性增长的特点,这与O(nlog(n))的已知结果相符,其他三个算法与O(n)的结果基本一致。具体地在三个算法中, BaseAlgn最快,OffGPA比OnGPA稍快一些,并且OnGPA和OffGPA时间在 BaseAlgn的2倍以内。
在装箱数方面,OffGPA是最好的,BaseAlgn(除了=106,K=100以外)是最差的。OnGPA和FirstFit的表现互有胜负,且当n=104时,FirstFit效果好,随着n的增长,OnGPA的效果比FirstFit越来越好。
综合以上分析,OnGPA和OffGPA的运行时间较快,装箱结果较好,综合性能优异,尤其适用于处理数据量较大的情形。
表1 不同装箱算法的对比
Figure BDA0003127546470000111
下面用实验的办法确定一下OnGPA和OffGPA中区间数K的选取问题, K会影响算法的装箱数和运行时间,因此这里主要从这两方面考虑K的取值问题。这里设定n=106,h=6,m=5,K是唯一的变量,实验中K取自10到 1000的以10为公差的等差数。实验结果见图7和图8。
在图7中,除了ρOnGPA和ρOffGPA的曲线外,我们还绘制了另外的三个函数,即
Figure BDA0003127546470000121
f3(K)=1.007。图中表明,ρOnGPA和f2(K)的曲线几乎重叠,ρoffGPA和f1(K)的曲线基本重合了,从而证明了
Figure BDA0003127546470000122
其中r是一个常数,
Figure BDA0003127546470000123
在图8中,TOnGPA在0.1-0.15之间随机波动,这与TOnGPA=O(hn)的结果相符。TOffGPA除了波动以外,有一个明显上升的趋势,这与TOffGPA= O((mlogK)n)相符。
综合以上分析,TonGPA与K无关,因此我们用
Figure BDA0003127546470000124
来选取 OnGPA算法的K值,显然g(K)在
Figure BDA0003127546470000125
处取得最小值,而r的值可以通过实验进行评估,实验结果见表2。表中各列分别表示实验物品数量、测试的K 值、拟合的系数、最优的K值。测试的K值用三元数组表示,分别表示起始,公差,终止值,例如(1,2,50)表示K最小取1,以公差2递增最大取到50。拟合的系数是利用实验的数据(K,ρOnGPA),使用最小二乘法拟合得到的g(K)中的系数r。最优的K值根据公式即可得到。
表2 OnGPA中的K的取值
Figure BDA0003127546470000126
由于OnGPA是在线算法,因此算法运行前n是未知的,但是在实际应用中,基于经验或者统计结果,n的数量级是容易估计出来的,这样就可以根据表2来设定K的取值了。
对于OffGPA,其运行时间ToffGPA=O((mlogK)n)和装箱结果
Figure BDA0003127546470000127
Figure BDA0003127546470000128
都和K相关,但是考虑到对于离线算法,往往装箱结果比运行时间更重要,而且logK增长缓慢,在K取有限值时,其影响更加有限,因此选择从装箱结果角度来选择K。具体地,在离线算法中用符号e表示期望的箱子的存储利用率,那么
Figure 1
,即
Figure 2
。例如e=99%,则K≥99,e=99.9%,则K≥999。
本发明实施的优点:为了提升均匀分布下的装箱效果,减少装箱数,提高装箱利用率,结合分组装箱的优点和缺陷,提出了一种更实用更细致的分组装箱规则,对物品可适配的类型和适配箱中物品数量做了更灵活的设置。在保证算法线性的前提下,提升了算法的装箱效果,有助于装箱算法的实际应用和理论研究。针对物品大小服从均匀分布的装箱问题,提出了两个箱子与物品配对装箱的线性时间算法。通过对箱子容纳物品数量和物品适配箱子的类型数的控制,可以平衡算法的运行时间和效果,得到综合表现更好的装箱结果。这有利于装箱算法的实际推广和应用。在实际问题中,可以根据具体问题对以上参数进行调整,更大的发挥装箱算法的效益。将物品与箱子配对的思想应用到均匀分组的装箱问题中;将适配类型参数h和箱子中物品数 m引入均匀分组装箱问题中,得到更灵活的装箱算法;基于实验给出了参数 h,m以及K的选取方法,解决了算法应用过程中的问题。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本领域技术的技术人员在本发明公开的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

Claims (10)

1.一种将批量物体通过批量容器进行存放的方法,其特征在于,所述将批量物体通过批量容器进行存放的方法包括以下步骤:
获取待存物体的信息和待存入的容器的信息;
将多个容器进行分组,同时将单个容器容量作区间划分并结合待存物体的信息定义待存物体的类型;
获得物体可以适配的容器的类型数;
获得单个容器中能放置的物体的最大数量;
基于物体可以适配的容器的类型数和单个容器中能放置的物体的最大数量构建待存物体与容器的适配算法将待存物体与一选定的容器组中的容器进行适配后存入适配的容器中;
未适配的待存物体使用适应算法存入非选定的容器组中的容器中。
2.根据权利要求1所述的将批量物体通过批量容器进行存放的方法,其特征在于,所述获取待存物体的信息和待存入的容器的信息包括:获取n个待存物体序列L=Ln=(a1,…,an),分别获取每个待存物体的大小为w1,…,wn,获取待存入的容器的容量C,其中对所有1≤i≤n,都有0<wi≤C。
3.根据权利要求2所述的将批量物体通过批量容器进行存放的方法,其特征在于,所述将单个容器容量作区间划分并结合待存物体的信息定义待存物体的类型包括:将容器内空间(0,C]均匀地分成K个子区间
Figure FDA0003127546460000011
对每个待存物体ai,根据其大小wi计算其所属的子区间的下标
Figure FDA0003127546460000012
ti即为ai的类型,其中
Figure FDA0003127546460000013
4.根据权利要求3所述的将批量物体通过批量容器进行存放的方法,其特征在于,所述基于物体可以适配的容器的类型数和单个容器中能放置的物体的最大数量构建待存物体与容器的适配算法包括:
设B1和B2为两组容器的序列,用记号
Figure FDA0003127546460000015
表示存入过程中容器b中装入物体的总大小,并定义
Figure FDA0003127546460000014
为容器b的类型,c(b)和t(b)随存入过程的进行而变化;定义h表示物体可以适配的容器的类型数,定义m表示单个容器中能放置的物体的最大数量;
适配过程如下:
物体ai与B1中打开的指定类型的容器b进行适配,并且b中物体的数量不超过m即可;
类型为t的物体与B1中类型为K-t,…,K-t-h+1的容器进行配对;
配对成功后将物体存入配对的容器中。
5.根据权利要求4所述的将批量物体通过批量容器进行存放的方法,其特征在于,当获取待存物体信息为只知道前面物体的信息,而不知道后继待存物体的任何信息,需要按照待存物体到达顺序随到随存,则将批量物体通过批量容器进行存放的方法可包括以下步骤:
按a1,…,an的顺序对每个物体进行存入,在对ai进行存入时a1,…,ai-1的存入位置不能改变,wi+1,…,wn的情况未知,令B1,p是B1中的第p个容器,且K取奇数;
K=K+1-K%2,令迭代变量i=1;
当i≤n时,计算ai的类型t;
如果
Figure FDA0003127546460000021
则打开一个空容器b,ai放入b中,将b加到B1的末尾,假设b是B1中第p个容器,则将p加入到序列Qt中,即Qt记录了B1中类型为t的箱子的下标;
如果
Figure FDA0003127546460000022
记y=K-t,
Figure FDA0003127546460000023
按照Qy,…,Qz顺序找到第一个非空集合Qx,删除Qx中第一个元素p,将ai放入B1,p中,并将p加入到
Figure FDA0003127546460000028
中,即根据现在B1,p的类型,将其序号加入到新的Q序列中;
当i>n时,|B1|+|B2|即为所述方法使用的容器数。
6.根据权利要求5所述的将批量物体通过批量容器进行存放的方法,其特征在于,在本方法中,h∈[1,10]为确定的输入,具体地每个类型为
Figure FDA0003127546460000024
的物体可以适配y-z+1种类型的容器;参数m=+∞,即适配后的容器还会重新加入新的Q序列中,仍然可以容纳其他元素,这使得B1中的容器可以放入任意多的物体。
7.根据权利要求4所述的将批量物体通过批量容器进行存放的方法,其特征在于,当待存物体存入以前就已得到所有待存物体信息,即待存物体的大小w1,…,wn就已知了,按照a1,…,an的顺序对每个物体进行存入;所述将批量物体通过批量容器进行存放的方法主要包括以下步骤:
对所有的1≤i≤n,计算ai的类型ti
令集合Sx={i|ti=x},表示类型为x的物品的下标的集合,将满足
Figure FDA0003127546460000025
Figure FDA0003127546460000026
的x插入到一棵平衡二叉树KTree中,其中|Sx|表示集合Sx的元素数量;
对类型是K的物体存入,即对所有的i∈SK,将ai装入一个空容器b中,将b装入B1的尾部,并关闭b;
令迭代变量t=K-1;
Figure FDA0003127546460000027
时,如果|St|>0,删除St中一个元素i,将ai装入一个空容器b中,此时容器b可以适配的物体类型e=K-t(b),b中的物体数f=1,在KTree中找到不超过e的最大值y,从Sy中删除一个元素j,将aj装入容器b中,如果|Sy|=0,则从KTree中删除y;
令t=t-1进行迭代,令f=f+1进行迭代;
Figure FDA0003127546460000031
时,对每个j∈St,使用适应算法将aj装入B2中;
当t<1时,|B1|+|B2|即为方法使用的容器数。
8.根据权利要求7所述的将批量物体通过批量容器进行存放的方法,其特征在于,所述平衡二叉树KTree中记录了那些类型不超过
Figure FDA0003127546460000032
的且非空类型的集合。
9.根据权利要求7所述的将批量物体通过批量容器进行存放的方法,其特征在于,在本方法中,h=+∞,即对物体与容器的适配下限没有要求,类型为
Figure FDA0003127546460000033
的容器可以适配类型为K-t,…,1的物体,另一个参数m∈[2,100],即适配的容器中的物体数量不超过m。
10.根据权利要求1至9中任一所述的将批量物体通过批量容器进行存放的方法,其特征在于,所述适应算法包括:Next Fit,First Fit,BestFit中任一。
CN202110693560.XA 2021-06-22 2021-06-22 一种将批量物体通过批量容器进行存放的方法 Active CN113486292B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110693560.XA CN113486292B (zh) 2021-06-22 2021-06-22 一种将批量物体通过批量容器进行存放的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110693560.XA CN113486292B (zh) 2021-06-22 2021-06-22 一种将批量物体通过批量容器进行存放的方法

Publications (2)

Publication Number Publication Date
CN113486292A true CN113486292A (zh) 2021-10-08
CN113486292B CN113486292B (zh) 2023-01-03

Family

ID=77935840

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110693560.XA Active CN113486292B (zh) 2021-06-22 2021-06-22 一种将批量物体通过批量容器进行存放的方法

Country Status (1)

Country Link
CN (1) CN113486292B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150161317A1 (en) * 2013-12-06 2015-06-11 International Business Machines Corporation Multi-dimensional physical arrangement techniques using bin-packing with per-branch combination tries
CN106022506A (zh) * 2016-05-04 2016-10-12 浙江大学 一种标准集装箱装箱过程优化策略
CN109685278A (zh) * 2018-12-28 2019-04-26 深圳蓝胖子机器人有限公司 装箱方法、设备和计算机可读存储介质
CN110040411A (zh) * 2019-04-23 2019-07-23 武汉智能装备工业技术研究院有限公司 一种智能选箱装箱包装线归集区参数优化方法
CN110414888A (zh) * 2019-07-03 2019-11-05 深圳蓝胖子机器人有限公司 一种智能装箱方法、设备及存储介质
CN111639822A (zh) * 2020-06-09 2020-09-08 安庆师范大学 一种基于0-1背包问题分析的快递分配方法
CN111860837A (zh) * 2020-07-20 2020-10-30 上海汽车集团股份有限公司 装箱问题的处理方法、装置及计算机可读存储介质
CN112001535A (zh) * 2020-08-10 2020-11-27 上海东普信息科技有限公司 物流装箱方法、装置、设备及存储介质

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150161317A1 (en) * 2013-12-06 2015-06-11 International Business Machines Corporation Multi-dimensional physical arrangement techniques using bin-packing with per-branch combination tries
CN106022506A (zh) * 2016-05-04 2016-10-12 浙江大学 一种标准集装箱装箱过程优化策略
CN109685278A (zh) * 2018-12-28 2019-04-26 深圳蓝胖子机器人有限公司 装箱方法、设备和计算机可读存储介质
CN110040411A (zh) * 2019-04-23 2019-07-23 武汉智能装备工业技术研究院有限公司 一种智能选箱装箱包装线归集区参数优化方法
CN110414888A (zh) * 2019-07-03 2019-11-05 深圳蓝胖子机器人有限公司 一种智能装箱方法、设备及存储介质
CN111639822A (zh) * 2020-06-09 2020-09-08 安庆师范大学 一种基于0-1背包问题分析的快递分配方法
CN111860837A (zh) * 2020-07-20 2020-10-30 上海汽车集团股份有限公司 装箱问题的处理方法、装置及计算机可读存储介质
CN112001535A (zh) * 2020-08-10 2020-11-27 上海东普信息科技有限公司 物流装箱方法、装置、设备及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
SHAHIN KAMALI: "All-Around Near-Optimal Solutions for the Online Bin Packing Problem", 《INTERNATIONAL SYMPOSIUM ON ALGORITHMS AND COMPUTATION》, 27 November 2015 (2015-11-27), pages 1 - 4 *

Also Published As

Publication number Publication date
CN113486292B (zh) 2023-01-03

Similar Documents

Publication Publication Date Title
Cai et al. Extreme-value theorems for optimal multidimensional pricing
Yu et al. Markov decision processes with arbitrary reward processes
CN107292701A (zh) 订单分组方法和装置
Ajtai et al. Hash functions for priority queues
Goldman et al. Fast and efficient black box optimization using the parameter-less population pyramid
Laumanns et al. On the convergence and diversity-preservation properties of multi-objective evolutionary algorithms
US20210253376A1 (en) System and method for autonomous multi-bin parcel loading system
CN113486292B (zh) 一种将批量物体通过批量容器进行存放的方法
CN115730789A (zh) 分类存储下的asrs任务调度与货位分配方法及系统
Caprara et al. Fast approximation schemes for two-stage, two-dimensional bin packing
CN106528629A (zh) 一种基于几何空间划分的向量模糊搜索方法及系统
Grinsztajn et al. Winner takes it all: Training performant RL populations for combinatorial optimization
CN115034719A (zh) 库存分拣方法、电子设备及计算机可读存储介质
Tal On the sensitivity conjecture
Haugland et al. Solving many linear programs that differ only in the righthand side
Shakya et al. A Deep Reinforcement Learning Approach for Inventory Control under Stochastic Lead Time and Demand
CN112465514A (zh) 一种基于区块链的分层式交易并行执行方法及系统
CN112214718A (zh) 基于改进动态规划算法求解有界背包问题的方法
Brodnik et al. Online bin covering with exact parameter advice
Bhaskar et al. Equilibrium computation in atomic splittable routing games with convex cost functions
Bhattacharjee et al. Online k-means clustering on arbitrary data streams
CN117078165B (zh) 一种金属仓库挑货方法及装置
Chen et al. Bi-variate artificial chromosomes with genetic algorithm for single machine scheduling problems with sequence-dependent setup times
Li et al. A fuzzy-based heuristic algorithm for online outbound container stacking problem with uncertain weight information
Galgana et al. Computing Boundary Crossing Probabilities of General Empirical Processes

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
GR01 Patent grant
GR01 Patent grant