二维矩形装箱问题(2D rectangular packing problem, 简称2DRP)介绍

摘要:
本文介绍的算法允许矩形旋转90°,但不处理的断头可分性。在此基础上,另一个和2DRP密切相关的切割和包装问题是二维带包装问题。算法介绍描述装箱模式算法通过上界线和坐标点的概念来描述装箱模式。当矩形b被放置在线段sis_isi上时,上界线被更新。我们利用以下规则评估每个位置:1.spreadconstruction。

写在前面

由于某些原因,这篇文章还没写完就作者就搞别的问题去了,写到一半很不好意思,大家可以去看原文对应的论文进一步研究:【A skyline heuristic for the 2D rectangular packing and strip packing problems】。祝大家学习顺利~

前言

今天为大家介绍二维矩形装箱问题(2D rectangular packing problem, 简称2DRP)以及在此基础上拓展的二维带装箱问题(2D strip packing problem,简称2DSP)
这次介绍的算法运用了启发式算法**禁忌搜索算法(Tabu search,简称TS)**的相关知识,如果小伙伴们还没有掌握,可以在公众号内查阅以下推文:

对了解禁忌搜索的同学而言,相信这次的算法不会很难接受。话不多说,这就开始今天的介绍吧!

问题介绍

装箱问题广泛存在于物流运输的车厢装载、集装箱装载、托盘装载,以及工厂企业的材料切割、成品包装、设施布局规划等场合中。在当前经济环境下,库存与物流活动越来越显示出其重要性,如何降低库存与物流成本就成为一个很重要且迫切的问题。

本文中提到的“”二维矩形装箱装箱问题(2DRP)**,主要考虑二维情形下,所有目标项目都为矩形,目的是最大化可用面积,并允许矩形放置时正交旋转,是经典的NP-Hard问题:
给出n个wihiw_i*h_i的维数为矩形。目标是将没有重叠的矩形正交地放置在一个尺寸为WHW*H的大矩形(称为sheet)中,使所有放置的矩形的总面积最大化。所有的维数都被认为是整数。本文介绍的算法允许矩形旋转90°,但不处理的断头可分性(guillotine-cut constraint)。

在此基础上,另一个和2DRP密切相关的切割和包装问题是二维带包装问题(2DSP)。给定n个矩形,任务是将所有矩形放置在一个宽度为W的矩形带,目标是最小化矩形带的高度H。

算法介绍

描述装箱模式

算法通过上界线(skyline)坐标点(candidate position) 的概念来描述装箱模式。
在算法中,我们尽量将矩形放置在下方。简单来讲,上界线表示最上层矩形的上边界;坐标点代表所有上界线的左下角和右下角坐标。
如图所示,图中最上层水平直线部分为该装箱方式的上界线,分为5段,分别记作s1,s2,s3,s4,s5s_1,s_2,s_3,s_4,s_5。图中实心圆点代表坐标点,共有3个左侧坐标点,3个右侧坐标点。
在这里插入图片描述
严谨表述为:

用上界线表示当前的装箱模式,表示为一组水平线,满足以下性质:
1.每条线段的y坐标与下一条线的不同;
2.线段sjs_j右端的x坐标和sj+1s_{j +1}左侧末端的x坐标相同。

si1s_{i -1}左端点的y坐标大于sis_i左端点的y坐标,或线段sis_i右端点的y坐标大于si+1s_{i+1}大于右端点的y坐标时,标记sis_i左端点或右端点为坐标点。
其中s1s_1的左端点和sks_k的右端点一直是坐标点。

算法按顺序一个一个放置矩形。每个矩形的位置,要么是左下角接触到线段的左端点,要么是其右下角接触到线段的右端点。每次放置矩形后,更新上界线和坐标点,用来描述新的装箱方式。
当矩形b被放置在线段sis_i上时,上界线被更新。这需要两个步骤:

1.生成与b的上边缘对应的新线段,并更新受影响的现有线段。

