二维矩形排样问题的启发式算法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第26卷第1期2005年2月
青岛科技大学学报
Jour nal ofQ i n gdao University o f Science and Techno logy
V o.l26No.1
Feb.2005
文章编号:1672-6987(2005)01-0065-05
二维矩形排样问题的启发式算法
邵巍,隋树林,杜军威
(青岛科技大学自动化与电子工程学院,山东青岛266042)
摘要:矩形件优化排样问题具有多个算法,但是这些算法均有一些局限性,如排列不规则,计算量巨大等等。

本文给出了单一尺寸的矩形排样问题的几种启发式算法,它克服了现有众多排样算法执行效率低的缺陷,使板料排样的执行效率和优化率均得以显著提高,并用D elphi编程实现,可直接应用于实际问题中。

关键词:排样问题;启发式算法;De l p h i
中图分类号:TP391文献标识码:A
So m e K i nd of A lgorith m s for the Opti m al Layout of Rectangul ar Part
S HAO W e,i SU I Shu-li n,DU Jun-we i
(College ofAu t o m ati on and E l ectron i c E ngi neeri ng,Q i ngdao U nivers it y of Sci en ce and T echnol ogy,Q i ngdao266042,Ch i na)
A bstract:There are l o t o f algor ith m s on the opti m al layout o f rectancular par,t butm ost of the
a l g orit h m s have som e li m its(such as irregu lar arrange m en,t excessive ca lculating,etc.).
K inds o f heuristic algorithm is g iven i n th is paper.It overco m es sone proble m s for m ost o f a l g o-rithm s at a lo w executi n g rate can high ly enhance the executive rate and i n crease the radio of the opti m izati o n.It carried it out w ith De l p h i language,these a l g orith m s can be used w e ll in practice.
K ey words:layou;t heuristic algorithm;Delphi
切割(cuttingprob le m)和装填问题(pack i n g-proble m)统称为布局问题,属于复杂的组合最优化范畴,已经证明即使是最简单的布局问题,也是NP完全问题,因此,绝大部分有效的解决布局问题的算法都是启发式的方法[1~6]。

由于许多企业应用板材数量巨大,所以提高很少的利用率便可节省很多原材料,大大降低成本。

本工作针对现有众多排样算法执行效率低的缺陷,给出了单一尺寸的矩形排样问题的几种启发式算法。

1数学模型的建立及算法
设在L*W(分别记各边为上L,下L,左W,右W)的矩形内放入a*b的小矩形,不妨设a\b,要使得大矩形中放入尽量多的小矩形。

1.1方法1
先设在下L边上排列n个a,m个b,自下到上依次排列各矩形,并记在垂直方向上堆放t个b,k个a,尽量使得W方向排列尽量多的小矩形,直到不能再放置a或b边,如图1(a)所示。

