数学建模 - 第八章 装箱问题_第1页
数学建模 - 第八章 装箱问题_第2页
数学建模 - 第八章 装箱问题_第3页
数学建模 - 第八章 装箱问题_第4页
数学建模 - 第八章 装箱问题_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第八章装箱问题组合优化理论

CombinatorialOptimizationTheory数学建模-第八章装箱问题第八章装箱问题§1装箱问题的描述§2装箱问题的最优解值下界§3装箱问题的近似算法数学建模-第八章装箱问题第八章装箱问题

装箱问题(BinPacking)是一个经典的组合优化问题,有着广泛的应用,在日常生活中也屡见不鲜.§1装箱问题的描述

设有许多具有同样结构和负荷的箱子B1,B2,…其数量足够供所达到目的之用.每个箱子的负荷(可为长度、重量etc.)为C,今有n

个负荷为wj,0<wj<Cj=1,2,…,n的物品J1,J2,…,Jn

需要装入箱内.装箱问题:

是指寻找一种方法,使得能以最小数量的箱子数将J1,J2,…,Jn

全部装入箱内.数学建模-第八章装箱问题§1装箱问题的描述

由于wi<C,所以BP

的最优解的箱子数不超过n.设箱子Bi

被使用否则物品Jj

放入箱子Bi

中否则则装箱问题的整数线性规划模型为:约束条件(1)表示:一旦箱子Bi被使用,放入Bi

的物品总负荷不超过C;约束条件(2)表示:每个物品恰好放入一个箱子中.数学建模-第八章装箱问题第八章装箱问题

上述装箱问题是这类问题最早被研究的,也是提法上最简单的问题,称为一维装箱问题

.但装箱问题的其他一些提法:1、在装箱时,不仅考虑长度,同时考虑重量或面积、体积etc.即二维、三维、…装箱问题;2、对每个箱子的负荷限制不是常数C;而是最优目标可如何提?3、物品J1,J2,…,Jn

的负荷事先并不知道,来货是随到随装;即在线(On-Line)装箱问题;4、由于场地的限制,在同一时间只能允许一定数量的箱子停留现场可供使用,etc.

数学建模-第八章装箱问题§1装箱问题的描述BP

的应用举例:1、下料问题轧钢厂生产的线材一般为同一长度,而用户所需的线材则可能具有各种不同的尺寸,如何根据用户提出的要求,用最少的线材截出所需的定货;2、二维BP

玻璃厂生产出长宽一定的大的平板玻璃,但用户所需玻璃的长宽可能有许多差异,如何根据用户提出的要求,用最少的平板玻璃截出所需的定货;3、计算机的存贮问题如要把大小不同的共10MB的文件拷贝到磁盘中去,而每张磁盘的容量为1.44MB,已知每个文件的字节数不超过1.44MB,而且一个文件不能分成几部分存贮,如何用最少的磁盘张数完成.4、生产流水线的平衡问题给定流水节拍C,如何设置最少的工作站,(按一定的紧前约束)沿着流水线将任务分配到各工作站上.称为带附加优先约束的BP.BP

是容量限制的工厂选址问题的特例之一.Goback数学建模-第八章装箱问题第八章装箱问题§2装箱问题的最优解值下界

由于BP

是NP-C问题,所以求解考虑一是尽可能改进简单的穷举搜索法,减少搜索工作量.如:分支定界法;二是启发式(近似)算法

.

显然是它的一个最优解.数学建模-第八章装箱问题§2装箱问题的最优解值下界Theorem

3.1BP

最优值的一个下界为表示不小于a

的最小整数.Theorem

3.2

设a

是任意满足的整数,对BP

的任一实例I,

记则是最优解的一个下界

.数学建模-第八章装箱问题第八章装箱问题aCC/2C-aI1I2I3Proof:仅考虑对I1,I2,I3中物品的装箱.中物品的长度大于C/2,每个物品需单独放入一个箱子,这就需要个箱子.又中每个物品长度至少为a,

但可能与I2

中的物品共用箱子,它不能与I1

中的物品共用箱子,与I2

中的物品如何?

由于放I2

中物品的个箱子的剩余总长度为

在最好的情形下,被I3

中的物品全部充满,故剩下总长度将另外至少个附加的箱子.Note:可能小于零是最优解的一个下界.数学建模-第八章装箱问题§2装箱问题的最优解值下界问?

未必!如Corollary3.1记则L2

是装箱问题的最优解的一个下界,且.Proof:L2

为最优解的下界是显然的.(若证明,则可得

)当a=0时,是所有物品.Goback数学建模-第八章装箱问题第八章装箱问题§3装箱问题的近似算法一、NF(NextFit)算法

设物品J1,J2,…,Jn

的长度分别为w1,w2,…,wn箱子B1,B2,…的长均为C

,按物品给定的顺序装箱.

先将J1

放入B1,如果则将J2

放入B1…如果而则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,…解为:其余为零,数学建模-第八章装箱问题第八章装箱问题Theorem

3.3Proof:先证再说明不可改进设I为任一实例,(要证)显然,由得反证如果,则对任意i=1,2,…,k由于起用第2i

个箱子是因为第2i-1个箱子放不下第2i个箱子中第一个物品,因此这两个箱子中物品的总长度大于C

,所以前2k个箱子中物品的总长度大于Ck.这与矛盾.考虑实例I:C=1,数学建模-第八章装箱问题§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,若,

则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装箱问题的近似算法Theorem

3.4Theorem

3.5对任意实例I,而且存在任意大的实例I,使因而数学建模-第八章装箱问题第八章装箱问题Example2物品J1J2J3J4J5J6wj674283I:C=10J1J5J6J4J3J2B1B2B3B4B5J1J2J3J4J5J6Solution:首先,将J1