b的宽度是否大于sis_i会产生两种情况,下图分别展示了两种情况的示例,以及上界线如何更新。注意,(d)中的阴影区域被认为是浪费的空间,因为我们的算法不会考虑在其中放置任何矩形。
在这里插入图片描述

2.检查每条线段,如果它比相邻的两个线段都低,并且没有未放置的矩形可以放置在这个线段上(对于第一个和最后一个段,我们只将它们与它们相邻的一条线段进行比较),我们将它提升到它的下相邻段的高度并合并它们。
如图所示,阴影部分同样被认为是浪费的空间。
在这里插入图片描述

评估装箱策略

这里的装箱策略指:在当前装箱模式下,具体某个矩形的放置位置。我们利用以下规则评估每个位置:

1.spread construction。
对放置后y坐标的差值进行约束。放置矩形后,所有线段s的y坐标最大值与最小值之差不得超过限定值max_spread。

2.only fit。

3.minimum local waste。

4.maximum fitness number。

5.earlist in sequence。

禁忌搜索

拓展:2DSP

免责声明:文章转载自《二维矩形装箱问题(2D rectangular packing problem, 简称2DRP)介绍》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇[译]Godot系列教程五RocketMQ消费者实践下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

魔棒工具--RegionGrow算法简介

原地址:http://www.cnblogs.com/easymind223/archive/2012/07/04/2576964.html ps里面的魔棒工具非常好用,是图像处理中非常常用的一个工具,它现在已经是我的c++工具箱中很重要的一员了,我会在以后的时间里把我的工具箱逐渐介绍给大家。 魔棒工具的核心算法是RegionGrow区域成长法,它的概念很...

Matlab图像处理系列4———傅立叶变换和反变换的图像

注意:这一系列实验的图像处理程序,使用Matlab实现最重要的图像处理算法 1.Fourier兑换 (1)频域增强 除了在空间域内能够加工处理图像以外,我们还能够将图像变换到其它空间后进行处理。这些方法称为变换域方法,最常见的变换域是频域。 使用Fourier变换把图像从空间域变换到频域。在频域内做对应增强处理,再从频域变换到空间域得到处理后的图像。...

机器学习 —— 概率图模型(推理:消息传递算法)

  概率图模型G(V,E)由节点V和边E构成。在之前马尔科夫模型相关的博客中,我谈到马尔科夫模型的本质是当两个人交流后,其意见(两个随机变量)同意0与不同意1的概率组合。而势函数表达的是两个意见相同或者相左的程度。   我们搞的那么麻烦,最后想要得到的不就是每个意见正确与否(随机变量取不同值的概率)吗?与其采用解析的方法去算,去把所有其他的变量边际掉,那干...

Java技术栈

内容: 1、Java基础(JavaSE) 2、数据结构与算法与设计模式 3、计算机理论知识 4、数据库 5、Java web(JavaEE) 6、消息队列 7、Linux及服务器相关 8、分布式相关 9、拓展技能 参考:https://blog.csdn.net/ferrari_cal/article/details/79093826 以下整理结合个人实际...

量子计算核心突破!Shor算法实现或使密码成摆设

http://tech.sina.com.cn/d/i/2016-03-05/doc-ifxqafha0387393.shtml   互联网时代绝大多数的加密,都由RSA算法完成。过去我们认为RSA不可破解,但随着量子计算的发展,RSA的安全性正受到挑战。今天刊发在 《科学》杂志的最新论文,量子计算机有史以来第一次以可扩展的方式,用Shor算法完成对数字1...

统计学习方法 李航---第9章 EM算法及其推广

第9章 EM算法及其推广 EM算法是一种迭代算法,用于含有隐变量(hidden variable)的概率模型参数的极大似然估计,或极大后验概率估计。EM算法的每次迭代由两步组成:E步,求期望(expectation);M步,求极大( maximization ),所以这一算法称为期望极大算法(expectation maximizationalgorith...