此种排法的约束条件可描述为:
L-b<n*a+m*b[L;
W-b<t*b[W;
W-a<k*a[W.
其中t=[W/b],k=[W/a]
(注:[*]表示取整,以下同)
此时以摆放的小矩形的个数为:nu m ber1=
收稿日期:2004-05-27
作者简介:邵巍(1980~),男,硕士研究生;指导教师:隋树林(1958~),男,教授.
青 岛 科 技 大 学 学 报第26卷
n *t+m *k
考虑各部分的剩余平面,可知在W 2*L 2的矩形区域中有可能再摆放小矩形(其中:W 2=W -k *a;L 2=L -n *a,如图1(b)所示)。

容易算出此平面中摆放的小矩形个数为number2=[L 2/a ]*[W 2/b ]。

图1 方法1排样图Fi g .1 Layou t ofm et hod 1
至此,平面上总共可以摆放小矩形的个数为nu m ber =number1+num ber2=n *[W /b ]+[(L -n *a )/b ]*[W /a ],n 确定,则可确定矩形排样个数。

(0<n <[L /a])
通过编程可得:m ax{n *[W /b ]+[(L -n *a)/b ]*[W /a ]},并记结果为m ax1。

同样的方法可得在W 边上最优排列的情况,记结果为m ax2。

比较m ax1和m ax2,并取最大值,可得此算法的平面矩形排样的摆放法和最大个数m ax 。

实现此二维的算法如下:step1:输入各项参数:L,W,a,b step2:
for n :=0to tr unc(L /a )do
比较计算在L 边上最优的排列方法并记录;
step3:
for n :=0to tr unc(W /a )do
比较计算在W 边上最优的排列方法并记录;
step4:比较L 边的排列和W 边的排列结果得出最优算法。

step5:输出优化结果和排列方法。

1.2 方法2
方法1的算法简单,排样过程容易实现,但是方法1只是在L 或W 边上对a,b 边进行组合,并且剩余的平面不够集中,可以用方法2在L 和W 边上同时对a,b 进行组合。

方法2的排列方法见图2。

图2 方法2排样图1F i g .2 Layout 1ofm ethod 2
假设在下L 边上放置了i 个a 边,则在剩余L -i *a 长度的下L 边上可以放置b 边的个数为j =[(L -i *a )/b ];再在右边W 边上来讨论,设右
W 边上放置了n 个a 边,则在右W 边上可放置m =[(W -n *a )/b ]个b 边,同理,可用上面L 边的a 的个数(设个数为k )确定上L 边上b 的个数(设为t)和左W 边上a 的个数(p ),b 的个数(q ),上述约束条件可以表示为:
(1)L -b <i *a +j *b <=L;
(2)W -b <n *a +m *b <=W;(3)L -b <k *a +t *b <=L;
(4)W -b <p *a +q *b <=W;
(5)若(i +k )*a >L,则(q +m )*b <W;(6)若(t +j )*b >L,则(p +n )*a <W;(7)若(p +n)*a >W,则(t +j)*b <L;(8)若(q +m )*b >W,则(i +k )*a <L;(9)若n >0,则n >=[q *b /a ];(10)若m >0,则m >=[j *b /a]。

上面的排法有可能出现下面的情况,既形成中间没有排放矩形的情况,见图3。

对于大矩形中央的阴影部分可以继续利用该方法进行排列,依次类推,形成循环嵌套。

最终可能得到如图4所示的排列方式。

66
第1期 邵 巍等:
二维矩形排样问题的启发式算法
图3 方法2排样图2F i g .3 Layout 2ofm ethod
2
图4 方法2排样图3F i g .4 Layout 3ofm ethod 2
算法实现如下:
step1:输入各项参数:L,W,a,b
step2:判断平面中能否放入小矩形,若不能,则返回0。

step3:
for q:=[W /b /2]do wnto 0do beg in
计算左W 边剩余长度可放a 边的个数;
for i :=[L /a ]do w nto 0do beg in
计算下L 边的剩余长度可放b 边的个数;j for n:=[q *b /a ]to [W /a ]do
beg in
计算右W 边剩余长度可放b 边的个数m;
for k:=[j *b /a ]to [L /a ]do beg in
计算出上L 边剩余长度可放b 边的个数t ;计算出现在L *W 平面上已经放置小矩形的个数sum 1(sum 1=q *i +j *n +m *k +t *p );
计算中间矩形的长宽;
go to step1用新的长宽进行新的调用,得到在此大矩形放置小矩形的个数sum 2并依次递归;
计算总个数:to tal=sum 1+su m 2+,;比较并记录最大个数和排列方法及剩余阴影平面的数据;end ;
end ;end ;
end ;step4:输出优化结果。

对于算法2中的问题进行讨论与说明:(1)对于q >[W /2b ]的情况,考虑到q 与m 的对称性,实际上可以归结为q [[W /2b ]的情况。

(2)在每层循环中,可以先取遍a,b 的所有组合,并计算出L 或W 边最小的剩余空隙(l m i n ,wm i n )和该矩形可排列最多小矩形的个数[(L *W -l m i n *W -wm i n *L +l m in*wm i n )/(a *b )]。

当某种排法达到最大排列个数时,则记录当前排列方法,并跳出该层循环。

(3)排列过程中还可能出现下面的情况:在右W 边上的n 个a 边要满足条件n \[q *b /a ],才能进行循环嵌套,但是这样同时又限制了a ,b 的组合情况;若L -i *a \b ,则下L 还可以放入b ,此种情况下可对该图作出相应的变换见图5。

这相当于在下L 边上先进行一次全排a 边的循环嵌套。

同理分析下L 边全排放b 边的情况和右W 边全排放a 边的情况。

(4)循环时要考虑实际的排样操作,要对排法整齐,分层较少的排法先进行运算。

1.3 方法3
方法2穷举的情况很多,但是对于排样矩形相对大矩形较小时,这种算法的计算量有时候就比较大了[7]。

利用方法3可对L 、W 边同时对a 、b 进行组合,但由于没有利用递归,计算量相对方法2小得多。

方法3的思路和算法主要是对图3的排法的改进,其思路主要如图3那样,组合小矩形成4块。

大体分布如图6。

其中,P1、P2中是竖排的矩形,Q1、Q2中是横排的矩形;图6(b)的阴影部分表示重叠。

各部分的约束如下:
67
青 岛 科 技 大 学 学 报第26

图5 方法2排样转化Fig .5 L ayou t convertion ofm et hod
2
图6 方法3排样图(a)样图1 (b )样图2
Fig .6 Layou t ofm ethod 3(a)layou t 1(b)layout
Q1(q,i):0[i [[L /a],0[q [[W /b];Q2(m,k ):0[k [[L /a]-i ,0[m [[W /b ];这样可以保证Q1与Q2不重叠。

当Q1与Q2一旦确定,P1与P2也就确定:P1(j ,n):j =[(L -i *a)/b ],n=[(W -m *b )/a];
P2(t ,p):t =[(L -k *a )/b ],p =[(W -q *a )/b ];
如果P1与P2没有重叠,此时小矩形的个数
为:
tota l=q *i +j *n +m *k +t *p ;
如果P1与P2重叠,则要除去阴影部分的小
矩形个数:
记l 1=(t +j)*b -L;w 1=(p +n )*a -W;当l 1>0且w 1>0时出现重叠,其重叠的小矩形个数为c =c 1*c 2,其中,
c 1=[w 1/a ](当w 1能被a 整除时) 或c 1=[w 1/a]+1(当w 1不能被a 整除时)c 2=[l 1/b ](当l 1能被b 整除时)
或c 2=[l 1/b]+1(当l 1不能被b 整除时)
这时排样的小矩形的个数为:
tota:l q *i +j *n +m *k +t *p -c 1*c 2;循环q,i ,m,k 比较可得最大值m ax 1,同理分析Q1,Q2可能重叠的情况得出最大值m ax 2,取两者中较大的即为此方法可以排样的最大值(具体算法略)。

方法3比方法2速度快许多,但是它是将约束条件扩大化了,因此没有取到所有排列的情况,
因此有些情况不如方法2的结果优化。

2 应用举例
表1是几种情况的算法结果比较。

图7是对各数据为L =400,W =300,a =63,b =37情况时,用该程序(用D elphi 实现)得出的3种方法的排列图。

通过上述实例可以看出,应用上述几种算法的效果是比较令人满意的,可以明显提高利用率,其中方法2是利用率最高的方法,但在实际应用中要考虑到排样规则、算法时间等因素,选择最佳的解决方案。

68
第1期 邵 巍等:二维矩形排样问题的启发式算法
表1 几种算法运行结果的比较Tab le 1 C a mpare of these m et hod s resu lt
大矩形长宽:L,W 小矩形长宽:a,b 普通堆积个数利用率方法1
个数利用率方法2
个数利用率方法3
个数利用率(600,500),(73,51)7289.367694.327896.807694.32(600,500),(63,37)11790.1012597.1312899.4612798.68(500,400),(73.51)7278.184991.215195.005093.08(500,400),(63,35)7785.008795.928998.128795.92(400,300),(63,37)4891.305097.135199.075097.13(400,300),(51,29)7086.287794.908098.607896.14(300,200),(51,31)3079.053489.593694.863592.23(300,200),(31,17)
99
86.96
110
96.62
111
97.50
110
96.
62
图7 几种方法排样示例 (a)方法1 (b)方法2 (c)方法3
Fi g .7 De m on strati on of thes e m et hods (a)m ethod 1 (b )m et hod 2 (c)m et hod 3
3 结束语
本研究的矩形排样算法具有良好的灵活性和通用性,运算量相对较小,较好的解决了目前排样算法中的一些问题,能广泛地用于各种排样和装载问题。

参 考 文 献
[1]Agraw alP K .M i n i m izi ng tri m l oss i n cu tting rectangu lar b l anks
of a s i ngl e size fro m a rectangular sheet using ort hogonal gu illo -ti n e cuts[J].European Jou rnal ofO perati ona lRes earch ,1993,
64(3):410)422.
[2]杨克昌.计算机程序设计典型例题精解[M ].北京:国防科
技大学,1999.
[3]曹炬,周济.矩形件排样优化的一种近似算法[J].计算机辅
助设计与图形学学报,1995,7(3):190)195.
[4]于洋,查建中,唐晓君.面向布局问题求解的混合全局优化
算法研究[J].铁道学报,2001,(6):44)49.
[5]王华昌,陶献伟,李志刚.一种矩形件优化排样综合算法
[J].华中科技大学学报,2003,31(6):9)12.
[6]刘军,罗意平,刘得福,等.一种改进的矩形件优化排样近似
算法[J].小型微型计算统,2003,24(10):1812)1814.[7]李沛武.程序中嵌套结构复杂度的计算方法[J].南昌水专
学报,1997,16(1):58)60.
69。

相关文档
最新文档