本科毕业设计论文--经典一维装箱问题的适应近似算法的研究

合集下载

有色装箱问题的一种新的近似算法

有色装箱问题的一种新的近似算法

有色装箱问题的一种新的近似算法刘春霞1于洪霞(大连理工大学应用数学系 大连市 116024)摘 要:作为经典装箱问题的推广,有色装箱问题在多处理器实时计算机系统的任务调度等实际问题中有着很强的应用背景.论文提出了有色装箱问题的一种新的近似算法——交叉装箱算法(简称JCBP),该算法首先对物品按长度进行排列,再从两头交叉进行装箱.实验证明,该算法较其他算法有较好的装箱效果,并且很多情况下能达到最优解.关键词:装箱问题;近似算法;多处理器调度 中图分类号:TP301 文献标识吗:A0 引言有色装箱问题是一种带约束的一维装箱问题,它最初在支持容错的多处理器实时计算机系统的任务调度问题中被提出[1].有色装箱问题在多处理器任务调度[2,3]、并行处理、资源分配和现实生活中的包装等问题中有着广泛的应用背景.下面简单介绍一个有色装箱问题的例子:在多处理器实时调度系统中,往往需要将一个任务分割成若干个子任务.为了支持容错,每个子任务都必须有若干个拷贝,这些拷贝在不同的处理器上运行,以保证处理结果的正确性.现在的问题是:如何分配这些子任务,使得整个任务在规定的时间内完成,同时使得运行该任务的处理器的数量尽可能少.因为同一个子任务的拷贝必须放在不同的处理器上运行,相当于对同一子任务的每份不同的拷贝赋予不同的颜色,要求装在箱子中的物品的颜色各不相同.这种带约束的一维装箱问题就是有色装箱问题.解决好有色装箱问题,既是对上述此类问题的良好解决,同时,有色装箱问题的解决,对于一维装箱问题及其一维装箱问题的其他衍生问题也有很大的帮助.1 相关知识1.1 经典的一维装箱问题经典的一维装箱问题是这样描述的:给定n 个物品的序列123{,,,,}n n L a a a a =,物品(1)i a i n ≤≤的大小()(0,1]i s a ∈,12,,B B 为一个由单位容积的箱子组成的无限序列.我们要求:每一个物品i a 只能装入到唯一的箱子里,每一个箱子中的数字和不超过1,如何用最少的单位容积的箱子,装下所有的物品?用线性规划的方式来描述一维装箱问题如下:min 1nii z y==∑..s t 1(),nj ij i j s a x y =≤∑ 1,2,,i n =11,niji x==∑ 1,2,,j n =1刘春霞(1981-),女,山东省滨州市人,大连理工大学应用数学系,硕士研究生.01i y =或, 1,2,,i n = 01ij x =或, ,1,2,,i j n =其中变量,x y 的含义是:i y =1,0i ⎧⎨⎩第个箱子被使用,否则,1,2,,i n =1,ij j x ⎧=⎨⎩第个物品放入第i 个箱子0,否则, ,1,2,,i j n =装箱问题是一个典型的NP 完全问题[4],由于目前NP 完全问题不存在有效时间内求得精确解的算法,因此陆续提出了各种求解装箱问题的近似算法.其中NF 、FF 、BF 、FFD 、BFD 等是部分著名装箱问题的近似算法. 1.2 有色装箱问题有色装箱问题是:给定n 个物品的序列123{,,,,}n n L a a a a =,物品(1)i a i n ≤≤的大小()(0,1]i s a ∈,颜色为(1)i C i K ≤≤,其中物品的颜色数不超过(,)K K N K ∈是常数.12,,B B 为一个由单位容积的箱子组成的无限序列.我们要求: 每一个物品i a 只能装入到唯一的箱子里,每一个箱子中的数字和不超过1,同一箱子中各物品颜色互不相同,如何用最少的单位容积的箱子,装下所有的物品?有色装箱问题也是NP 完全问题,因为当K =∞时,即物品的颜色数无穷大,每个物品颜色相同的机会就大大减少,就变成了经典的一维装箱问题了. 1.3 解决有色装箱问题的两种算法文献[5]和文献[6]分别提出了有色装箱问题的KC-A 算法和SCPF-A 算法.KC-A 算法:首先把箱子分成K 类,对任何一种颜色,输入序列中第i 个具有这种颜色的物品只能放在第i 类箱子中,从而保证相同颜色的物品不会出现在同一类箱子中.然后在任何一个箱子类内部,物品的放置采用近似策略A.我们称这样的算法为以A 为基础的K-分类算法,记为KC-A 算法.相应的,当算法取FF 算法时,则得到KC-FF 算法.SCPF-A 算法:首先对输入物品按颜色分类,将相同颜色的物品分成一类,放置时按照相同颜色的物品首先放置的原则,即颜色1C 的所有物品先分别放在不同的箱子中,然后再处理颜色2C 的所有物品,一直到所有颜色的物品都放置完毕.在放置物品的过程中,相同颜色的物品必须放在不同的箱子中.在放置颜色(2)i C i ≥的所有物品时,物品的放置采用经典装箱问题的近似算法A.如当算法A 选取的是FF 算法,则得到SCPF-FF 算法.2 交叉装箱算法2.1 预备知识令123{,,,,}n n L a a a a =为任意给定的n 个物品的一个序列,物品(1)i a i n ≤≤的大小()(0,1]i s a ∈,颜色为(1)i C i K ≤≤,其中物品的颜色数不超过(,)K K N K ∈是常数.j B 表示所用的第j 个箱子,箱子j B 的容量均为1,{1,2,,}j m ∈,这里m 表示一种给定的装箱方案所需的箱子数目.易知,不同算法产生的箱子数目不必相同.令()j B σ表示箱子j B 中所有物品的数目,令()j f B 表示装入箱子j B 中的所有物品的大小之和.jk a 表示按装箱算法放入第j 个箱子的第k 个物品.因此我们有()1()(),1,2,,j B j jkk f B s aj m σ===∑;11()()mn jij i f B s a ===∑∑.2.2 交叉装箱算法下面给出有色装箱问题的交叉装箱算法:输入:物品序列1122{(),(),,()}n n n L a C a C a C =,物品i a 的大小()(0,1]i s a ∈,(1)i i C C K ≤≤为颜色编号,K 为物品的总颜色数输出:使用的箱子数mStep1:把物品1122(),(),,()n n a C a C a C 按其大小进行非增序排列,不妨设12()()()n s a s a s a ≥≥≥;Step2: 首先把11()a C 放入箱子1B 中,然后从最右端开始从右往左依次查看物品11(),(),n n n n a C a C --,如果物品()(1)l l a C l n <≤满足以下两点(假设1B 中已经装了p 个物品):(i) l C 与箱子1B 中已装的p 个物品的颜色各不相同, (ii)11()1()pl kk s a s a=≤-∑,则将()l l a C 装入箱子1B 中,并检查下一个物品(如果()l l a C 不满足以上两条则直接查看下一个物品),直到所有物品不能再放入箱子为止,打开新的箱子2B ;Step3:设在第i 步循环时,打开第i 个箱子,此时把物品()i i a C 放入箱子i B 中,再从最右端开始从右往左依次查看装完箱子1i B -后剩下的物品1122(),(),q q q q a C a C ,假设()l l a C 是被查看的物品,(假设i B 中已经装有p 个物品):(i)l C 与箱子i B 中已装的p 个物品的颜色各不相同, (ii)1()1()pl ipk s a s a=≤-∑,则将()l l a C 装入箱子i B 中,并检查下一个物品(如果()l l a C 不满足以上两条则直接查看下一个物品),直到所有物品不能再放入箱子为止,打开新的箱子1i B +;直到把所有物品都放入箱子中;Step4:输出使用的箱子数m . 2.3 实例例:给定物品序列L={5(A),8(B),3(B),2(A),6(C),7(B),1(C),9(A),4(A),2(C),3(C),4(C)},括号中的字母表示颜色值,A 表示颜色A,B 表示颜色B,C 表示颜色C,箱子的长度为10.根据交叉装箱算法,首先将物品按长度从大到小排序,9(A),8(B),7(B),6(C),5(A),4(A),4(C),3(B),3(C),2(A),2(C),1(C)装箱后的结果为1B ={9(A),1(C)},2B ={8(B),2(C)},3B ={7(B),2(A)},4B ={6(C),3(B)},5B ={5(A),3(C)},6B ={4(A),4(C)},从这个例子看出一共使用了6个箱子. 2.4 与其它算法的比较作者采用随机产生实例的方法对JCBP 算法和KC-A 算法,SCPF-A 算法进行了比较.实验证明交叉装箱算法比其它算法具有更好的装箱效果,并且对很多情况都能达到最优解.这里仅列举几例进行比较,它们的比较结果如表1所示:表1 交叉装箱算法与其它算法的比较图中KC-FF/FFD 表示分别以FF 、FFD 为基础的KC 算法使用的箱子数,SCPF-FF/FFD 表示分别以FF 、FFD 为基础的SCPF 算法使用的箱子数,最优值表示最少使用的箱子数.3 小结论文提出了有色装箱问题的一种新的近似算法——交叉装箱算法,并将其与以前文献中提出的KC-A 算法,SCPF-A 算法进行了比较.实验证明,交叉装箱算法比其它算法使用的箱子数要少,装箱效果较好,并且很多情况能达到最优值.因此交叉装箱算法是有色装箱问题的一种有效算法.此外,一维装箱问题的其它衍生问题也得到了广泛研究,如最大基数装箱问题,箱子覆盖问题[7],有可变容量的装箱问题[8]等.这些衍生问题一方面与一维装箱问题有着密切联系,另一方面又有着更广泛的实际应用背景.我们未来的工作将继续关注并研究一维装箱问题的各种衍生问题,以期能对实际生活工作提供更大的帮助.参考文献[1] C L Liu, J Layland. Scheduling algorithms for multi programming in a hard real-timeenvironment[J]. Journal of ACM. 1973, 10(1): 174-189.[2] A Khemka, R K Shyamasundar. An optimal multiprocessor real-time scheduling algorithm[J]. Journalof Parallel and Distributed Computing. 1997, 43(1): 37-45.[3] Y O h. The design and analysis of scheduling algorithms for real-time and fault-tolerant computersystems [Ph D dissertation][M]. Department of Computer Science, University of Virginia, Vinginia, 1994.[4] M R Garey, D S Johnson. Computers and Intractability: A Guild to the Theory of NP-Completeness[M].New York: W H Freeman and Company, 1978.[5] 顾晓东,许胤龙,陈国良,顾钧.有色装箱问题的在线近似算法[J].计算机研究与发展.2002,39(3):335-340.[6] 董一鸿,赵杰煜. 带约束的一维装箱问题近似算法的研究[J]. 计算机工程与应用.2003, 18: 41-44.[7] JANSEN K, SOLIS-OBA R. An asymptotic fully polynomial time approximation scheme for bin covering[J].Theoretical Computer Science. 2003,306:543-551.[8] KANG J, PARK S. Algorithms for the variable sized bin packing problem[J]. European Journal ofOperational Research. 2003,147:365-372.A New Approximation Algorithm for ColoringBin Packing ProblemLiu Chun-xia Yu Hong-xia(Department of Applied Mathematics, Dalian University of Technology,Dalian, 116024, P.R.China )Abstract: As one of the constrained bin packing problem (BPP), coloring BPP has many important applications such as multi-processor real-time scheduling, etc. A new approximation algorithm, named JCBP, to solve the coloring BPP is proposed in this paper. After arranging the objects according to the length, JCBP packs the objects from two sides. Experiment shows better results and fewer boxes for JCBP than that for other algorithms. It also can reach the optimal solutions in many cases.Keywords: bin packing problem; approximation algorithm; multi-process scheduling。

