下料算法

来源:互联网 发布:淘宝如何做直通车 编辑:程序博客网 时间:2024/06/07 23:23
基于动态分割与合上的排样算法
文贵华 丁月华
如何合理地在原矩形板材上切割给定规格的矩形零件,以提高原板材的利用率
是一个有重大经济意义的课题。许多工业问题如钢板、玻璃、卷纸等的切割均属此
类矩形件排料问题,属典型的组合优化问题,具有很高的计算复杂性(NP完全问
题)。因此对规模较大的排料,不但手工排样不可能做到真正的优化,即使采用计
算机也必须开发高效的算法才能实现利用率相对高的优化切割。目前的切割算法有
多类,如早期的线性规划算法和动态规划算法,它们存在的主要问题是计算时间和
空间呈指数增长,并且假定供排料的矩形件总数是无限的,那么实际上算法是不可
用的。启发式算法[1,2]是对动态规划算法的改进,其效率完全依赖于启发函数的
定义,难以调和计算时间与材料利用率之间的矛盾。具有类比学习的排料算法虽然
引入了重要的类比学习思想,可逐渐减少系统的排料时间[3] 。但系统没有自动从
排料经验中学习的能力,系统学习是通过人机交互式完成的,模式排料的利用率极
大地依赖于专家的能力,但是对规模较大的排料,专家排样本身都不可能做到真正
的优化。特别是这些算法都只实行二维切割而没有进行必要的余料合并,因此会产
生很多分散的不能排样的余料碎片,不但大大降低了材料的利用率,而且极大地影
响了切割速度。因此本文提出了一种基于动态分割与合一的优化排样算法,优化排
样的目的是根据给定待排零件对板材进行最优切割使得板材的利用率尽可能的高。
1 排样模型
假定每次排料总是将零件排在板材(L,W)的左上角,并且将板材和零件都置于
一个坐标平面,则此矩形零件(li, wi)在板材上的位置可由其左上角坐标(xi, yi)
和排料方式m完全确定。排样过程就是根据寻优规则,确定每个零件在板材的左上
角坐标(xi, yi)、排料方式mi:竖排或横排以及切割方式ci:竖切或横切。因此排料
模式S有4种不同的组合,再加上不排所选择的零件,共5类模式,如图1。不同模式
决定了板材余料的坐标和后继的排料效率。但无论哪种模式,切割后的余料只有两
种。因此排样过程就是与或树的搜索过程。此与或树或结点是确定排样模式,如图
1的N结点。与结点是某排样模式的余料分割,如图1的M结点。而排样结果则是一棵
典型的二叉树,如N-M-(K,L)。
页码,1/4 计算机工程991210
2005-2-21 http://power.luneng.com/power/library/jsjgc/jsjgc99/jsjgc9912/99121...
图1排样与或树
与或树搜索过程具有很高的复杂度,属NP完全问题,因此零件及排样模式的选
择必须采用启发算法。
算法1 零件选择算法
传统算法均采用零件的面积为排样的启发信息,即越大越优先,这比较符合直
觉,但实际应用中还存在着一些重要件要优先切割,而且面积越大不一定材料利用
率就越高。实际应用零件的选取应遵循这样的原则:(1)大件、重要件优先;(2)可
望取得较高的材料利用率。因此定义如下的零件选择启发函数:
f(i)=Gi+(1-Gi)i+Gi
ki
+SQ(i)/S+K2
f(i)越大越优先。其中 Gi是零件Pi单独在原板材上排样时的利用率。SQ(i)是
Pi面积,S是原板材面积。K1是可选参数,初定为2,以后可根据实际情况修正。若
Pi为大件、重要件时,K2=1,否则K2=0。
f(i)的第二项反映Pi排样后余料利用率的期望值e,当K1选择恰当时,它服从
于这样的统计规律:余料越大,e越大。因此f(i)的前两项综合反映了Pi排样时材
料利用率的期望值。后两项则确保大件、重要件优先下料。
因此零件选择算法主要计算每个零件Pi的f(i), 选取满足约束条件并具有最大
值的零件Pi排样。
算法2 模式选择算法
为了确定给定零件Pi的最佳排样方式和余料的切割方式,可通过计算每种模式
的启发信息来实现。共有5类:f1零件Pi横排横切、f2零件Pi横排竖切、f3零件Pi竖
排横切、f4零件Pi竖排竖切、f5跳过零件Pi。 于是模式选择的启发函数为:
F(BX,MS)=max{f1,f2,f3,f4,f5}
f1=f(i)+F(A,MS-1)+F(B+C,MS-1)
f2=f(i)+F(A,B,MS-1)+F(B+C,MS-1)
f3=f(i)+F(E,MS-1)+F(F+G,MS-1)
f4=f(i)+F(E+F,MS-1)+F(G,MS-1)
f5=F(BX,MS-1)
当MS=0或(L,W)不能排零件Pi或无零件可排时,F取值为0。
页码,2/4 计算机工程991210
2005-2-21 http://power.luneng.com/power/library/jsjgc/jsjgc99/jsjgc9912/99121...
2 排样布局算法
如果只对板材实行二维切割而不进行必要的余料合并,则会产生很多分散的不
能排样的余料碎片,这不但大大降低了材料的利用率,而且极大地影响了切割速
度。因此在分割之后,尽量将相邻的余料合并成较大的余料参与下一轮排样,优点
如下:(1)增加排大件的可能性;(2)可多排小件;(3)增加排样优化的机会;(4)可
充分利用废料;(5)零件之间减少空隙余料碎片,从而提高切割速度。
(1)布局数据结构
排样布局是一棵二叉树,其结点信息如NodeInfo定义,存储采用线性表实现。
typedef struct NodeInfo{
long code: //布局编号
integer gx: //板材坐标
integer gy: long gl: //板材尺寸
long gw: long sl: //零件尺寸
long sw: byte mi: //排样与切割方式
byte ci: long aptr: //指向余料A
long bptr: //指向余料B
}
(2)合一算法
合一算法主要将相邻的余料块合并成更大的块,但是简单的合并并不能保证合
并后的余料是矩形。因此合一是有条件的,是启发式的。下面是合一算法所采用的
几条启发规则:
.若余料A具有很高的材料利用率,则不必合一,因为更大的块只是增加了产生
更优布局的机会,但并不能保证会产生更优的布局。
.若余料A不能排样任何零件,则必须合一,且允许部分参与合一。
.若余料A与余料B合并后的余料不是矩形,并且修整成矩形的损耗小于单独排样
的损耗,则进行合一。
(3) 排样算法(算法3)
Open为堆栈,用于存放尚未切割的当前板材及其余料。
1) 选取板材(L,W)放入Open表中
2) 当Open表不为空时且零件未排完时,循环下列步骤
①根据合一算法合一Open表中顶端的相邻板材块
②从Open表中取出板材(L',W' )
③根据零件选择算法选取零件Pi
④根据零件单步排样算法布局零件Pi, 若能布局,则将相应的余料A和B入Open
表,否则转2
⑤保留此步排样布局(布局树)
3) 若待排零件队列和板材队列不空,转1
4) 全部排完,计算板材平均利用率,并输出排样图。
3 实现与结论
动态分割与合一优化排样算法已采用VB实现,算例表明算法是成功的。如图2,
左边是没有合一的,不但材料利用率不高,而且增加了切割次数、降低了切割效
率。
页码,3/4 计算机工程991210
2005-2-21 http://power.luneng.com/power/library/jsjgc/jsjgc99/jsjgc9912/99121...
图2 排样实例
作者单位:华南理工大学计算机所,广州510641
参考文献
1 Yanasee H H. Two-dimensional Cutting Stock with Multiple
Sizes.J.Opt.,1990,4
2(8):673~6832 Chauny F.A Two-phrase Heuristic for the Two-dimensional
Cutting Stock Problem.J.Opt.Res.Soc.,1991,42(1):39~47
3 刘弘,曾广周,林宗楷.具有类比学习机制的优化排料系统.计算机辅 助设计与图
形学报,1997,9(5):436~441
页码,4/4 计算机工程991210
2005-2-21
原创粉丝点击