首页 求解三维装箱问题的启发式分层搜索算法(可编辑)

求解三维装箱问题的启发式分层搜索算法(可编辑)

举报
开通vip

求解三维装箱问题的启发式分层搜索算法(可编辑)求解三维装箱问题的启发式分层搜索算法(可编辑) 求解三维装箱问题的启发式分层搜索算法 厦门大学 硕士学位论文 求解三维装箱问题的启发式分层搜索算法 姓名:彭煜 申请学位级别:硕士 专业:计算机软件与理论 指导教师:张德富 20090605 摘要 装箱问题广泛存在于工业领域,尤其是对于物流运输业和材料制造业,解 决装箱问题的效率和效果直接影响到行业成本和收益。随着我国市场经济的发 展,工业规模越来越大,装箱问题在商业活动中的作用将越来越受重视。解决 装箱问题的算法作为一项提高资源利用率的关...

求解三维装箱问题的启发式分层搜索算法(可编辑)
求解三维装箱问题的启发式分层搜索算法(可编辑) 求解三维装箱问题的启发式分层搜索算法 厦门大学 硕士学位论文 求解三维装箱问题的启发式分层搜索算法 姓名:彭煜 申请学位级别:硕士 专业:计算机软件与理论 指导教师:张德富 20090605 摘要 装箱问题广泛存在于工业领域,尤其是对于物流运输业和材料制造业,解 决装箱问题的效率和效果直接影响到行业成本和收益。随着我国市场经济的发 展,工业规模越来越大,装箱问题在商业活动中的作用将越来越受重视。解决 装箱问题的算法作为一项提高资源利用率的关键性技术,在充分利用运输能 力、减少材料损耗、保护自然资源等方面都有非常重要的意义。 尽管物流业务和材料制造业都发展很快,但装箱软件的数量和质量却没有 很大提高。至今为止,国内外许多学者对装箱问题已经进行了大量的研究,发 表了各种解决该问题的方法。本文在前人研究的基础上,提出一种新的装箱算 法,期望能够用新的方法,以更高的效率求解装箱问题。 本文提出了一个高效求解三维装箱问题的启发式分层搜索算法。本文的工作 包括:第一,基于块装载提出基础启发式算法,按照块选择算法确定每个阶段采 用的块,以一种固定的放置方式装载块,直到无法继续放置物品;第二,提出了 复合块的概念,与传统算法不同的是本文提出的复合块不只包含单一种类的物 品,而是可以在一定的限制条件下包含任意种类任意数目的物品;第三,以深度 优先搜索为基础进一步发展出分层搜索算法,在基础启发式的每一个装载阶段以 分层搜索确定当前阶段的选择,使得搜索结果更接近最优解。 行测试。实验结果表明,分层启发式搜索算法几乎在所有的测试 数据上填充率都 超过了目前已知的优秀算法。 关键词三维装箱:启发式算法:搜索 Abstract Container existsinawide ofissuesintheindustrial field, loadingproblem range and and for materials efficiency especiallytransporting manufacturing(The solutiontothis hasa onthecostsand effectivenessofthe direct problem impact the China’S scaleof benefitsofthe of industry(Asdevelopment economy,the andcommercialactivitiesincreases tosolvecontainer industrial quickly(How willbecomemoreandmore a methodtoincrease loadingproblem important(Askey theutilizationrateof havea influenceon making resources,packingalgorithrnsgreat materials naturalresources( fulluseof and transportcapacity,reducingsaving the businessandmaterials Althoughtransporting industrydevelopquickly,the havenotbeen and ofthesoftwareforcontainer quantityquality loadingproblem ofresearchinthisfieldand havedone far,scholars greatlyimproved(So plenty tosolvethis this on a of variety problem(In previous presented ways paper, based in anew tosolvecontainer studies,we packingalgorithm loadingproblem proposed moreefficient a way( all heuristics search for This efficient multi―layeralgorithm paperpresents container includesthe three-dimensional loadingproblem(It followingparts:First, loadsone weintroducethebasicblock-basedheuristic algorithm, thisalgorithm one isdeterminedblock packingphase block,which by selectingalgorithm,in rio are the toafixed untilblocks available; Second,weproposed according strategy betweentraditionalblockandthis of difference block,the concept conceptcomplex thatit contain of inoneblockundersomerestrictions is can typesobjects multiple instead onthe search depth-firstalgorithm, singletypeblock;Third,based ofjust per for theselectedblockin we a search determining developedmulti-layeralgorithm resultasclosetothe solutionas each this optimal packingphase,andmaking possible( Inthis Bischoffand Ratcliffs1600testdataofthree(dimensional paper,the container aretested(The problem resultsshowthatourheuristic experimental search the multi-layeralgorithmoutperformsbestknown inalmostallthe algorithm test data( words:Three-Dimensional Key Container Problem;Heuristic Loading Algorithm; Search; 厦门大学学位论文原创性声明 本人呈交的学位论文是本人在导师指导下,独立完成的研究成 果。本人在论文写作中参考其他个人或集体已经发表的研究成果,均 在文中以适当方式明确标明,并符合法律规范和《厦门大学研究生学 术活动规范 试行 》。 另外,该学位论文为 课题 组 的研究成果,获得 课题 组 经费或实验室的 实验室完成。 请在以上括号内填写课 资助,在 题或课题组负责人或实验室名称,未有此项声明内容的,可以不作特 别声明。 声明人 签名 (彩 趣 川年‘月箩El 厦门大学学位论文著作权使用声明 本人同意厦门大学根据《中华人民共和国学位条例暂行实施办 法》等规定保留和使用此学位论文,并向主管部门或其指定机构送交 学位论文 包括纸质版和电子版 ,允许学位论文进入厦门大学图书 馆及其数据库被查阅、借阅。本人同意厦门大学将学位论文加入全国 博士、硕士学位论文共建单位数据库进行检索,将学位论文的标题和 摘要汇编出版,采用影印、缩印或者其它方式合理复制学位论文。 本学位论文属于: I(经厦门大学保密委员会审查核定的保密学位论文, 于 年 月 日解密,解密后适用上述授权。 2(不保密,适用上述授权。 请在以上相应括号内打“?’’或填上相应内容。保密学位论文 应是已经厦门大学保密委员会审定过的学位论文,未经厦门大学保密 委员会审定的学位论文均为公开学位论文。此声明栏不填写的,默认 为公开学位论文,均适用上述授权。 声明人 签 名 (玄逆乏 矿7年‘月广日 求解三维装箱问题的启发式分层搜索算法 硕士学位论文 第一章绪论 1(1研究背景 装箱问题广泛存在于工业领域,涉及到工业生产的方方面面,包括运输业 的集装箱业务,材料制作业的切割业务,印刷行业的排版,工厂的设施 规划 污水管网监理规划下载职业规划大学生职业规划个人职业规划职业规划论文 等 等。尤其是对于物流运输业和材料制造业,解决装箱问题的效率和效果直接影 响到行业成本和收益。 随着我国市场经济的发展,工业规模越来越大,装箱问题在商业活动中的 作用越来越受重视。解决装箱问题的算法作为一项提高资源利用率的关键性技 术,对充分利用运输能力、减少材料损耗等方面都有重要意义。本文就是在这 样的背景下产生的。 1(2研究意义 在我国,物流业尚处于产品生命周期的发展期,全社会的运输与物流成本 随着我国的物流业的发展节节攀升。由于社会工业的经济总量巨大,资源利用 率微小的提升就能节约大量资源。而如何提高材料或空间利用率、降低成本成 为一个很重要的问题。因此,采用更好的方式解决装箱问题,有着非常积极的 现实意义。更好的算法,意味着更高的材料和空间利用率、更低的成本、更高 利润,从而提高企业的盈利能力,并获得更多的经济和社会效益。 尽管物流业务和材料制造业都发展迅速,装箱软件的使用数量和质量却没 有很大的提高。至今为止,过国内外许多学者对装箱问题已经进行了大量的研 究,发表了各种解决该问题的方法。本文的研究,试图通过启发式分层搜索有 效寻求三维装箱问题的近似解,并为以后装箱问题和其他相关问题的研究以及 装箱应用软件的开发提供一个很好的借鉴经验和参考依据。 1(3研究的内容 经典的装箱问题的描述是:将一定数量的物品放入有一定容量的容器中, 使得每个容器中的物品之和不超过容器容量并获得某种最佳的效益。待放入的 求解三维装箱问题的启发式分层搜索算法 硕士学位论文 物品和使用的箱子均为长方体,这是因为一般产品在生产结束后为了运输搬运 的方便都用长方体包装,而运输容器一般也都是长方体的。 由于装箱问题涉及的领域多、应用背景广,不同情况的解决方法差异很大。 实际应用中的装箱问题有不同的优化目标和装载约束,为了更好地理解装箱问 题、 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 算法,必须先按照一定的标准,将装箱问题划分成不同的装箱问题。 and DyckhoffFinke[1]概述了不同类型的装箱问题及相关的切割问题。 按照在进行装箱操作的过程中,事先是否知道所有物品的信息,可划分为 在线问题和离线问题。在实际应用中,大多数问题是离线形式的。在最近的研 究中,尤其是针对三维装箱问题的算法设计中,大多研究的也是离线问题。 按照容器空间的维度可分为一维、二维和三维装箱问题。三维装箱问题是 一维、二维装箱问题的泛化。这类问题在集装箱装载、飞机装仓、码头装货、 托盘装载以及建筑、造船、电子等诸多领域有广泛的应用。 按照使用的容器数量可分为单容器和多容器问题,单容器装箱问题与背包 问题相似,目标是使所使用的容器空间利用率最高或装载的总价值最大。多容 器装箱问题又可分为单一种类容器和多种类容器两个自问题,目标是在装完所 有物品和满足约束条件的前提下,容器总使用成本最低,且均匀地使用每个容 器。单一种类容器问题的目标可以简化为使用的容器数量最少。 按照物品的种类数目可分为同构装箱问题和异构装箱问题。只有一种物品 类型的装箱问题被称为同构装箱问题。有少数几种物品类型且每种类型数量较 多的装箱问题被称为弱异构装箱问题。强异构装箱问题则有许多物品类型且每 种类型数量较少。 除了以上提到的分类,针对特定需求的装箱问题有很多约束,例如重心约 束,承重能力约束等。本文主要考虑的是离线的单容器异构三维装箱问题,可 以形式化定义如下: 给定一个容器 其体积为V 和一系列待装载的物品,容器和物品的形状 都是长方体。问题的目标是要确定一个可行的物品放置 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 使得在满足给定装 载约束的情况下,容器中包含的物品总体积S尽可能的大,即填充率尽可能的 大,这里填充率指的是S,V*100,。可行放置方案要求放置满足如下三个条件: 2 硕士学位论文 求解三维装箱问题的启发式分层搜索算法 1 被装载的物品必须完全被包含在容器中。 2 任何两个被装载的物品不能互相重叠。 3 所有被装载的物品以与容器平行的方式放置,即不能斜放。 除了以上的基本约束以外,针对实际问题,本文还考虑以下两个约束。其 中稳定性约束是可选,本文针对是否包含稳定性约束的情况设计 不同的算法。 C1 方向约束 在许多应用中,物品的装载有方向约束。也就是说,每个物品只有它的一 条或几条边可以竖直放置作为高度。没有此约束的问题可以被简单的视为所有 物品的三条边都可以作为高度。 C2 稳定性约束 可选 在许多应用中,特别是在交通运输业中,装载必须满足稳定性约束。这意 味着每个被装载的物品必须得到容器底部或者其他物品的支撑。也就是说,禁 止被装载的物品悬空。 1(4三维装箱问题启发式算法研究现状综述 目前对三维装箱问题算法的研究,多集中在异构装箱问题上。一方面是因 为多数实际应用中,都涉及到种类繁多的物品;另一方面是因为在解决单一种 类的三维装箱问题时,二维问题的算法也对其提供了思路,如果待装物品完全 相同,那么在一个平面上求出面积利用率最大的布局模式后,只要在高度方向 上扩展该布局模式即可。 装箱问题是典型的NP-Hard问题[2],即不存在多项式时间复杂度的算法保 证能找到问题的最优解,用传统的精确搜索技术求解这类问题,会产生“组合爆 炸’’的现象。因此采用装箱问题的精确求解算法是不现实的,启发式求解方法 成为理论研究和实际应用的首选。 近年来,涌现出许多解决装箱问题的算法。对于二维装箱问题,历史上有 一些不错的启发式求解算法[3,4,5,6]。对于三维装箱问题,George和 Robinson[21],Michael 等提出了一些启发式算法。而基于图搜索的算法可以参考文献R(Morabito 3 硕十学位论文 求解三维装箱问题的启发式分层搜索算法 Koide[22]等 [10]。Gehring[12], Bischoff[19,20],Moura[25]等提出了一些新的有趣的启发式算法。 国内学者对三维装箱问题的研究,也取得了一些不错的结果[26,27,28, 29,30],特别是黄文奇教授等提出了一个有效的求解一类装箱问题的算法 [30]。下面就对其中一些有代表性的算法做一个简单的综述。 念。使用“层"来生成摆放模式的基本思路是:通过生成垂直的互不相关的包 含多种物品的层,由这些层来组成完整的放置方案,层内单个物品的放置方式 层与层之间互不关联,独立存在,所以一个完整的放置方案中,这些层的顺序 可以随意调整,使得一些约束更容易被满足,例如对重心的要求。 David Pisinger[11]基于“层"设计了一种启发式算法。其基本思想是: 将整个容器空间分成若干垂直的层,再将层分成若干水平或垂直的带,装填带 的时候以容器的宽或者高为背包的容量、所有未装入物品为对象,按背包问题 填充这些带,并最终获得全局最优解。其中,合适的层的深度和带宽通过分支 定界法获得,在这个过程中包括了多种排序和选择的规则。这种方法容器的利 用率较高,但货物稳定性很差,上层货物经常得不到下面货物的完全支撑。 AndreasBortfeldt和Hermann Gehring[13]在层概念的基础上,应用遗 传算法设计了一种混合遗传算法。这个算法使用复杂的数据结构以自然的方式 来表示解 染色体 ,即装载计划,而不像一般的GA对解进行编码。根据染色 体,算法能使用基本规则、最佳选择策略和启发式方法生成层以及层内物品的 放置方案。通过这种编码方式,算法可以考虑很多不同约束,适用于物品种类 很多、约束复杂的情况。但是,在空间利用率和稳定性方面,该 算法存在一定 不足。由于这种垂直“层"及其摆放方式的特点,使用这一方法生成的布局模 式的稳定性不高。因此除“层’’以外,还出现了许多其他的装箱策略。 4 求解三维装箱问题的启发式分层搜索算法 硕士学位论文 Search Sei jiKoide[22]等人将遗传算法和传统的桁条搜索算法 Beam Algorithm 与装箱问题的启发式方法相结合,针对该问题开发了 拼箱算法。 E(E(Bischoff等人[9]针对异构装箱问题,从由底向上的摆放方式出发, 提出了基于“平面"的算法。由底向上每次只放入一层最多由两种物品组成的 水平层,迭代填充和生成平面、水平层,获得有效且具有高稳定性的放置方案。 算法通过设定的规则选择合适的物品、平面、位置等放置参数,采用平面合并 等方法提高平面利用率,进而生成一个较好的完整放置方案。虽然放置稳定性 方面表现不错,但此算法所得解的平均填充率不高。 先用待装物品生成许多塔,生成一个由互不关联的塔组成的集合。然后将这些 塔按设定的一系列规则放入目标容器,生成完整的放置方案。最后使用遗传算 法 GA 调整初始解以取得较好的近似解。该算法在放置稳定性方面表现不错, 对物品种类少或多的情况均适用。 与“塔"和“层”的概念不同,Michael Eley[23]设计了基于同类“块” Block 的算法,完整的放置方案是由这些同类“块’’组成的,而“块’’则 是由完全相同的物品 物品种类和放置方向均相同 组成的没有空隙的长方体 结构。算法用贪婪算法生成初始解,然后用分支定界法改善初始解,在选择下 一个节点时采用最佳搜索策略,即只选择具有最佳 评价 LEC评价法下载LEC评价法下载评价量规免费下载学院评价表文档下载学院评价表文档下载 值的节点作为下一步的 拓展节点。该算法在容器空间利用率和稳定性方面表现较好,并且由于块与块 之间不关联的特点,可以很好的满足重心约束。 Bortfeldt[15]进一步拓展了“块’’的概念,使其可以包含一到两种物品 并且容许包含空隙出现在“块”中。为防止“组合爆炸’’,“块"只能按照某种 特定的方式被生成,一个基础启发式算法被用来生成放置方案。该启发式算法 分阶段进行装载,在每个装载阶段,首先生成所有可能的“块”,并按照体积 从大到小排序,每个阶段选取的“块"由输入的放置序列决定。按照这种方式, 放置序列被作为放置方案的一种编码方式,算法采用禁忌搜索寻找最优的放置 序列作为问题的近似解。由于允许更多的组成块的方式,算法的结果得到了改 善。但是在一些情况下“块"中包含过多的空隙,算法的结果有可能变差。另 5 求解三维装箱问题的启发式分层搜索算法 硕士学位论文 外,由于基础启发式中可以考虑各种约束,算法有很好的灵活性。 另一个被经常用到的概念是“剩余空间"。“剩余空间"是容器中一个未被 填充的长方体空间,它可以被某种方式填充,填充以后的未填充空间被切割成长 方体成为新的“剩余空间”。在初始状态下,容器是唯一的“剩余空间”,算法以 某种特定的启发式填充空间,生成新的装载空间,直至没有新的可用的“剩余空 间”生成。MouraE25]基于此概念提出了一个贪心随机自适应搜索算法 GRASP 。 Parrefio[263进一步发展和改进了该算法,取得了非常不错的结果。 Tobias Fanslau和AndreasBortfeldt[27]基于“块’’的概念,提出了“复 合块”,允许“复合块"包含多种类型的物品,并且通过一些约束保证块中的物 品保持较高的填充率。该算法结合了“复合块”和“剩余空间", 可选择通过限 制剩余空间的切割方式保证物品装载的稳定性,并在装载过程中采用基于整数拆 分的树状搜索寻找局部最优解作为算法选取的“块”。“复合块"的引入大大增加 了可用的块数量,而有效的启发式树状搜索也使得对解的评估更为精确,整个算 法的结果有了很大提升,是目前解决装箱问题最有效的算法。 随着研究的深入,研究人员在设计算法时开始重新考虑一些重要的实际约束 在装箱过程中的作用及其对放置方案的影响。一般装箱算法在处理约束时,只是 将它们简单地作为物品在放入容器空间时的限制规则。这样做对某些约束,比如 物品的方向约束,是合适的,但对有些约束,比如物品的承重约束,却不能如此 处理。以物品的承重约束为例,若仅以某个平面的承重能力来限制在这个平面上 摆放物品的可能性,那么不仅不会防止承重能力低的物品放在较低的位置,而且 会浪费这些物品上的空间,从而降低整体的空间利用率。处理这类约束更好的方 式是,建立能够使承重能力低的物品放在较高位置的机制。 1(5本文的内容安排 本文研究了三维装箱问题,重点研究了离线的单容器异构三维装箱问题。 针对三维装箱问题的特点,提出了复合块的概念以及基于块装载的基础启发式算 法,接着采用分层搜索算法选择在每个阶段应选择的块,并取得了非常好的效果。 本文的内容安排如下: 第一章介绍了本文的研究背景、意义及国内外研究现状,并对本文的内容安 6 求解三维装箱问题的启发式分层搜索算法 硕士学位论文 排进行了介绍。 第二章主要介绍了算法的整体架构和一些重要的概念和数据结构,其中包括 简单块、复合块、剩余空间、放置、放置方案等等;接着,详细描述了本文采用 的基础启发式算法,并针对带稳定性约束和不带稳定性约束的问 题设计了不同的 放置方式和未填充空间的切割方式。 第三章详细介绍了简单块和复合块的概念和约束,并给出了相应的生成算 法。 第四章重点介绍了块选择算法,首先对块选择问题进行了概述,并介绍了基 于整数拆分的树状搜索算法,接着分析了三维装箱问题的一些特性,进而提出分 层搜索算法,最终给出了本文采用的块选择算法。 第五章给出了算法的实际运行结果,并且比较分析了本文算法与历史上其他 算法的计算结果。 第六章是对本文的总结,并指出了进一步的工作。 其中二、三、四章是本文的核心。 7 硕士学位论文 求解三维装箱问题的启发式分层搜索算法 第二章基于块装载的启发式算法 2(1算法总体结构 因为装箱问题本身的复杂性和实际操作需要,必须使用启发式方法才能有效 的生成放置方案。一个良好的启发式算法不但应该能迅速找到解,而且应该尽可 能的接近最优解,同时算法还应该提供必要的灵活性使其能够适 应不同的场合和 需求。本文提出的启发式算法,以一个设计良好的基于“块”装载的启发式方法 为基础,通过启发式搜索算法选择每个阶段采用的块。“块"装载方法决定了算 法的“骨架",搜索算法则决定了算法逼近最优解的速度和效果。算法总体框架 如图2―1所示。 为方便下文描述,先介绍一下算法用到的一些基本概念和要素。 1 三维装箱问题。如前所述,装箱问题研究的是在满足一定约束的情况 下往容器中放置尽可能多的物品。所以问题的描述由容器大小、物品 的类型以及物品数量三部分构成。 2 块及可行块列表。本文研究的算法以块为基本单位,块是一种概念上 的长方体,包含一种或多种物品。块内的物品按照某种方式放置并保 证满足方向性约束C1以及可选择的稳定性约束C2,块可以随意的被 放置到容器中某个剩余空间而不破坏其内部的约束C1或C2。对于一 个剩余空间,所有能放入它的块的集合按体积从大Nd,的排列的列表 被称作可行块列表。 3 剩余空间及剩余空间堆栈。如前文所述,剩余空间是容器的一部分未 使用长方体空间。在启发式过程中,所有剩余空间被组织成一个堆栈, 每次只处理位于栈顶的剩余空间。另外,在本文中,当考虑稳定性约 束C2时,算法要求所有的剩余空间都被容器底部其他物品支撑。 4 剩余物品向量。表示当前还未被装载的物品数量的向量。 5 放置。将一个块放入一个剩余空间被称作一个放置。需要注意的是, 当考虑稳定性约束C2时,由于本文算法在生成块的时候保证其内部 物品受到其他物品的支撑满足稳定性约束C2,同时我们也能通过约束 剩余空间的生成方式保证剩余空间的底部也受到支撑,所以此时每一 求解三维装箱问题的启发式分层搜索算法 硕士学位论文 个合法的放置中的所有物品也必然是受到支撑满足稳定性约束C2的。 6 放置方案。算法产生的所有放置的集合就是一个放置方案,其包含了 所有放入容器的物品的位置信息。 7 基础启发式。本文算法的基础启发式运行如下:首先生成所有可能的 块列表,接着初始化剩余空间堆栈包含容器为唯一的剩余空间,开始 迭代;每次迭代从栈顶取出一个剩余空间,生成它的可行块列表;若 是列表不为空,则通过块选择算法确定一个近似最优块 放入剩余空间 生成一个放置,并将未填充空间分割成新的剩余空间加入剩余空间堆 栈;否则,放弃当前剩余空间,并尝试将未使用空间中可重新利用的 部分并入堆栈中相应的剩余空间;算法不断重复此填充过程,直至堆 栈为空。需要强调的是,基础启发式与块是如何生成以及块选择算法 的选择完全无关,块生成算法和块评估算法可以被替换以生成更有针 对性的算法。 8 部分放置方案和块选择算法。在基本启发式过程中的某一个时刻,剩 余空间堆栈和剩余物品构成了一个部分放置方案。块选择算法按照某 种方式评估当前可行块,并从中选择一个最优的块。 9 搜索算法参数及时间上限。为保持搜索的灵活性,搜索算法的参数可 由输入参数调整以在计算时间和计算精度上做取舍。而时间上限则用 于防止算法使用过长的时间。 2(2基本概念和数据结构 在装箱问题中,由于所有的物体都是与坐标轴平行的长方体,为方便描述 和计算,对它们引用都是通过参考点和其各个维度上的边长来指定。所谓参考 点定义为一个物体的左后下角,也就是其x、Y、Z坐标均最小的 点。同时为了 方便的进一步描述算法,我们简要的介绍一些主要的数据结构: 1 Box是物品的抽象表示。为了简化计算,本文算法将按照物品的可摆 放方向,在预处理过程中生成所有可能的Box,并通过type指定其真 实的物品类型。也就是说一种物品如果允许所有三条边竖直摆放的话, 将生成6种Box。Box的定义如下: 9 硕士学位论文 求解三维装箱问题的启发式分层搜索算法 10 求解三维装箱问题的启发式分层搜索算法 硕士学位论文 structBox int lx,ly,lz: ,,三边长度 int type: ,,物品类型,不同的Box可以有 ,,相同的类型 : 2 Space表示剩余空间,同样采用参考点的加三边长度的方 法来表示。 struct Space int X,Y,Z: ,,参考点坐标 int ,,三边长度 lx,ly,lz: : 3 Problem包含容器,Box列表以及可用物品向量,形式化描 述了装箱问 题。 structProblem contai Space ner: ,,容器 Box box口: ,,Box列表 int num[]: ,,可用物品向量 ; 4 Block结构表示块。Block既可以表示简单块也可以表示复合块,它有 一个require向量指出其包含的所有的物品的数量。按照本文算法对 块的定义,当考虑稳定性约束C2时,由于块中有空隙,块的顶部有一 部分可能由于失去支撑而不能继续放置其他块,顶部可放置矩形 记录 混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载 了块的顶部可以继续放置其他块的矩形区域。这里,块顶部可放置矩 形以左后上角为参考点,块结构的域ax、ay表示其长宽。另外,尽管 本文算法约束了复合块生成的方式,但是复合块的数目可能产生“组 合爆炸’’,所以我们限制了块的最大复合次数,Block结 构中的times 域用于记录复合次数。 求解三维装箱问题的启发式分层搜索算法 硕士学位论文 structBlock int h,ly,lz: ,,块的三维大小 int require[]:,,所包含物品向量 Block childs[]:,,构成该复合块的子块, ,,若是简单块则为空 intvolume: ,,所包含物品的体积总量 int ax,ay: ,,顶部可放置矩形的长宽 考虑C2 int times: ,,复合的次数 int fitness: ,,块的适应度,在进行块选择 时使用 : 5 Place表示放置,是一个包含剩余空间和块的二元组。 structPlace Spacespace: ,,剩余空间 Block block: ,,块 : 6 PackingState表示部分放置方案,包含已生成放置、剩余空间堆栈、 剩余物品向量以及已装载物品总体积和最终总体积的评 估值。 structPacki ngState Place ,,已生成放置列表 plan[]: SpacespaceStack[]:,,剩余空间堆栈 int avail[]: ,,剩余物品向量 int volume: ,,已装载物品的总体积 int volumeComplete:,,最终装载物品的总体积的估计值 : 7 为避免重复计算,本文算法在算法开始时计算出所有可能的复合块, 存储在全局变量中blockTable。这样,在某一时刻计算某一个剩余空 12 硕士学位论文 求解三维装箱问题的启发式分层搜索算法 间的可行块列表时,只要扫描blockTable找出所有的所有能放入该剩 余空间且能被当前剩余物品满足的块即可。 2(3基础启发式算法 2(3(1基础启发式算法概览 启发式方法是人们在解决问题时所采取的一种根据经验规则来处理问题的 方法。其特点是在解决问题时,利用过去的经验,选择已经行之有效的方法,而 不是系统地、以确定的步骤去寻求答案。启发式方法解决问题的方式不同于穷举 算法。穷举算法是把各种可能性都一一进行尝试,最终找到问题的答案,但它需 要在很大的问题空间内,花费大量的时间和精力才能求得答案。启发式方法则是 在有限的空间内搜索,大大减少尝试的数量,能迅速地给出问题的解。但由于这 种方法具有尝试错误的特点,所以也有失败的可能性。 启发式方法是非常有效的,是人类解决问题的重要方法,事实上,科学家的 许多重大发现,常常是利用极为简单的启发式规则。在人工智能中常用启发式方 法设计计算机程序,模拟人类解决问题的思维活动,已经证明,这是一条有效的 途径。 启发式方法的设计具有很大的随意性和创造性,而且一般缺少严格的理论推 导和数学证明,因此,一般也只能通过大量的试验数据来检验算法的性能好坏。 由于对于NP完全类的组合优化问题,目前缺少一般的算法来求解,精确算法又 太耗时,因此启发式算法被越来越多的应用到这些问题的求解中。对于离线单容 器三维装箱问题亦是如此,自从该问题被提出以来,学者提出了很多启发式算法。 人们把日常生活中积累下来的经验转化为计算机搜索中的启发式策略从而引导 装载过程。 本文中提出的基于块装载三维装箱问题的求解算法,是受日常生活的启发而 提出的启发式算法。该算法的思想类似于二维装箱问题的递归启发式算法[3], and 也是对BortfeldGehring[15]中提到的基础启发式算法的改进。在算法的 开始,根据指定的输入,选择生成简单块列表或者复合块列表。启发式算法维护 ,个剩余空间堆栈,自顶向下地装载剩余空间。在算法开始时,容器是剩余空间 堆栈中唯一的剩余空间。在装载过程中,栈顶剩余空间被取出,在有可行块时采 硕士学位论文 求解三维装箱问题的启发式分层搜索算法 用块选择算法指定一个当前最优的块与剩余空间结合生成一个放置,并将未填充 空间切割成新的剩余空间加入堆栈;在无可行块的情况下则抛弃该空间并试图将 此空间中的可利用空间并入新的栈顶的其他剩余空间。上述过程将被不断重复, 直到堆栈为空。 14 求解三维装箱问题的启发式分层搜索算法 硕士学位论文 算法2-1给出了基础启发式的具体描述,首先算法根据输入参数指定的 isComplex生成所有可能的简单块或复合块;接着初始化当前部分放置方案,并 开始装载过程;每个装载阶段,算法从剩余堆栈栈顶取出一个空间space,用 一个块进行放置并加入当前部分放置方案,接着采用GenResidulSpace切割未填 充的空间并将它们插入堆栈;当列表为空时,算法尝试重新利用space中的可转 移空间,TransferSpace算法完成这个工作。 上面提到的算法将在后面的小节中详细描述,其中最关键也最复杂的块选择 算法由分层搜索算法实现,具体的算法将在第四章中描述。 2(3(2可行块列表生成 取适合当前剩余空间的可行块列表。其中,blockTable是预先生成的所有可能 的块的列表。这种分离式的设计使得基础启发式算法与块生成算法完全无关,块 生成算法可以根据需要进行定制而不影响基础启发式算法。本文算法采用的块生 成算法将在第三章中详细讨论。 算法2-2描述了上述可行块列表生成算法,该算法扫描blockTable,返回所 有能放入剩余空间并且有足够剩余物品的块。由于blockTable是按块中物品总 体积降序排列的,返回的可行块列表blockList也是按物品总体积降序排列的。 15 硕士学位论文 求解三维装箱问题的启发式分层搜索算法 2(3(3空间切割和空间转移 在每个装载阶段一个剩余空间被装载,装载分为两种情况:有可行块,无可 行块。在有可行块时,算法按照块选择算法选择可行块,然后将未填充空间切割 成新的剩余空间。在无可行块时,当前剩余空间被抛弃,若其中的一部分空间可 以被并入当前堆栈中的其他空间,则进行空间转移重新利用这些空间。 图2―2、图2―3分别显示了在不考虑稳定性约束与考虑稳定性约束剩余空间 与块结合成为放置以后的状态。未填充空间将被按照不同情况,沿着块的三个面 被分成三个剩余空间。需要注意的是,在考虑稳定性约束时,由于要保证所有剩 余空间受到足够的支撑,Z轴上的新剩余空间在切割的时候必须沿着所选块的顶 部可放置矩形进行。因此,块顶部的可放置矩形确定了一个新的剩余空间spaceZ, 其余的两个剩余空间为X轴方向上的spaceX和Y轴方向上的spaceY,所以只有 两种切割方法。而在无需考虑稳定性的情况下,未填充空间的切割更加随意,一 共有六种切割方法。 如图2-4所示,各种切割方式本质上的不同就在于可转移空间的归属。我们 希望在切割过程中尽量保证空间完整性,而衡量空间完整性的方法有很多,本文 选择的策略是另切割出的剩余空间尽可能的大。这里大小的判定以剩余空间在放 置块以后在X轴、Y轴和Z轴上的剩余长度mx、my、mz作为度量,将可转移空 my、mz的从小到大排列,并确保最后入栈的是包含可转移空间 的剩余空间。表 2―1、表2-2分别列出了在考虑稳定性以及不考虑稳定性的情况 下,剩余空间的 切割方式以及三个空间的入栈顺序。 16 求解三维装箱问题的启发式分层搜索算法 硕士学位论文 Z X y y b、 Z Z X X y y c Z Z X X 、 y q e 图2(2剩余空间切割和转移 无稳定性约 束 17 求解三维装箱问题的启发式分层搜索算法 硕士学位论文 Z Z X X y y a b 图2―3剩余空间切割和转移 有稳定性约 束 Z transfe陷 sferable space X X y a transferablespace X space y b 图2(4可转移空间 由于切割算法保证了包含可转移空间的剩余空间后入栈,所以其必然被先装 载,若在装载过程中可行块列表为空,栈顶空间中的可转移空间可以被转移给剩 余空间堆栈中来自同一次切割的其他空间以重新利用。观察图2―4,我们发现可 转移空间的重新分配实际上就是对未填充空间的重新切割。因此,我们可以通过 求解三维装箱问题的启发式分层搜索算法 硕士学位论文 重新切割未填充空间来达到再次利用可转移空间的目的,算法中的 空间与栈顶的一个或两个剩余空间是否是由同一次切割而产生的,若是则将可转 移空间转给相应的一个或两个剩余空间。具体的转移条件和结果在表2―1和表 2-2中描述。 表2一l剩余空间切割方式 有稳定性约束 切割条件 切割方法 入栈顺序 转移条件 转移结果 my?mx图2―3aspaceZ,spaceX,spaceY 图2-3b spaceY无可行块 图2-3b 图2-3a mx?my spaceZ,spaceY,spaceXspaceX无可 行块 表2―2剩余空间切割方式 无稳定性约束 切割方法 切割条件 入栈顺序 转移条件 转移结果 my?mx?mz图2-2aspaceZ,spaceX,spaceY无可行块图2-2e spaceY 图2-2c spaceX无 可行块 图2-2b 图2-2c nix?my?mz spaceZ,spaceY,spaceX无 可行块 spaceX 图2-2e spaceY无 可行块 图2-2c 图2-2f my?mz?呶 spaceX,spaceZ,spaceY 无可行块 图2-2a spaceY spaceZ无 可行块 图2-2d spaceZ无可行块图2-2a mz?my?眦 spaceX,spaceY, spaceZ spaceY无 可行块图2-2f 图2-2e 图2-2d 腿?mZ?my spaceY,spaceZ,spaceX无可行块 图2-2b spaceX spaceZ无 可行块 图2-2b mz?mx?my图2-2fspaceY,spaceX,spaceZ无可行块 spaceZ spaceX无可行块图2-2d 2(4小结 本章首先介绍了算法的整体架构、一些重要的概念和数据结构,其中包括简 单块、复合块、剩余空间、放置、放置方案、块选择算法等等;接着,详细描述 了本文采用的基础启发式算法的流程;然后,针对带稳定性约束和不带稳定性约 束的三维装箱问题,设计了不同的装载方式和未填充空间的切割方式;最后,针 19 求解三维装箱问题的启发式分层搜索算法 硕士学位论文 对装载过程中可能出现的无可行块而导致剩余空间浪费的情况,讨论了通过空间 转移重新利用可转移空间的方法。 求解三维装箱问题的启发式分层搜索算法 硕士学位论文 第三章复合的概念和生成算法 3(1简单块生成 简单块是由同一朝向的同种类型的物品堆叠而成的,物品和物品之间没有 空隙,堆叠的结果必须恰好形成一个长方体。图3-1展示了两个简单块的例子, 其中nx、ny、nz表示在每个维度上的物品数。nx*ny*nz则是简 单块所需要的 总物品数。 Z Z X X y y b a 图3-1简单块 简单块的生成算法枚举所有合法的组合 rlx,ny,nz ,并将其对应的简单 块加入块表。其中合法组合应满足两点约束:所包含的物品数目小于对应可用 物品数目,块大小应小于容器大小。算法3-1详细描述简单块生成算法。 2l 求解三维装箱问题的启发式分层搜索算法 硕士学位论文 3(2复合块生成 复合块是通过不断复合简单块而得到的,我们定义复合块如下: 1 简单块是最基本的复合块。 2 有两个复合块a,b。可以按三种方式进行复合得到复合块c:按X 轴方向复合,按y轴方向复合,按Z轴方向复合。C是包含a、b的最 小长方体。 图3―2展示了三种复合方式,其中的虚线描绘的是新复合块的范围。 显然,按照前面的定义,复合块的数量将是物品数目的指数级,而且随意 生成的复合块中可能有很多空隙,非常不利于装载。所以我们对复合块施加一 定的限制是必要的,本文限制复合块需要满足下面8个条件: 1 复合块的大小不大于容器的大小。 2 复合块需要的各个物品数目小于各个物品的可用数 目。 3 复合块中可以有空隙,但它的填充率至少要达到一定 比例。复合 块的填充率定义为复合块包含的所有物品体积,复 合块体积。在复 合块生成算法中,这个最低值为MinFillRate。 求解三维装箱问题的启发式分层搜索算法 硕士学位论文 Z Z X × ' y a 按x轴方向复合 b 按y轴方向复合 X y c 按z轴方向复合 图3-2复合块 4 受复合块中空隙的影响,复合块顶部有支撑的可放置矩形可能很 小,为了保证在后面的装载过程中剩余空间不会由于失去支撑浪 费可用空间,我们限定顶部可放置矩形与相应的复合块顶部面积 的比至少要达到MinAreaRate。当然,在不考虑稳定约束时复合块 不受此约束限制。 5 为控制复合块的复杂程度,定义复合块的复合次数如下:简单块 的复杂次数为0,其他复合块的复杂度为其子块的复杂次数的最大 值加l。块结构的times域描述了复合块的复杂程度,我们限制生 成块的最大复杂次数为Times。 6 在考虑稳定性约束的情况下,按x轴方向、按Y轴方向复合的时 候,子块要保证顶部可放置矩形也能进行合并,也就是说子块要 有相同的高度,并且在合并时顶部可放置矩形邻接。另外,在按z 轴方向复合时,子块要保证复合满足约束C2,即上方的子块一定 求解三维装箱问题的启发式分层搜索算法 硕士学位论文 要放在下发子块的顶部可放置矩形上。 7 拥有相同三边长度、物品需求和顶部可放置矩形的复合块被视为 等价块,重复生成的等价块将被忽略。 8 在满足以上约束的情况下,块数目仍然可能会很大,我们的生成 算法将在块数目达到Blocks时停止生成。 表3―1描述了不考虑稳定性约束情况下具体的复合要求和结果。 表3-1复合的条件和结果 无稳定性约束 方向 a。b满足的条件 复合块c的属性 复合块c应满足的条件 x轴 无 C(1x: a(1x+b(1x C(1y: a(1y,b(1y c(1z: a(1z,b(1z 无 C(1x: a(1x,b(1x y轴 C(1y: a(1y+b(1y C(1x?container(1x C(1z: a(1z,b(1z C(1y?container(1y Z轴 无 C(1x: a(1x,b(1x C(1Z?container(1z C(1y: a(1y,b(1y c(require?num C(1Z: a(1z+b(1z ? MinFi11Rate 通用 C(require:2a(require+ b(require C(times ?Times c(volume:2a(volume+ b(volume c(child
本文档为【求解三维装箱问题的启发式分层搜索算法(可编辑)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_353097
暂无简介~
格式:doc
大小:71KB
软件:Word
页数:38
分类:
上传时间:2017-11-12
浏览量:120