B题:矩形件排样程序实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
矩形件排样程序实现(要求:只能由一个学生独立完成,不得抄袭)工业上经常需要在一块大板材上下料得到若干个小的矩形件,使得板材的利用率最高,即所剩余的边角料最少。例如在一块宽40、高15的矩形板材上,排列25块尺寸已知的小矩形,25块小矩形的尺寸如表1,板材的利用率达100%,如图1所示。
图1 一种排样方案
表1 小矩形的尺寸
序号宽高
1 1
2 6
2 4 7
3 6 7
4 10 2
5 2 5
6 6 4
7 4 2
8 4 6
9 7 9
10 4 5
11 6 4
12 4 6
13 6 3
14 4 5
15 2 4
16 8 4
17 8 6
18 8 3
19 6 3
20 2 6
21 8 2
22 3 5
23 2 5
24 3 4
25 2 4
如果上述排样方案未知,即不知道图1的排法,那么如何将这25块小矩形
按照某种次序排在一个大的板材上呢?目前这仍是一个世界难题。
通常要求在一个排样图中,任何一个矩形件在不超出板材边界的情况下,按照一个排样方案(给定的次序)采用下列一些方法来安排实际矩形件的排列,对于一个排样方案(解)},{R P D =,其中),,,(21n p p p P =,),,,(21n r r r R =,p i 为矩形件的序号,r i 为排样方式,r i =1表示将矩形件旋转90°, r i =0表示矩形件不旋转。将第i 个矩形件安排在板材上的过程中,均不能再往下、往左移动,则称其满足BL 条件(bottom-left-condition ,BL-condition )。
基于BL 条件,有一种下台阶算法,具体步骤如下:
(1) 将零件1p 排放在板材的左下角,若11=r 则将其旋转90°后再排放,求出排放后所占板材的最大高度;
(2) 将i p ),,3,2(n i =根据其排样方式置于板材右边最大高度处,向下向左移动i p ,且向下移动优先(即原本已无法再向下移动,故开始向左移动,而在向左移动的过程中若发现又能继续向下移动,则先向下移动),直至i p 无法向下向左移动为止(即接触到其他零件或板材边界),并求出此时的最大高度;
(3) 重复上述过程,直至所有零件排放完毕,最后所得最大高度即为所需板材高度。
其排样过程如图2所示,就好象下台阶一样,于是形象地称之为下台阶算法。
图2 下台阶算法的排样过程
剩余矩形排样法是目前所提出的一种有效的排样算法,该方法记录了所有可利用的空间,更能合理地分配给待排样的矩形件,提高了每个排样方案的板材利用率,更接近最优排样方案。例如对于同一个矩形件序列)4,3,2,1(进行排样,
图3(a)中下方的空洞以往的排样算法都无法利用,矩形4只能被排到上方。而利用剩余矩形排样法可以很好的解决这个问题,它可以使矩形4充分利用下方的空间,如图3(b)。
图3 剩余矩形排样法的优越性
剩余矩形排样算法用一个矩形数据集合来表示板材目前的剩余位置情况,任何未被排样的空间(包括孤立的缝隙),都在剩余矩形集合中表示,不会遗漏任何一个。而在每一个矩形件被排入前,都需根据这个剩余矩形集合中的数据来选择最为合理的位置进行排放。下面给出剩余矩形的具体形成方法(这里用矩形的左下角坐标和右上角坐标来确定这个矩形的位置):
(1) 板材的左下角和右上角坐标分别为),()0,0(H W 和,于是开始时剩余矩形数据集中只有一个矩形为)],(),0,0[(1H W R =。
(2) 当排入一个矩形件i (宽i w 高i h )后,需将剩余矩形数据集合中的每一个矩形都减掉此矩形件所占的位置。若此矩形件的左下角坐标为),(11i i y x ,且为横排(即矩形件不旋转90°),则每个剩余矩形都减掉与矩形件
)],(),,[(11111i i i i i i h y w x y x ++相交的部分。例如矩形)],(),0,0[(1H W R =减掉与矩形件i 相交的部分后,形成了四个新的剩余矩形为:
)]
,(),,[()],(),0,0[(1111i i i i i i h y w x y x H W ++- )]},(),0,[()],,(),,0[()],,(),0,0[()],,(),0,0{[(1111H W w x H W h y H x y W i i i i i i ++= 按顺时针方向记录矩形。如图4所示。若为竖排(即矩形件旋转90°),计算方法类似。
图4 剩余矩形表示法
依此类推,将矩形数据集中的所有剩余矩形都作如此操作,减去所排入矩形件i 所占位置,形成新的剩余矩形。
(3) 由于新的剩余矩形的产生,又将引起原矩形数据集的改变,因此对其进行整理:去掉面积为零的或已无法排下所剩的任何一个矩形件的剩余矩形;把具有完全包含关系的剩余矩形中面积小的矩形去除、有相交关系的矩形全部保留。得到新的剩余矩形集,为下一次排放使用。
用剩余矩形表示法可记录每个可形成最大矩形的空间,用于排样。将这种表示法与BL 排样算法结合,就形成了剩余矩形排样算法,对于给定的一个排样方案},{R P D =,其中),,,(21n p p p P =,),,,(21n r r r R =,具体排样过程如下:
(1) 开始时剩余矩形集S 中仅有一个矩形,即板材本身)],(),0,0[(1H W R =。
(2) 从排列P 中取出第一个需排的矩形件1p (宽1p w ,高1p h ),将1p 根据相应排放方式 1r 排放在板材的左下角,用上面所述的剩余矩形表示法计算新的板材剩余矩形集},{21R R S =:
若01=r (横排),则)],(),0,[(11H W w R p =,)],(),,0[(12H W h R p =,如图5; 若11=r (竖排),则)],(),0,[(11H W h R p =,)],(),,0[(12H W w R p =。