一种矩形件优化排样综合算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
收稿日期:2002-11-20.
作者简介:王华昌(1968-),男,讲师;武汉,华中科技大学塑性成形模拟及模具技术国家重点实验室(430074).
一种矩形件优化排样综合算法
王华昌 陶献伟 李志刚
(华中科技大学塑性成形模拟及模具技术国家重点实验室)
摘要:提出了应用于矩形件优化排样中的关键算法:条料生成算法与填充算法.把二者融合在一起,提出了一种适用于矩形件优化排样的最小残料算法.该算法依据残料大小决定条料,并对空白矩形进行有效填充,可快速得到排样结果.将其与模拟退火算法相结合,能够跳出局部搜索,最终可获得近似总体最优的排样结果.关 键 词:矩形件优化排样;条料生成算法;填充算法;最小残料算法;模拟退火算法中图分类号:T G316 文献标识码:A 文章编号:1671-4512(2003)06-0009-04
矩形件优化排样是指有多种不同矩形件,每种矩形件需要若干个,尽可能多地排放,使给定的矩形板材利用率最高.矩形件优化排样问题实质是一个组合优化的二维布局问题,具有工件种类多、数量大等特点,是计算复杂性最高的一类NP 完全问题,至今还无法找到解决该问题的有效多项式时间算法.
国内外已经有不少专家学者在这个领域做了很多研究工作,并且取得了一些成果,例如背包算法[1]、组块技术[2]等,都能够得到较好的排样效果.但是,前者是近似优化算法,后者是局部搜索方法,达不到排样的总体最优.而不经任何处理的模拟退火排样算法虽然可达到近似最优解,却不适合/一刀切0的下料工艺,只适合/正交切割0.
为获得总体最优解,作者提出了最小残料算法.该算法是一种接近最优解的局部搜索算法,适用于矩形件毛坯的优化排样.将其与模拟退火算法思想相结合,能随机地接受某些劣化解,跳出局部极小点,因而有较强的全局搜索能力.同时,可满足排样速度快、板材利用率高的要求和/一刀切0高效率下料工艺,从而较好地解决了现行排样算法中存在的上述问题.
1 最小残料算法
1.1 数据结构
设板材的长度为l,宽度为w ,工件种类数为n,则矩形工件基本信息存储如下:
typedef struct tagRect
{
int w ;M 工件宽度 int l ;M 工件长度
int n ;M 工件数目}Rect,*pRect;
矩形工件输出坐标如下:typedef struct tag Point
{
int x 1;M 当前输出工件左下角点横坐标 int y 1;M 当前输出工件左下角点纵坐标 int x 2;M 当前输出工件右上角点横坐标 int y 2;M 当前输出工件右上角点纵坐标}XPoint,*pXPoint;1.2 约束条件和目标函数
排样的基本目标是使得排样所用的板材数尽可能少,以提高材料的利用率;排样的基本约束条件是矩形件之间不能有相互重叠区域,并且矩形件不能有排出板材的部分.排样规则为每一个矩形件可以被横向排放或者纵排.排样方式为从板材的最左下角开始排到板材的右上角结束一块板材的排样.设板材左下角的坐标为(0,0),(x 1i ,y 1i )和(x 2i ,y 2i )为第i 块矩形工件在板材上左下角和右上角坐标,那么他们的关系为
x 2i =x 1i +Rect [i].l ;
y 2i =y 1i +Rect [i].w ,
或者
x 2i =x 1i +Rect [i].w ;y 2i =y 1i +Rect [i].l ,
其中前者为横排时同一矩形件坐标关系,后者为
第31卷第6期 华 中 科 技 大 学 学 报(自然科学版) V ol.31 No.62003年 6月
J.Huazhong U niv.of Sci.&T ech.(Nature Science Editio n)
Jun. 2003
纵排时同一矩形件坐标关系,则排样的过程就是根据一定的寻优规则,确定每个矩形工件在板材上的左下角和右上角坐标.
设任意两个参加排样的矩形工件的左下角和右上角坐标分别是(x1s,y1s),(x2s,y2s)和(x1t, y1t),(x2t,y2t),则满足下面任何一种情况,工件不会相互重叠:a.x2s[x1t;b.x1s\x2t;
c.y1t\x2s;
d.y2t[x1s.
对于任意第i种工件,必须满足下面的约束,否则工件必然越出板材之外:a.x1i\0;
b.y1i\0;
c.x2i[nl;
d.y2i[w;
在满足以上初始约束条件的前提下,使得板材利用率尽可能地高,因此,优化排样的目标函数可表达为
max E n i=1(Rect[i].l Rect[i].w#
Rect[i].n)/([Point[last].x2-w]w),
式中,Point[last].x2为最后一个排样工件右上角横坐标;w为板材之间间隔.
1.3条料生成算法
排样问题是二维布局的问题,化二维布局为一维布局,即沿板材的宽度方向不断产生条料.生成条料的方式很多,作者所提出的基于最小残料的条料生成算法能够使板材利用率在宽度方向达到最高,算法描述如下:
a.把所有的工件按照长度从大到小排序;
b.令i=n,k=1;
c.从第i种工件沿着板材宽度方向试探排样;
d.令h=i,若当前第h种工件排样完毕,则令h=h-1,若Rect[h].n不为0,则紧邻以上工件继续试探排样;若为0,则续排下一种工件.同时,每排一个工件,须判定板材宽度是否排完;
e.若板材宽度仍可排,则转d,继续排样,直到不可排.否则,返回剩余宽度Leftw idth[k].若Leftw idth[k]为0,则中止循环,转g,否则,顺序执行;
f.令i=i-1,k=k+1,转c,继续第k种方案排样,直到i=0,中止循环;
g.确认Leftw idth[k]为最优条料生成途径;
h.输出此次沿宽度方向的排样结果.
为更加清楚地说明条料生成过程,下面给出一个典型例子.表1所示为排样数据,共有4种工件,板材宽度为1000mm,长度不定.
按照以上描述的条料生成算法,表中矩形工件的首次条料生成过程如图1~4所示.
表14种工件的参数
序号n l/mm w/mm
11283040
23680140
37460110
49230160
图1条料生成方案1图2条料生成方案2
L eftw idth[1]=100mm Leftwidth[2]=30mm
图3条料生成方案3图4条料生成方案4
L eftw idth[3]=70mm L eftw idt h[4]=40mm
由图中可知,条料生成方案2的剩余宽度最小.根据算法判断准则,该方案为首次条料最终生成方案.在条料产生的同时,会出现如图中阴影表示的空白矩形,如何对这些空白矩形进行填充,则是算法的关键.
1.4空白矩形的填充算法
每个空白矩形都可看作一块一定尺寸的板材.由于其尺寸相对较小,针对这种情况,作者开发了专门用于空白矩形排样的填充算法.对未排工件分别进行横向排列和纵向排列的试探,判断是否能够对其进行填充.如果能够填充,则选择横向填充或者纵向填充,并进而得到排样的条料.在完成上述填充过程的同时,在原空白矩形上会产生更多的更小的空白矩形,调用填充算法对其进一步填充,直到任何待排工件都不能再填充为止.算法描述如下:
a.设由条料生成算法得到空白矩形长度和宽度分别为l和w;
b.令i=n-1,若i\0,Rect[i].n>0,判断工件长度是否大于板材宽度,如果是,采用连续横排,转e;否则,顺序执行;
c.对于所有待排工件,计算最小工件长度
10华中科技大学学报(自然科学版)第31卷