组合优化论文选讲

组合优化论文选讲

一维装箱问题的描述给定n 个物品的序列()n a a a L .......,21=,物品尺寸()(]()0,1,1,2i s a i n ∈=,无限量提供尺寸为1的箱子,要求把L 中的物品放入这些箱子中,使得所使用的箱子个数达到最小.变尺寸装箱问题的描述给定n 个物品的序列()n a a a L .......,21=,物品尺寸()(]()0,1,1,2i s a i n ∈=,无限量提供k 种不同尺寸类型的箱子,箱子的尺寸介于(]0,1,要求把L 中的物品放入这些箱子中,使得所使用的箱子尺寸之和达到最小.常见算法①下次适应算法()NF :按照物品序列所给的顺序逐个装入物品,并将箱子按照打开的先后顺序标号,对每个待装的物品,考虑当前打开的箱子,如果当前箱子能放则把物品放进去,如果不能放则打开一个新的箱子,并把该物品装入.每次都不会考虑之前已用过的箱子.②首次适应算法()FF :按照物品序列所给的顺序逐个装入物品,并将箱子按照打开的先后顺序标号,对每个待装的物品,总是选择有足够剩余空间且标号最小的箱子来装,如果这样的箱子不存在,则打开一个新的箱子,并把该物品装入其中.③最佳适应算法()BF :按照物品序列所给的顺序逐个装入物品,并将箱子按照打开的先后顺序标号,对每个待装的物品,总是选择有足够剩余空间且使得放入此物品后剩余空间最少的箱子,如果这样的箱子不存在,则打开一个新的箱子,并把该物品装入其中.首次适应算法和最佳适应算法有一个缺陷,即由于物品没有实现排序,则可能由于先装入小的物品,使大的物品在后来放入时无法装入,只得开启新的箱子,造成了空间的浪费,因此才有了以下两种算法的改进算法.④降序首次适应算法()FFD :先对物品按降序排序,再按照首次适应算法进行装箱.⑤降序最佳适应算法()BFD :先对物品按降序排序,再按照最佳适应算法进行装箱.变尺寸装箱问题的数学模型物品序列:()n a a a L (21)物品尺寸:()(])......2,1(1,0n i a s i =∈箱子尺寸有k 种,每种尺寸类型的箱子无限量提供:()12,k B B B B =箱子尺寸:()(]0,1i s B ∈,最大箱子尺寸为1算法A 所用箱子顺序序列:()12,l B B B B =最优算法OPT 使用的箱子顺序序列:()12,m B B B B ****=箱子i B 中所含物品尺寸的总容量:()i c B箱子i B 中所含物品个数:i B目标函数:()()1li i A L s B ==∑()()1mii OPT L s B*==∑1.FFDLR 算法算法思想先将物品按尺寸大小进行降序排序,开始装物品时,只考虑最大的箱子,即尺寸为1的箱子,按照物品排列的顺序逐个装箱,当装完所有物品后,检查使用的尺寸为1的所有箱子,再把一些装得不充分的箱子中的所有物品转装到较小的箱子中,直到所有箱子都被充分装箱.FFDLR 算法:Input :()n a a a L .......,21=及每个物品的尺寸()(])......2,1(1,0n i a s i =∈.无限量提供k 种尺寸类型的箱子()12,k B B B B =,()(]0,1i s B ∈,对箱子尺寸进行排序:()()()12k s B s B s B ≥≥,最大箱子尺寸()11s B =Output :使用的箱子Begin :Step1:物品按尺寸大小降序排列,()()()12n s a s a s a ≥≥Step2:1:for i to n do ←用FF 算法把物品装到尺寸为1的箱子中,假设装完L 中的物品使用了l 个箱子.Step3:1:for i to l do ←把i B 中的所有物品装到尺寸较小的箱子中End End 定理对于任一物品序列L ,有3(L)OPT(L)12FFDLR <+,有实例证明32是紧的,且时间复杂度是()log log O n n l k +.2.FFDLS 算法算法思想先将物品按尺寸进行降序排序,开始装物品时,只考虑最大的箱子,即尺寸为1的箱子,但是在装每个物品时,边装边进行一个调整,直到所有箱子都被充分装箱.FFDLS 算法Input :()n a a a L .......,21=及每个物品的尺寸()(])......2,1(1,0n i a s i =∈.及无限量提供k 种尺寸类型的箱子()12,k B B B B =,()(]0,1i s B ∈,对箱子尺寸进行排序:()()()12k s B s B s B ≥≥,最大箱子尺寸()11s B =Output :使用的箱子Begin :Step1:物品按尺寸大小降序排列,()()()12m s a s a s a ≥≥Step2:1:for i to n do ←用FF 算法把物品装到尺寸为1的箱子中,如果j B 含有一个物品的尺寸超过了13, 且存在另一种空箱子k B ,使得()()34j k c B s B ≥,则把j B 中的所有物品转装到使得()()34j k c B s B ≥成立的最小的k B 空箱子中.假设装完所有的物品使用了l 个箱子.EndStep3:1:for i to l do ←把i B 中的所有物品装到尺寸较小的箱子中End3.3定理对于任一物品序列L ,有4(L)OPT(L)13FFDLS <+,有实例证明43是紧的,且时间复杂度是()log log O n n n k +.3.LIN 算法4.1算法思想LIN 算法是先对物品进行预处理,分出小物品和小箱子.暂且不考虑小物品,并丢弃小箱子.把这些大物品进行分组,且每组的物品尺寸舍入为这组的最大的物品尺寸,得到新的物品序列,把此物品序列的装箱问题实例转化为整数线性规划,再松弛为线性规划,求解线性规划,以线性规划的最优解得到整数规划的最优解解,按照这个最优解来装相应的大物品,最后再装小物品.4.2物品和箱子的处理1.对于物品序列()n a a a L .......,21=,当取0ε>,2δε=,()i s a δ<称为小物品,反之称为大物品.箱子序列()12,k B B B B =,如果()i s B ε<,则称为小箱子,算法LIN 暂时不考虑小物品,得到新的物品序列()012,m L a a a =,且()()()12m s a s a s a ≥≥,且丢弃小箱子.2.设0a 的尺寸为1,把物品012,,m a a a a 分为S=m k ⎡⎤⎢⎥⎢⎥组如下:01112112,,,k k k k m k m k ma a a a aa a a a -+--+-+⎧⎪⎪⎨⎪⎪⎩3.对每组物品尺寸舍入处理,即第一组的所有物品尺寸舍入为0a ,第二组全舍入为k a ,以此类推,第m k ⎡⎤⎢⎥⎢⎥组为1m k a -+,得到物品序列1L ,则1L 有m k ⎡⎤⎢⎥⎢⎥类物品,每类物品的个数至多为k .4.3符号说明1.对于1L 物品序列,有m S k ⎡⎤=⎢⎥⎢⎥种不同尺寸的物品,每种尺寸的物品至多有k 个.2.令{}11122,S S L n n n σσσ=,其中i i n σ表示i n 个尺寸为i σ的物品.3.用()OPT items ε表示最优算法中用尺寸大于ε的箱子装物品所用的箱子尺寸之和.4.因为暂时不考虑小物品,所以()i s a δ>,所以至多1δ⎢⎥⎢⎥⎣⎦个物品可以装到一个箱子中.5.组合:表示把特定尺寸的物品装到特定尺寸的箱子中,使得物品尺寸和不超过箱子尺寸的所有装箱可能情况。

箱覆盖对策与其核心的算法和计算复杂性

箱覆盖对策与其核心的算法和计算复杂性

独创声明本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及取得的研究成果。

据我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含未获得(注:如没有其他需要特别声明的,本栏可空)或其他教育机构的学位或证书使用过的材料。

与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示谢意。

学位论文作者签名:签字日期:年月日---------------------------------------------------------------------学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁盘,允许论文被查阅和借阅。

本人授权学校可以将学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存、汇编学位论文。

同时授权中国科学技术信息研究所将本学位论文收录到《中国学位论文全文数据库》,并通过网络向社会公众提供信息服务。

(保密的学位论文在解密后适用本授权书)学位论文作者签名:导师签字:签字日期:年月日签字日期:年月日箱覆盖对策及其核心的算法和计算复杂性摘 要具有特征函数的合作对策模型,N γΓ=<>是由局中人集合{1,2,...,}=N n 和支付特征函数:2γ→N R 所构成的。

当联盟()⊆S S N 的特征函数值()γS 表示其该联盟的局中人合作所获得的收益(费用)时,称该对策为收益(费用)对策。

如果特征函数值可通过求解某个组合最优化问题所确定,则称该对策为组合合作对策,其特点是对策的表达是简洁的,即其输入规模是局中人个数的多项式长度。

合作对策理论主要是研究如何将联盟的整体收益合理分配给参与合作的各个理性参与人。

其不同的公平、合理性条件导出了对策的各种解的概念。

其中,核心(Core)及相关若干近似核心等是最重要的对策解,它们通过分配的联盟合理性要求达到联盟的稳定。

用自适应的混合遗传算法解三维装箱问题

用自适应的混合遗传算法解三维装箱问题

摘 要三维装箱问题是一个典型的NP问题,它在物流行业中有广泛的应用。

随着问题规模的不断增大, 传统的优化算法会产生时间维数灾难问题,不能够理想地对大规模装箱问题进行优化装载。

为了在合理的时间内找到近似最优解,部分学者开始研究各种启发式方法结合遗传算法的方法,并且取得了较好的结果。

论文先介绍了装箱问题的研究背景、意义和历史现状,以及启发式算法和遗传算法的基本思想和实现原理,在介绍了前人研究工作之后,针对三维装箱问题,提出一种改进的基于三空间分割的启发式装箱算法和自适应的遗传算法相结合的混合遗传算法,本文算法中的遗传算法主要用来优化装箱序列和方向约束序列,而启发式算法是在已知装箱序列和方向约束序列的基础上,合理安排每个箱子的装箱位置。

在本文介绍的启发式算法中,装箱序列是箱子类型编码的一种排列组合;每次只选择一种类型的箱子用于形成简单块,搜索不到合适的简单块,再选另外一种箱子;每次选择的简单块要求不仅能够装进当前的剩余空间中,而且使其能够最适合该剩余空间。

为验证算法的有效性,采用由Loh和Nee于提出的15个算例(LN算例)对该算法进行测试,实验结果表明:在空间利用率这一方面,该算法是解决三维装箱问题的一种有效方法。

关键字:三维装箱; 启发式算法; 自适应; 遗传算法ABSTRACTThree-dimensional bin packing problem (3DBPP) is a typical NP problem and plays an important role in the logistics industry. With the increasing of the sale of the problems, it would generate the time dimension disaster and could not be ideal to optimize the loading of the large scale packing problem if we applied the traditional optimization algorithm to solve this kind of problems. In order to find an approximate optimal solution within a reasonable time, some scholars began to study a variety of methods that is a combination of heuristic algorithms and genetic algorithms, and achieved good results.Firstly, the historical background and the significance of the packing problem is describ- ed, and then the heuristic algorithms and genetic algorithms is also described in detail in this paper. Secondly, on the basis of previous studies, a new hybrid genetic algorithm combined heuristic algorithm with genetic algorithm is proposed to solve the problem. The self-adaptive genetic algorithm is used to optimize the packing sequence and direction of the constraint seq- uence, and the heuristic algorithm is mainly used to reasonably arrange the packing location of the box on the basis of known boxing sequence and direction constraint sequence. In the heuristic algorithm, the packing sequence is a permutation of the types of boxes; select only one type of box used to form a simple block, if no suitable simple block could be put into the current layout space, the simple block selected each time must not only to be packed into the current residual space, but also to be the most appropriate one. Last, A large number of experi- ments over the LN computational example have been done in order to verify the effectiveness of the algorithm, the experimental results show that the algorithm is an effective method to solve the three-dimensional packing problem in terms of the space utilization.Key words:3D Bin Packing Problem; Heuristic Algorithm; Self-adaptive; Genetic Algorithm目录摘 要 (I)ABSTRACT (II)第一章 绪论 (1)1.1研究背景及意义 (1)1.2 国内外研究现状 (1)1.2.1装箱问题的分类 (1)1.2.2装箱问题的研究方法 (3)1.3 本文的主要内容安排 (5)第二章 装箱算法的理论知识 (7)2.1启发式算法 (7)2.1.1启发式算法定义 (7)2.1.2启发式算法分类 (7)2.1.3启发式算法特点 (8)2.1.4三空间分割法 (8)2.2 遗传算法 (9)2.2.1遗传算法概念 (9)2.2.2遗传算法的特点 (14)2.2.3遗传算法的实现 (15)2.2.4遗传算法的应用 (16)2.3 本章小结 (16)第三章 三维装箱问题的混合算法研究 (18)3.1 问题描述及约束条件 (18)3.1.1目标函数及约束条件 (18)3.2 基于简单块的启发式算法 (19)3.2.1基本概念及各种数据结构 (19)3.2.2 基于简单块的启发式算法 (23)3.3 用自适应遗传算法求解 (28)3.3.1 编码方式 (28)3.3.2 适应度函数 (28)3.3.3 遗传算子的设计 (29)3.3.4 交叉、变异的自适应性 (29)3.3.5 用混合遗传算法解三维装箱问题的步骤 (31)3.4 本章小结 (33)第四章 仿真实验结果与分析 (34)4.1实验平台及参数 (34)4.2实验结果 (34)4.3 LN算例详细分析 (37)4.4 本章小结 (40)结 论 (41)参考文献 (42)攻读硕士学位期间取得的研究成果 (46)致 谢 (47)第一章绪论第一章绪论1.1研究背景及意义装箱问题涉及到工业领域的方方面面,比如建筑行业的棒管的切割问题、航空业中导弹仓的布局问题、作业管理的人力资源的分配问题、加工行业的板材切割问题、电路板的布局问题、印刷行业的排样问题、服装厂中的布料剪裁问题、生产流水线的平衡问题、百货商场中的仓库布局问题、运输行业的集装箱货物装载问题、现实生活中的包装、工厂的设施规划及货架货物的摆放等问题;在计算机信息科学中,存储的分配、资源的分配、内存的管理和多处理器的任务调度等这些低层次的操作都是集装箱问题的实际应用,甚至在一些数学智力游戏中也会频繁出现。

自适应遗传算法解决集装箱装载问题的方法探讨_丁香乾

自适应遗传算法解决集装箱装载问题的方法探讨_丁香乾

自适应遗传算法解决集装箱装载问题的方法探讨丁香乾1,韩运实2,张晓丽2(中国海洋大学1.信息工程中心;2.计算机系,山东青岛266071)摘 要: 集装箱装箱问题是1个有很强应用背景的组合优化问题,约束条件多,求解极为困难。

本文探讨了自适应遗传算法在复杂集装箱装载问题中的应用,算法中采用跨世纪精英选择策略保持了群体的多样性,并给出了有效的解码算法。

实例仿真结果显示出很好的效果,同等条件下求解结果比使用启发式算法高出近10个百分点,表明该算法是行之有效的。

关键词: 遗传算法;集装箱装载;自适应;空间划分;组合优化中图法分类号: T B114.1;T P39 文献标识码: A 文章编号: 1672-5174(2004)05-844-05 随着世界经济与国际贸易的稳步发展,未来集装箱运输将会有大幅度增长。

提高集装箱内部空间利用率,是提高集装箱运输效益的重要途径,从而会带来可观的社会经济效益,特别对铁路货运部门、远洋运输部门更具有重要意义。

集装箱装载问题是1个具有复杂约束条件的组合优化问题[1]。

从20世纪70年代初开始,装箱问题就引起了广泛的研究和探讨[2]。

问题的描述是:将不同尺寸的物品摆放入有一定容量的容器中,以获得某种最佳的效益。

从计算复杂性理论来讲,装箱问题属于NP 完全问题[3],求解极为困难。

对于NP 完全问题,既然没有准确的多项式时间算法,比较现实的方法是采用多项式时间的近似算法。

近似算法分为启发式方法(heuristic method )和随机方法(random method )。

与盲目搜索不同的是:启发式搜索运用启发信息,应用某些经验或规则来重新排列节点的顺序,使搜索沿着某个被认为是最有希望的前沿区段扩展。

启发式方法较多的依赖于对问题构造和性质的认识和经验,适用于解决不太复杂的问题。

随机方法不依赖于问题的性质,从解空间中随机的选择多个解,检查这些解的可行性,在可行解集中选择目标函数最优的解作为最优解。

装箱问题的近似解PPT课件

装箱问题的近似解PPT课件
一、FFD(First Fit Strategy)策略
编辑课件
Байду номын сангаас
1
First fit strategy:places an object in the first bin in which it fits.
FFD strategy is a modification that sorts the objects first so that they are considered in order of non-increasing size.
所以存在k0, k是第一个满足只含有1个object, 而余下的opt(s)-k个箱子中包含2个object的箱子下标。
编辑课件
8
利用“最优”情况导出矛盾
在最优解的情况下,所有object都会放置在 opt(s) 个箱子中。
不失一般性,我们假定前k个箱子不含有
object k+1 , …,i-1.
编辑课件
12
定理13.11
RFFD(m)4/3+1/ ( 3m) 无限的情况下:
SFFD(m)3/2 R和S的意义参见P572页
编辑课件
13
证明
设输入序列为(s1,s2, ,sn),opt(S)=m, 则FFD放在附加箱子的object个数至多为 opt(s)-1,它们至多占用(opt(s)-1)/3个 箱子。
if (used[j]+si 1.0)
bin[i]=j;
used[j]+= si;
break; 编辑课件
4
四、FFD算法的复杂性
O(n logn)+O(n(n-1)/2) O(n 2)
编辑课件
5

集装箱装箱算法的研究及其应用

集装箱装箱算法的研究及其应用

集装箱装箱算法的研究及其应用集装箱装箱算法是用于求解货物组合和分配问题的一类算法。

在运输集装箱行业中,通常会面临大量的货物量不同的集装箱组合,而集装箱装箱算法则可以帮助企业快速准确地找出最优的货物组合和分配方案。

本文的目的是阐述集装箱装箱算法的研究现状以及在实际应用中的优点和缺点。

首先,本文介绍了集装箱装箱算法在科学上的研究现状。

集装箱装箱算法是一种能够快速准确求解货物组合和分配问题的新型算法,它可以根据货物尺寸、重量、价值等参数为不同的货物分配最优的集装箱,以节约运输成本。

随着这种算法的不断发展和普及,相关研究也在不断深入,已取得良好的效果,可以大大改善货物的装卸和分配工作。

其次,本文着重介绍了集装箱装箱算法在实际工作中的优点和缺点。

优点方面,集装箱装箱算法具有解决背包问题的能力,能够有效地把货物放入最佳的集装箱中,减少空间浪费;同时,它也能够准确地根据各种未知参数进行装箱,大大节约时间;此外,它可以减少集装箱和货物之间的运输成本。

缺点方面,集装箱装箱算法存在较复杂的编程问题,而且在一定程度上限制了算法模型的灵活性,使得它无法满足所有类型的货运需求。

最后,本文讨论了集装箱装箱算法应用的前景。

随着当今物流行业的发展,集装箱装箱算法将会发挥越来越重要的作用。

它可以帮助物流企业降低货物运输成本,提升运输效率,以及提高货运服务质量。

未来,行业可以利用集装箱装箱算法,研发更为智能和自动化的装箱系统,使得物流运输更加高效便捷。

综上所述,集装箱装箱算法是目前运输物流行业的一项重要技术,可以帮助企业节省运输成本,提升货运服务质量。

随着行业的不断发展,它的应用也会有所拓展,为物流行业带来更多改进。

求解装箱问题的启发式算法研究

求解装箱问题的启发式算法研究

personification heuristics,which is inspired by the daily
strategy
of
building wall in the 2D・packing
life.Similar
to
the personification heuristics for the

algorithm,we
based
transform
the 2D strip packing
problem into
problem.Then,for the 2D
on
knapsack
packing problem,we present
to pack
least
wasted
first strategy
等制造行业都有广泛应用。
与切割相对应的是填充(排样、布局)问题,随着超大规模集成电路的出现, 一块电路板中的元器件有成千上万个。怎么样合理地安排每个元器件在电路板上 的位置,最大化利用电路板的空间,即电路板的布局问题,成为集成电路版图设 计中的一个重要步骤。该问题也同样出现在报纸的排版中。 在数学的王国中,有一个问题一直困扰着人们,即“完美正方形”【2l的寻找。 所谓“完美正方形"是指可以用一些大小各不相同,并且边长为整数的小正方形 铺满的正方形,有趣的是,该问题也跟装箱问题有密切联系,事实上,21阶的 “完美正方形’’正是用大型电子计算机算出来的。 由此可见,装箱问题的应用非常广泛,研究该问题有着重要的实际意义。随 着应用领域的不同,装箱问题的目标和约束条件也不同,因此人们抽象出了一些 通用的数学模型并把该问题分成了很多类型来分别研究。装箱问题一般可描述如
and the newspaper
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

经典一维装箱问题的适应近似算法的研究摘要本文研究经典一维装箱问题(Bin Packing Problem)及其适应近似算法,给出了一个新的适应近似算法:交叉装填算法(简称CF算法),而且证明了当这些物件大小按非增性预先排序后,CF算法时间复杂度是线性的;通过具体例子说明交叉装填算法优于其它适应近似算法,并且推断CF算法达到装箱问题的最好近似值32。

关键词:一维装箱问题,近似算法,适应算法,交叉装填算法ABSTRACTIn this paper the Bin-Packing problems and any-fit approximation algorithm are studied. We give a new any-fit approximation algorithm (Cross Fit Approximation Algorithm) in O(nlogn)steps. In addition, if the sizes of all objects decreasing according to their sizes, Theany-fit approximation algorithm runs in O(n)steps. This paper proved the cross fit approximation algorithm’s capability excelled other any-fit approximation algorithm’s by someexample,and extrapolate the new any-fit algorithm is a 32-approximation algorithm.Key Words:Pin Packing Problem,Approximation Algorithm,Any-fit Algorithm,Cross Any-fit Algorithm.1. 引言1.1 问题的提出装箱问题也就是把一定数量的物品放入容量相同的一些箱子中,使得每个箱子中的物品体积之和不超过箱子容量并使所用的箱子数目最少。

其应用在实际生活中无处不在,货物装运,服装裁剪,以及计算机科学中的存储分配、共享资源调度、文件存储都是装箱问题在实际应用中的体现。

例如某国际物流公司有一批固体货物要装进集装箱用船从广州运到美国。

每个集装箱的规格都一样(体积均为150立方米),而每件货物体积不一定相同但其长宽高都小于集装箱的。

问怎样的装箱方案最省钱,即所用集装箱最少?研究装箱问题能够更好解决上述这些问题,有很大的经济效益。

所以装箱问题有着广泛的应用背景,具有很大的研究价值。

但是装箱问题是NP 难解问题[7],这意味着该问题不存在在多项式时间内求得精确解的算法(如果P ≠NP )因此对装箱问题算法的研究指的是对其近似算法的研究,所谓近似算法即该算法可以求得与精确解接近的结果但不一定得到精确解。

目前,已经提出了大量的近似算法,其中适应近似算法是目前时间复杂性比较低的一种近似算法。

如下次适应(NF )算法、首次适应(FF )算法、最佳适应(BF )算法、降序首次适应(FFD)算法、降序最佳适应(BFD)算法等。

装箱问题中最早被研究的是一维装箱问题。

随着研究的深入,人们发现实际生活中更多存在的是一些带约束的装箱问题,因此也就抽象化出了,如二维装箱问题(条形装箱问题、剪裁问题)、三维装箱问题、变容装箱问题、有色装箱问题、对偶装箱问题等等一系列的带约束的装箱问题。

但是由于这些问题的NP 困难性,虽然已经有一些研究成果,但是还有很许多未解问题,甚至一些是一维装箱问题[5]。

一维装箱问题是指要求把一些物品放入到具有固定容量的箱子中,并最小化所使用的箱子数目。

本文所讨论的是一维装箱问题。

1.2 相关知识在研究一维装箱问题的适应近似算法之前,我们先来了解一下一些相关的知识。

1.2.1近似算法的定义一个组合最优化问题π是一个最小化或最大化的问题,由三部分组成:实例的集合f π;∀I ∈f π,有一个有限的可行解集合()F I π;有一个目标函数g π,使得∀I ∈f π及σ∈()F I π,赋予一个正有理数g π(I, σ),称为σ的目标值.对于最小(大)化问题,称*σ∈()F I π为I ∈f π的最优值是指σ∈()F I π,恒有**(,)(,)((,)(,)).g I g I g I g I ππππσσσσ≤≥最优解*σ的目标值*(,)g I πσ成为I 的最优值,记作OPT (I)π,当这个问题明确时通常省略下标π.定义1 称算法A 是π的一个近似算法(Approximation Algorithm)是指: ∀I ∈f π,应用算法A 总可以找出I 的一个可行解σ∈()F I π.对应的解的目标值(,)g I πσ记作()I A ,表示由算法A 得到的I 的目标值.若∀I ∈f π,都有()I A =OPT(I),则称A 是π的最优算法(Optimization Algorithm)。

1.2.2适应算法定义2 适应算法(Any Fit Algorithm):适应算法是解装箱问题的一个近似算法。

当处理当前物品,如果有已经打开的箱子中能够放下这个物品,则不打开新的箱子,符合该条件的算法被称为适应算法。

其中下次适应算法、首次适应算法、最佳适应算法、最坏适应算法和几乎最坏适应算法是几个著名的适应算法。

适应算法的最坏情况性能比被证明一定处于[1.7,2]范围内,即在最坏情况性能上不可能优于首次适应算法[2]。

1.2.3经典一维装箱问题在经典一维装箱问题中,处理对象是n 个输入物品的序列和一个无限多的等容量箱子序列;目标是把所有物品放入箱子中并最小化所使用的箱子数目。

可以对其做如下定义: 经典一维装箱问题:给定n 个物品的序列L n =(a 1,a 2,…,a n ),物品a i (1≤i ≤n )的大小s (a i ) ∈(0,1],要求将这些物品装入最小数量的单位容量的箱子中。

例如,把a i (1≤i ≤n )分别放入箱子序列B 1,B 2,…,B m 中,使得每个箱子中的物品大小之和不超过1,即∑∈j i B a s (a i )≤1,1≤j ≤m ,且使所用的箱子数目m 最小。

2. 经典一维装箱问题的适应近似算法近似算法并不保证给出最优解,那么应当如何来评价近似算法的好坏呢?主要基于两个方面的考虑.首先是时间复杂性方面的要求,即要求有一个多项式时间界;其次是性能方面的要求,即希望所求得的近似解尽可能地“接近”最优解.可以从不同的角度来评价近似算法性能,大体可以分为三类:第一类是以算法在最坏情况下的行为标准,研究算法得到最优解的接近程度,越接近越好;第二类是以算法的平均行为为标准研究得到最优解的概率;第三类是局部搜索算法,寻找局部最优解,这种算法有时很好,有时很坏,只能通过实践加以评定。

本文所讨论的是第一种类型。

为了更好地从性能方面来讨论近似算法,我们给出度量近似算法性能的两个指标。

设π是一个最小(大)化问题,I 是π的实例。

设A 是π的一个近似算法,由A 得到的目标值为A (I ),而I 的最优目标值为OPT (I ),记()()()A A I R I OPT I =(()()()A OPT I R I A I =),定义3 π的近似算法A 的绝对性能比(absolute performance ratio )记为 {}i n f (),A A R r R I r I f π=≤∀∈, 定义4 π的近似算法A 的渐近性能比(asymptotic performance ratio )记为{}i n f ,I r AA R r n OPT n R ∞*=∃∈∀≥≤的实例,有N ,其中{}*=全体非零自然数N 。

AR ∞又称为近似算法A 的近似值。

我们分析装箱问题的近似算法的性能包括两个主要内容[2]: (1)建立近似算法在最坏情况下所得目标值的一个界;(2)构造实例说明得到的界可以达到或渐近达到,从而说明这个界已经相当好了。

首先我们用下面的经典结果说明一维装箱求解的困难程度。

引理1[1] 如果P NP ≠,那么对于任意给定的0ε>,不存在近似值为32ε-的近似算法来解决一维装箱问题。

因此这个32近似值是我们对一维装箱问题的近似算法的最好期待,事实上,很多近似算法的近似值都是朝这个目标迈进[3]。

本文给出的算法也是朝这个目标前进。

2.1已知的常用适应近似算法[2][3][4] 2.1.1 NF(Next Fit)近似算法该算法的做法是随到随装,装不下就封箱运走.将n 个物品12,,n s s s 依次装箱,设12,,i s s s 已装入1B 箱,且1211()i i a a a a +-+++< 即1i s +不能装入1B 箱,则1B 箱虽未装满也装箱送走, 1i s +装入下一个箱子2B ,……这种装箱方法适合流水作业,其时间复杂性为O(n)。

定理1[2] 对装箱问题的何实例I ,均有()2()1NF I OPT I ≤- (2.1)例1 设物品集{}124,,,m s s s s = ,各物品得体积为121.2i i a i m⎧⎪⎪=⎨⎪⎪⎩,为奇数,,为偶数 对这个实例I ,易知OPT (I )=m+1,而NF (I )=2m ,从而()22()()1N F I mm O P T I m =→→∞+由定理1和例1,我们有 推论2[2]2NF R =. (2.2)2.1.2 FF (First Fit )近似算法这是一种较为直观的、容易想到的装箱方法,其基本思想是将n 个物品12,,,n s s s 顺次装箱,设装箱的次序是12,,B B ;对某一物i s ,它总是被装到第一个能装下它的箱子中,也就是说物品i s 被装到已装进的物品的体积不超过1i a -的下标最小的箱子中。

这种装箱办法虽然不要求n 个物品全部到达后再装箱,但要求所有箱子都装好后一起送走,可以说适合半流水线作业。

由于每个物品i s 装箱时都必须从1B 开始顺次查看各个箱子是否能装下它,故FF 算法的时间复杂性为2()O n 。

关于FF 算近似法的性能我们有如下结果:定理3[3] 对装箱问题的任何实例I ,均有 17()()110FF I OPT I ≤+, (2.3)并且,存在实例I ,使得()OPT I 充分大且满足 17()(()1)10FF I OPT I ≥-, 从而1710FFR ∞=。

公式(2..3给出了FF 近似算法在最坏情况下所得到的目标值的界,反映了近似解“接近”最优解的程度。

下面用FF 算法计算一个例子所需的箱子数目。

相关文档
最新文档