矩形件排样程序的实现王晨浩-试题b
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
矩形件排样程序的实现
王晨浩
摘要
针对样板矩形排样程序的实现问题,本人通过实施FORTRAN90编程,采用直接明了的数字排列的方式,直观清晰的展现了一个矩形样板中矩形件排样的最优方案。而程序语言本身,结构明朗,层次清晰,适合懂本语言的人斟酌损益和修缮完美;程序运行系统,清晰明朗的输入输出步骤,将程序层序化和普遍化展现淋漓;程序表述方式,人性化的中文语言提示,将程序的可接受度和观赏度大大提高。
本程序采取了通过对板面和具体矩形的数字化展现,通过对整体的数字比较描摹和判定板面的整体矩形排列方式,最终以一个具体的数字排列,实现对矩形排列的宏观显现。关键词:FORTRAN90程序,矩形排列方案,板面矩形设计
一、问题重述
(一)问题简介
工业上经常需要在一块大板材上下料得到若干个小的矩形件,使得板材的利用率最高,即所剩余的边角料最少。例如在一块宽15、高无限制的矩形板材上,排列25块尺寸已知的小矩形,25块小矩形的尺寸如表1,板材的利用率达100%,如图1所示。
图1 一种排样方案
表1 小矩形的尺寸
序号
宽 高 1
12 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 )。
(二) 剩余矩形排样法简介
剩余矩形排样法是目前所提出的一种有效的排样算法,该方法记录了所有可利用的空间,更能合理地分配给待排样的矩形件,提高了每个排样方案的板材利用率,更接近最优排样方案。例如对于同一个矩形件序列)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;