一维装箱问题典型算法

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第三章装箱问题信息处理中的组合优化第三章装箱问题§1装箱问题的描述§2装箱问题的最优解值下界§3装箱问题的近似算法第三章装箱问题装箱问题(BinPacking)是一个经典的组合优化问题,有着广泛的应用,在日常生活中也屡见不鲜.§1装箱问题的描述设有许多具有同样结构和负荷的箱子B1,B2,…其数量足够供所达到目的之用.每个箱子的负荷(可为长度、重量etc.)为C,今有n个负荷为wj,0wjCj=1,2,…,n的物品J1,J2,…,Jn需要装入箱内.装箱问题:是指寻找一种方法,使得能以最小数量的箱子数将J1,J2,…,Jn全部装入箱内.§1装箱问题的描述由于wiC,所以BP的最优解的箱子数不超过n.设11;0iyin箱子Bi被使用否则1,1.0ijxijn物品Jj放入箱子Bi中否则则装箱问题的整数线性规划模型为:1minniizy1..1(1)njijijstwxCyin01,01,1.iijyorxorijn()BP约束条件(1)表示:一旦箱子Bi被使用,放入Bi的物品总负荷不超过C;约束条件(2)表示:每个物品恰好放入一个箱子中.11(2)nijix1jn第三章装箱问题上述装箱问题是这类问题最早被研究的,也是提法上最简单的问题,称为一维装箱问题.但.BPNPC装箱问题的其他一些提法:1、在装箱时,不仅考虑长度,同时考虑重量或面积、体积etc.即二维、三维、…装箱问题;2、对每个箱子的负荷限制不是常数C;而是,1.iCin最优目标可如何提?3、物品J1,J2,…,Jn的负荷事先并不知道,来货是随到随装;即在线(On-Line)装箱问题;4、由于场地的限制,在同一时间只能允许一定数量的箱子停留现场可供使用,etc.§1装箱问题的描述BP的应用举例:1、下料问题轧钢厂生产的线材一般为同一长度,而用户所需的线材则可能具有各种不同的尺寸,如何根据用户提出的要求,用最少的线材截出所需的定货;2、二维BP玻璃厂生产出长宽一定的大的平板玻璃,但用户所需玻璃的长宽可能有许多差异,如何根据用户提出的要求,用最少的平板玻璃截出所需的定货;3、计算机的存贮问题如要把大小不同的共10MB的文件拷贝到磁盘中去,而每张磁盘的容量为1.44MB,已知每个文件的字节数不超过1.44MB,而且一个文件不能分成几部分存贮,如何用最少的磁盘张数完成.1.44710.08104、生产流水线的平衡问题给定流水节拍C,如何设置最少的工作站,(按一定的紧前约束)沿着流水线将任务分配到各工作站上.称为带附加优先约束的BP.BP是容量限制的工厂选址问题的特例之一.Goback第三章装箱问题§2装箱问题的最优解值下界由于BP是NP-C问题,所以求解考虑一是尽可能改进简单的穷举搜索法,减少搜索工作量.如:分支定界法;二是启发式(近似)算法.1minniizy1..1(1)njijijstwxCyin01,01,1.iijyorxorijn()BP01,01,1.iijyxijn()CBP显然是它的一个最优解.1,0(),,,1.iiiijiwxxijyijnC1niioptwzC11(2)nijix1jn§2装箱问题的最优解值下界Theorem3.1BP最优值的一个下界为11.niiwLCa表示不小于a的最小整数.Theorem3.2设a是任意满足的整数,对BP的任一实例I,02Ca记1,jIjwCa物品2,2jCIjCaw物品3,2jCIjwa物品则32212(())()max0,jjjIjIwICwLaIIC是最优解的一个下界.第三章装箱问题aCC/2C-aI1I2I3Proof:仅考虑对I1,I2,I3中物品的装箱.中物品的长度大于C/2,12II每个物品需单独放入一个箱子,这就需要个箱子.12II又中每个物品长度至少为a,3I但可能与I2中的物品共用箱子,它不能与I1中的物品共用箱子,与I2中的物品如何?由于放I2中物品的个箱子的剩余总长度为2I22jjICICw在最好的情形下,被I3中的物品全部充满,故剩下总长度将另外至少个附加的箱子.C3jjIwwCwCNote:可能小于零w32212(())()max0,jjjIjIwICwLaIIC是最优解的一个下界.§2装箱问题的最优解值下界问?1()LaL未必!(,1)jwajn如Corollary3.1记2max()0,2CLLaaa为整数则L2是装箱问题的最优解的一个下界,且.21LLProof:L2为最优解的下界是显然的.(若证明,则可得)1(0)LL21LL32212(())()max0,jjjIjIwICwLaIIC当a=0时,是所有物品.123,III212()(0)0max0,njjwICLIC212max0,ILI21max,IL1L21(0)LLLGoback第三章装箱问题§3装箱问题的近似算法一、NF(NextFit)算法设物品J1,J2,…,Jn的长度分别为w1,w2,…,wn箱子B1,B2,…的长均为C,按物品给定的顺序装箱.先将J1放入B1,如果则将J2放入B1…12wwC如果而12121jjj则B1已放入J1,J2,…,Jj,将其关闭,将Jj+1放入B2.同法进行,直到所有物品装完为止.特点:1、按物品给定的顺序装箱;2、关闭原则.对当前要装的物品Ji只关心具有最大下标的已使用过的箱子Bj能否装得下?能.则Ji放入Bj;否.关闭Bj,Ji放入新箱子Bj+1.计算复杂性为O(n).§3装箱问题的近似算法Example1物品J1J2J3J4J5J6wj674283I:C=10J1J5J6J4J3J2B1B2B3B4B5J1J2J3J4J5J6Solution:首先,将J1放入B1;由于J2在B1中放不下,所以关闭B1,将J2放入B2,J3在B2中放不下(不考虑B1是否能装),所以关闭B2将J3放入B3,…解为:1122333445561xxxxxx其余为零,()5.NFzI第三章装箱问题Theorem3.32NFRProof:先证再说明不可改进2NFR设I为任一实例,().optzIk(要证)()2NFzIk显然,由得1()niioptwkzIC1niiwCk反证如果,()2NFzIk则对任意i=1,2,…,k由于起用第2i个箱子是因为第2i-1个箱子放不下第2i个箱子中第一个物品,因此这两个箱子中物品的总长度大于C,所以前2k个箱子中物品的总长度大于Ck.这与矛盾.1niiwCk()2,2.()NFNFoptzIRzI从而考虑实例I:C=1,124111111,,,,,,,,,222222N()1()2optNFzINzIN易证()22()2()1NFNFoptzINNRzIN得§3装箱问题的近似算法二、FF(FirstFit)算法设物品J1,J2,…,Jn的长度分别为w1,w2,…,wn箱子B1,B2,…的长均为C,按物品给定的顺序装箱.物品J1J2J3J4J5J6wj674283I:C=10用NF算法装箱,当放入J3时,仅看B2是否能放入,因B1已关闭,参见EX.1但事实上,B1此时是能放得下J3的.如何修正NF算法先将J1放入B1,若,12wwC则J2放入B1,否则,J2放入B2;若J2已放入B2,对于J3则依次检查B1、B2,若B1能放得下,则J3放入B1,否则查看B2,若B2能放得下,则J3放入B2,否则启用B3,J3放入B3.第三章装箱问题一般地,J1,…,Jj已放入B1,…,Bi箱子,对于Jj+1,则依次检查B1,B2,…,Bi,将Jj+1放入首先找到的能放得下的箱子,如果都放不下,则启用箱子Bi+1,将Jj+1放入Bi+1,如此继续,直到所有物品装完为止.计算复杂性为O(nlogn).特点:1、按物品给定的顺序装箱;2、对于每个物品Jj总是放在能容纳它的具有最小标号的箱子.但精度比NF算法更高§3装箱问题的近似算法Theorem3.4()7.()4FFoptzIzITheorem3.5对任意实例I,17()()110FFoptzIzI而且存在任意大的实例I,使()optzI17()(()1)10FFoptzIzI因而17.10FFR717141020第三章装箱问题Example2物品J1J2J3J4J5J6wj674283I:C=10J1J5J6J4J3J2B1B2B3B4B5J1J2J3J4J5J6Solution:首先,将J1放入B1;由于J2在B1中放不下,所以将J2放入B2,对于J3,先检查B1是否能容纳下,能.所以将J3放入B1,…解为:1122132435461xxxxxx其余为零,()4.FFzI§3装箱问题的近似算法Example3物品J1J2J3J4J5J6wj678324I:C=10J1J4J3J2Solution:用NF算法B1B2B3B4B5J1J2J6J5J3J4B1B2B3B4B5J1J2J6J5J3J4J6J5()4NFzI用FF算法()4FFzI参见EX.3用FF算法装箱,当放入J4时,B1能容纳J4就放入B1,而事实上,放入B2更好.第三章装箱问题三、BF(BestFit)算法与FF算法相似,按物品给定的顺序装箱,区别在于对于每个物品Jj是放在一个使得Jj放入之后,Bi所剩余长度为最小者.即在处理Jj时,若B1,B2,…,Bi非空,而Bi+1尚未启用,设B1,B2,…,Bi所余的长度为12,,,,i若1maxjkkiww则将Jj放入Bi+1内;否则,从的Bk中,选取一个Bljkww(1)li使得为最小者.min()kjljkjBF算法的绝对性能比、计算复杂性与FF算法相同.Example4物品J1J2J3J4J5J6wj678324I:C=10§3装箱问题的近似算法J1J4J3J2J6J5B1B2B3B4B5J1J2J6J5J3J4Solution:用BF算法解为:1122332435161xxxxxx其余为零,()3.BFzI611310jjwL而此为最优解.1(),BFzIL第三章装箱问题四、FFD(FirstFitDecreasing)算法FFD算法是先将物品按长度从大到小排序,然后用FF算法对物品装箱.该算法的计算复杂性为O(nlogn).Example5物品J1J2J3J4J5J6wj674283I:C=10J1J5J6J4J3J2Solution:已知:()4FFzI物品J5J2J1J3J6J4wj876432B1B2B3B4B5J1J2J3J4J5J6()3FFDzI是最优的.NFD算法?BFD算法?§3装箱问题的近似算法Theorem3.63().2FFDRIProof:显然对任意实例I,有()()FFDoptzIzI记*()()FFDoptzIlzIl首先证明两个结论:(1)FFD算法所用的第个箱子中每个的长度不超过**1,2,...,lll;3C记wi是放入第个箱子中的第一个物品,只需证*1l3iCw用反证法,若不然,则有,因此FFD11,...,3iCww算法中前个箱子中,每个箱子至多有两个物品.*lC3C23C第三章装箱问题可证明存在使前k个恰各含一个物品,后个箱子各含两个物品.0k*lk因

1 / 33
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功