放入B1;由于J2

在B1

中放不下,所以将J2

放入B2,对于

J3,先检查B1是否能容纳下,能.所以将J3

放入B1,…解为:其余为零,数学建模-第八章装箱问题§3装箱问题的近似算法Example3物品J1J2J3J4J5J6wj678324I:C=10J1J4J3J2Solution:用NF

算法B1B2B3B4B5J1J2J6J5J3J4B1B2B3B4B5J1J2J6J5J3J4J6J5用FF

算法

参见EX.3用FF算法装箱,当放入

J4

时,B1能容纳J4

就放入B1

,而事实上,放入B2

更好.数学建模-第八章装箱问题第八章装箱问题三、BF(BestFit)算法

与FF

算法相似,按物品给定的顺序装箱,区别在于对于每个物品Jj

是放在一个使得Jj放入之后,Bi

所剩余长度为最小者.

即在处理Jj

时,若B1,B2,…,Bi

非空,而Bi+1

尚未启用,设B1,B2,…,Bi

所余的长度为若则将Jj

放入Bi+1

内;否则,从的

Bk

中,选取一个

Bl

使得

为最小者

.BF

算法的绝对性能比、计算复杂性与

FF

算法相同.数学建模-第八章装箱问题Example4物品J1J2J3J4J5J6wj678324I:C=10§3装箱问题的近似算法J1J4J3J2J6J5B1B2B3B4B5J1J2J6J5J3J4Solution:用BF

算法解为:其余为零,而此为最优解.数学建模-第八章装箱问题第八章装箱问题四、FFD(FirstFitDecreasing)算法

FFD

算法是先将物品按长度从大到小排序,然后用FF

算法对物品装箱.该算法的计算复杂性为O(nlogn).Example5物品J1J2J3J4J5J6wj674283I:C=10J1J5J6J4J3J2Solution:已知:物品J5J2J1J3J6J4wj876432B1B2B3B4B5J1J2J3J4J5J6是最优的

.NFD

算法?BFD

算法?数学建模-第八章装箱问题§3装箱问题的近似算法Theorem

3.6Proof:显然对任意实例I,有记首先证明两个结论:(1)FFD算法所用的第个箱子中每个的长度不超过记wi

是放入第个箱子中的第一个物品,只需证用反证法,若不然,则有,因此FFD算法中前个箱子中,每个箱子至多有两个物品.数学建模-第八章装箱问题第八章装箱问题

可证明存在使前k个恰各含一个物品,后个箱子各含两个物品.

因为若不然,则存在两个箱子使Bp有两个物品

,Bq

有一个物品因物品已从大到小排列,故,因此从而可以将wi

放入Bq中,矛盾.数学建模-第八章装箱问题§3装箱问题的近似算法

因为FFD

未将wk+1,…,wi

放入前k个箱子,说明其中任一个箱子已放不下,故在最优解中也至少有k个箱子不含wk+1,…,wi

中任一个物品.假设就是前k个箱子,因此在最优解中,wk+1,…,wi-1

也会两两放入第个箱子中,且因为这些物品长度大于,所以每个箱子中只有两个物品,且已放不下.但最优解中wi

必须放入前个箱子中,矛盾.故(2)FFD

算法放入第个箱子中物品数不超过而如果至少有个物品放入第个箱子中,记前个物品的长度为.数学建模-第八章装箱问题第八章装箱问题记FFD

算法中前个箱子中每个箱子物品总长为显然,对任意否则长为的物品可放入第j个箱子中,因此矛盾.所以(2)结论成立.

由(1)、(2)知FFD算法比最优算法多用的箱子是用来放至多个物品,而每个物品长不超过,因此数学建模-第八章装箱问题§3装箱问题的近似算法因此因为如果,则,故不妨设考虑实例I:物品集长度为,C为箱长.说明是不可改进的.数学建模-第八章装箱问题第八章装箱问题

比较NF

算法、FF(BF)算法、FFD

算法,它们的近似程度一个比一个好,但这并不是说

NF、FF(BF)就失去了使用价值.1、FF(BF)、FFD

算法都要将所有物品全部装好后,所有箱子才能一起运走,而NF

算法无此限制,很适合装箱场地小的情形;2、FFD

算法要求所有物品全部到达后才开始装箱,而

NF、FF(BF)算法在给某一物品装箱时,可以不知道下一个物品的长度如何,适合在线装箱

.数学建模-第八章装箱问题存储罐注液问题第八章装箱问题

某化工厂有9个不同大小的存储罐,有一些已经装某液体.现新到一批液体化工原料需要存储,这些液体不能混合存储,它们分别是1200m3

苯,700m3

丁醇,1000m3

丙醇,450m3

苯乙醇和1200m3

四氢呋喃.下表列出每个存储罐的属性(单位:m3),问应如何将新到的液体原料装罐,才能使保留未用的存储罐个数最多?存储罐编号123456789容量500400400600600900800800800当前内容-苯----四氢呋喃--体积100300数学建模-第八章装箱问题第八章装箱问题Solution:存储罐编号123456789容量500400400600600900800800800当前内容-苯----四氢呋喃--体积100300

分别记苯、丁醇、丙醇、苯乙醇、四氢呋喃为第1,2,3,4,5种液体.显然,新到液体应尽可能装入已存有此种液体的罐中.

所以余下液体为:900m3

苯,700m3

丁醇,1000m3

丙醇,450m3

乙醇和700m3

四氢呋喃.剩余空罐为1,3,4,5,6,8,9.由于不允许混合,每种液体至少需要1个空罐.令第i种液体装入第j

个存储罐否则记第j个空罐的容量为cj

,j=1,3,4,5,6,8,9,第

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论